1.输入法与编码:
a.对汉字的编码分为两个部分:
i.对拼音的编码
ii.对消除歧义的编码
b.拼音输入法的优势:
i.不需要专门的学习
ii.输入自然,不会中断思维,即找每个键的时间短
iii.编码长,有信息冗余,容错性好
2.输入一个汉字需要敲多少个键——香农第一定理
a.香农第一定理:
对于一个信息,任何编码的长度都不小于它的信息熵
b.汉字编码的平均长度:
一共6700个汉字,常用的汉字用短编码时,其编码的平均长度为P1*L1+P2*L2+...+P6700*L6700(其中Li为第i个词的编码长度,Pi为其出现的概率)
c.基于LCD语料库时计算汉字编码的信息熵在10比特以内
而使用26个字母进行编码时,每个字母可以代表log26约4.7比特的信息,那么输入一个汉字平均需要10/4.7约2.1次键盘
进一步的,如果以词为单位统计信息熵,在不考虑上下文相关性,汉字的平均信息熵将会下降到8比特
如果以词为统计单位,且考虑上下文的相关性,以此建立统计语言模型,那么每个汉字的信息熵会下降到6比特左右
3.拼音转汉字的算法:
a.原理:
和导航中寻找最短路径的算法相同,都是动态规划
b.通信模型:
输入法则是将拼音串变到汉字串的转换器,每一个拼音可以对应多个汉字,把拼音串对应的汉字从左到右连接起来,就是一张有向图,称为网格图或者篱笆图,如图:
![](https://images2015.cnblogs.com/blog/495370/201701/495370-20170116152757302-480908178.png)
c.算法原理:
Y1,...,Yn为输入的拼音串,Wi1,Wi2,Win是第i个音Yi的候选汉字(用Wi代表第i个拼音的候选汉字),如上图所示,将候选字连接起来可以组成很多很多的句子,每个句子都有一条路径一一对应,拼音输入法就是要根据上下文在给定的拼音条件下找到一个最优的句子,即
,对应到上图中就是寻找从起点到终点的一条最短距离
利用隐马尔科夫模型简化之得到
![](https://images2015.cnblogs.com/blog/495370/201701/495370-20170116152808411-1560483683.png)
定义距离:D(Wi-1,Wi)=-logP(Wi|Wi-1)*P(Yi|Wi),以此作为两个节点间的距离计算公式,利用有限状态机和动态规划进行求解
4.个性化的语言模型
a.研究表明:不同的人应该有自己的语言模型,但是又要处理好和通用模型间的关系
b.训练一个个性化的语言模型:
i.训练一个词汇量在几万的二元模型,需要几千万的语料,没有足够多的语料库,训练出来的高阶模型也没有用
ii.更好的思路找到大量符合用户的语料,具体的如下:
1).将训练语言模型的文本或者语料按照主题分成很多不同的类别,C1,...,C1000
2).然后求每个分类的特征向量(TF-IDF)X1,...,X1000
3).统计某人输入的文本,得到他输入的词的特征向量Y
4).计算Y和Xi的余弦
5).选择前K个和Y距离最近的类对应的文本,作为用户的语言模型的训练数据
6).用筛选的训练数据训练语言模型M1
iii.模型M1对常用词效果更好,但是通用模型M0对相对偏僻的词效果好
1).可以用最大熵模型对M0、M1进行综合,但是成本较高
2).线性插值的简化模型
假设M0、M1都是二元模型,计算(Wi-1,Wi)的概率为P1(Wi-1,Wi)和P0(Wi-1,Wi),对新的模型M',其条件概率(Wi-1,Wi)'=λ(Wi-1)*P0(Wi|Wi-1)+(1-λ(Wi-1))*P1(Wi|Wi-1)
而信息熵是一个凸函数,所有P'的熵比P0、P1线性组合的不确定性小,是更好的模型