【实验目的】

  1. 分析现有拼音输入法的优缺点,采用n元语法的思想,实现一个拼音汉字转换程序。

  2. 提出自己的一些新思想对原有基于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)即为:

file

当n=2, 一个二元模型(bigram model)即为:

file

当n=3, 一个三元模型(trigram model)即为:

file

在给定的训练语料中,利用贝叶斯定理,将上述的条件概率值统计计算出来,即可得到最符合语料库预期的句子。

现有拼音输入法的优缺点

从2006年,搜狗拼音输入法的推出,将拼音输入法带入了新时代。

现有拼音输入法的优点:

(2008年)永久免费,采用了搜索引擎技术,输入速度有了质的飞跃,在词库的广度、词语的准确度发生了实质性的飞跃。通过分析百亿级网页快照的互联网语料,能够保证最大限度的组词准确性。

(2019)更强的自适应算法,智能组词和造句,智能纠错,更为丰富的个性化语料库,提供云端备份个人使用习惯的功能。

现有拼音输入法的缺点:

过度依赖统计方法,需要大量语料去训练模型,过度依赖云端服务,部分厂商存在非法收集用户数据的行为。考虑到输入法的隐私性,个人隐私极易泄露。

【实验操作】

1. 实现一个拼音汉字转换程序

基于Python3编程实现一个2元语法拼音汉字转换程序,运行结果如下:

(输出6个候选句,并按概率排序)

输入拼音:’wo’, ‘qu’, ‘shang’, ‘xve’, ‘xiao’, ‘tian’, ‘tian’, ‘bu’, ‘chi’, ‘dao’
HMM输出:

file

输入拼音:’wo’, ‘zai’, ‘zhong’, ‘guo’, ‘ke’, ‘xve’, ‘ji’, ‘shu’, ‘da’, ‘xve’,
‘du’, ‘shu’

HMM输出:

file

2. 实现本地的模型训练(隐私保护)

使用教育部公布的“全国高等学校名单”再次进行训练HMM,这里给出一部分信息:

file

输入拼音:’xi’, ‘an’, ‘hai’, ‘tang’, ‘zhi’, ‘ye’, ‘ji’, ‘shu’, ‘xve’, ‘xiao’

HMM再次训练前输出:

file

HMM再次训练后输出:

file

【结果分析】

实验结果分析:

  1. 使用2元语法的HMM基本可以满足日常使用的要求;

  2. 从使用2训练前后的效果对比可知,HMM训练过后可以很好的识别语料库出现的句子;

  3. 训练用的语料库会很大的影响模型的表现,所以应选择合适的语料库进行训练;

思考与小结:

  1. 2元与3元语法是当前拼音输入法最流行的方案;

  2. n>3时,对下一个词出现的约束性信息更多,更大的辨别力,但是更稀疏,并且n-gram的总数也更多,为­$$V^{n}$$个(V为词汇表的大小);

  3. 对于n更大的情况,可以考虑结合矩阵分析的知识,进行稀疏矩阵的压缩。

【参考文献】

《自然语言处理中N-Gram模型介绍》https://zhuanlan.zhihu.com/p/32829048

最后修改日期: 2019年6月17日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。