------------------------------------------------------------------
大家好,我是Bright,微软拼音的软件开发工程师。我之前介绍了N元语言模型的训练方法,本文继续介绍N元语言模型的解码算法。
------------------------------------------------------------------
N元语言模型的解码(Decoding)算法是微软拼音输入法的核心算法,也是当年哈工大王晓龙教授提出的语句级输入法的精髓。那么为什么需要解码算法呢?先举个拼音输入的例子:
对于拼音序列:pin yin shu ru fa hen hao yong
它有很多种转换结果,如pin可以转换成“拼”、“品”、“频”、“聘”等,yin可以转换成“音”、“因”、“引”、“印”等,shu可以转换成“输”、“树”、“属”、“数”等。
[背景知识]:简体中文大约有400个合法的拼音,GBK汉字大约有18000个汉字,那么平均每个拼音对应45个汉字。
由于每个拼音都有很多个转换结果,那么对于上面的拼音序列(8个拼音)约有45^8种转换结果,我们希望给出一个对用户来说最好的转换结果。
说到“最好”,可能有些歧义,因为对用户A好的转换结果可能对用户B就不好。这里说的最好是说最符合语言规律、最符号语言现象的结果。在N元语言模型的理论框架下,“最好”的结果就是具有最大概率的转换结果