【实验目的】
-
分析现有拼音输入法的优缺点,采用n元语法的思想,实现一个拼音汉字转换程序。
-
提出自己的一些新思想对原有基于n元语法的方法进行改进。
【实验原理】
n元语法
n元语法(n-gram)指文本中连续出现的n个语词。n元语法模型是基于(n-1)阶马尔可夫链的一种概率语言模型,通过n个语词出现的概率来推断语句的结构。这一模型被广泛应用于概率论、通信理论、计算语言学(如基于统计的自然语言处理)、计算生物学(如序列分析)、数据压缩等领域。
NLU中的n元语法
N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。
每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表,也就是这个文本的向量特征空间,列表中的每一种gram就是一个特征向量维度。
该模型基于这样一种假设,第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的Bi-Gram和三元的Tri-Gram。
n-gram模型定义
利用马尔科夫链的假设,即当前这个词仅仅跟前面几个有限的词相关,可以写出n元模型的概率:
p\left(w_{1},w_{2},\ldots,w_{m}\right)=p(w_{i}|w_{i-n+1},\ldots,w_{i-1})
当n=1, 一个一元模型(unigram model)即为:
当n=2, 一个二元模型(bigram model)即为:
当n=3, 一个三元模型(trigram model)即为:
在给定的训练语料中,利用贝叶斯定理,将上述的条件概率值统计计算出来,即可得到最符合语料库预期的句子。
现有拼音输入法的优缺点
从2006年,搜狗拼音输入法的推出,将拼音输入法带入了新时代。
现有拼音输入法的优点:
(2008年)永久免费,采用了搜索引擎技术,输入速度有了质的飞跃,在词库的广度、词语的准确度发生了实质性的飞跃。通过分析百亿级网页快照的互联网语料,能够保证最大限度的组词准确性。
(2019)更强的自适应算法,智能组词和造句,智能纠错,更为丰富的个性化语料库,提供云端备份个人使用习惯的功能。
现有拼音输入法的缺点:
过度依赖统计方法,需要大量语料去训练模型,过度依赖云端服务,部分厂商存在非法收集用户数据的行为。考虑到输入法的隐私性,个人隐私极易泄露。
【实验操作】
1. 实现一个拼音汉字转换程序
基于Python3编程实现一个2元语法拼音汉字转换程序,运行结果如下:
(输出6个候选句,并按概率排序)
输入拼音:’wo’, ‘qu’, ‘shang’, ‘xve’, ‘xiao’, ‘tian’, ‘tian’, ‘bu’, ‘chi’, ‘dao’
HMM输出:
输入拼音:’wo’, ‘zai’, ‘zhong’, ‘guo’, ‘ke’, ‘xve’, ‘ji’, ‘shu’, ‘da’, ‘xve’,
‘du’, ‘shu’
HMM输出:
2. 实现本地的模型训练(隐私保护)
使用教育部公布的“全国高等学校名单”再次进行训练HMM,这里给出一部分信息:
输入拼音:’xi’, ‘an’, ‘hai’, ‘tang’, ‘zhi’, ‘ye’, ‘ji’, ‘shu’, ‘xve’, ‘xiao’
HMM再次训练前输出:
HMM再次训练后输出:
【结果分析】
实验结果分析:
-
使用2元语法的HMM基本可以满足日常使用的要求;
-
从使用2训练前后的效果对比可知,HMM训练过后可以很好的识别语料库出现的句子;
-
训练用的语料库会很大的影响模型的表现,所以应选择合适的语料库进行训练;
思考与小结:
-
2元与3元语法是当前拼音输入法最流行的方案;
-
n>3时,对下一个词出现的约束性信息更多,更大的辨别力,但是更稀疏,并且n-gram的总数也更多,为$$V^{n}$$个(V为词汇表的大小);
-
对于n更大的情况,可以考虑结合矩阵分析的知识,进行稀疏矩阵的压缩。
【参考文献】
《自然语言处理中N-Gram模型介绍》https://zhuanlan.zhihu.com/p/32829048
留言