【论文阅读】Neural Pinyin-to-Chinese Character Converter
使用seq2seq的方式,将拼音序列转换为汉字序列,模型结构:
1.准备训练数据
- zho_news_2007-2009_1M-sentences.txt,100w,分词,实际上没有使用分词信息
- 1 博客园
2.构建Pinyin-Chinese平行语料,zh.tsv,p [char] + ["_"] * (len(p) - 1)
- 1 bokeyuan 博_客_园___
3.生成词典,保存为pkl文件
- pnyn2idx, idx2pnyn, hanzi2idx, idx2hanzi
4.训练模型
- 读取词典、训练集(x=[pinyin ids], y=[hanzi ids])
- x->model->与y计算交叉熵loss
5.预测
- 整体看预测结果还是比较靠谱的,部分字,会预测同音错误的字,训练语料中 武 比 吴多,武警也比较多,无法解释 xinjiangwujing 新疆吴警 预测错误的原因
- 一些拼音错误的case,如果原拼音不存在,会生成一个比较相似拼音的候选wuo->duo,正确的拼音也可能生成相似候选jiao->tiao
- 专有名词或成语等效果不是很好
优点:end2end模型结构,不需要各种词表、人工特征等,只要有中文语料就可以得到平行语料,缺点:深度学习模型的不可解释性,有些没有很好的学习到上下文。
思考:如果扩充、调整训练语料,不知是否得到一个可以工业化应用的模型效果。