文章信息
- 杜丽萍, 李晓戈, 于根, 刘春丽, 刘睿
- DU Liping, LI Xiaoge, YU Gen, LIU Chunli, LIU Rui
- 基于互信息改进算法的新词发现对中文分词系统改进
- New Word Detection Based on an Improved PMI Algorithm for Enhancing Segmentation System
- 北京大学学报(自然科学版), 2016, 52(1): 35-40
- Acta Scientiarum Naturalium Universitatis Pekinensis, 2016, 52(1): 35-40
-
文章历史
- 收稿日期: 2015-06-07
- 修回日期: 2015-09-14
- 网络出版日期: 2015-09-29
随着信息时代的发展与科学技术的进步, 大量网络新词不断涌现, 使得分词结果中存在大量的“散串”, 严重影响分词系统处理网络文本的效果, 新词识别已经成为提高分词效果的瓶颈[1]。
对于网络上出现的新词汇, 例如近日在网上热传的“APEC蓝”、“Duang”、“一带一路”、“单肾贵族”和“花样作死”等词语, 一般的识别方法是基于大规模语料库, 由机器根据某个统计量自动抽取出候选新词, 再由人工筛选出正确的新词[2]。Pecina等[3]采用55种不同的统计量进行2元词汇识别实验, 结果表明, PMI算法是最好的衡量词汇相关度的算法之一。通常情况下, PMI方法能够很好地反映字串之间的结合强度, 但缺点是过高地估计低频且总是相邻出现的字串间的结合强度[3-4]。例如, “啰”和“嗦”、“蝙”和“蝠”等在语料库中低频且总是相邻出现, 这些字串的PMI值非常高, 包含这些低频字串的垃圾串的PMI值也非常高, 例如“很啰”和“嗦”、“的蝙”和“蝠”等。针对此问题, 研究者将PMI方法与其他方法相结合进行新词发现研究。文献[5-7]均采用PMI方法与log-likelyhood方法相结合进行新词识别。梁颖红等[8]利用PMI方法衡量字串间的结合强度, 结合NC-value方法融入词语上下文信息来提高3个字以上长新词的抽取精度。何婷婷等[9]采用互信息方法F-MI抽取结构简单的质词。孙继鹏等[10]提出一种语言文法信息与互信息相结合的新词识别方法。Pazienza等[11]提出使用PMI2和PMI3的方法改进PMI方法来识别新词。Bouma[12]通过向PMI方法中引进k个联合概率因子, 改善PMI方法的缺点, 这种改进的PMI方法称为PMIk方法。杜丽萍等[13]通过抽象语料库中低频且总是相邻出现字串的数学特征, 从理论上证明, 当向PMI方法中引进3个及以上的联合概率因子时, PMIk方法能够克服PMI方法的缺点。
目前, 常用的分词方法主要有3种:基于词表的分词方法、基于统计模型的分词方法和基于统计方法与规则方法相结合的分词方法[2]。3种方法均有优点, 但也存在不足:基于词表的分词方法效率高, 但对新词的识别能力不足[14]; 基于规则的方法很难涵盖所有的语言现象[2], 尤其对网络语料的处理能力非常有限; 基于统计模型的分词方法重点在于解决自动分词的歧义分词问题, 但需要人工标注训练语料, 且受训练语料领域的限制。ICTCLAS (In-stitute of Computing Technology, Chinese Lexical Analysis System)是基于隐马尔科夫统计模型(HMM, Hidden MarKov Model)进行分词的广受好评的中文分词系统, ICTCLAS2002版在国内973评测中综合第一名, 经过15年打造, ICTCLAS2015版又增加了新词自动识别功能。
本文在杜丽萍等[13]的定理1和定理2基础上, 采用非监督的基于PMIk与少量的基本规则相结合的方法, 从大规模网络语料中自动识别新词, 并对ICTCLAS2002版分词系统进行改进, 对比改进后的ICTCLAS2002分词系统与ICTCLAS2002和ICTCLAS2015版的分词效果。
1 分词系统改进 1.1 改进分词系统框架分词系统改进主要分为两个阶段: 1)基于大规模语料库进行新词发现; 2)用新词发现结果编纂用户词典, 加载到分词系统中。图 1为改进的分词系统的流程。
1.2 基于PMI改进方法的新词发现
定义1 PMIk算法[12]定义如下:
$ {\text{PM}}{{\text{I}}^k}(x, \;y) = \log \frac{{{p^k}(x, \;y)}}{{p(x)p(y)}}, k \in {N^ + }, $ |
其中, p(x)和p(y)分别表示字串x和y的概率, p(x, y)表示字串x和y的联合概率, PMIk(x, y)表示字串x和y的相关度, 也称PMIk值。特殊地, 当k=1时, PMIk方法即PMI方法。
新词发现过程主要分为4个阶段: 1)确定2元待扩展种子; 2)将2元待扩展种子扩展至2~n元; 3)过滤候选新词; 4)人工判定。算法的步骤如下。
步骤1 从4元字串中确定出2元的待扩展种子。对于每一个4元字串wi-1wiwi+1wi+2, 计算中间两元字串wiwi+1和前两元字串wi-1wi的PMIk值之和的平均值mean1以及中间两元字串wiwi+1和后两元字串wi+1wi+2的PMIk值之和的平均值mean2。计算公式如下:
$ {\text{mea}}{{\text{n}}_1} = \frac{1}{2}({\text{PM}}{{\text{I}}^k}({w_i}, {w_{i + 1}}) + {\text{PM}}{{\text{I}}^k}({w_{i-1}}, {w_i})) $ |
$ {\text{mea}}{{\text{n}}_2} = \frac{1}{2}({\text{PM}}{{\text{I}}^k}({w_i}, {w_{i + 1}}) + {\text{PM}}{{\text{I}}^k}({w_{i + 1}}, {w_{i + 2}})) $ |
对于4元字串wi-1wiwi+1wi+2, 如果满足
$ {\text{PM}}{{\text{I}}^k}({w_i}, {w_{i + 1}}) > {\text{PM}}{{\text{I}}^k}({w_{i-1}}, {w_i}) + {\text{mea}}{{\text{n}}_1} $ |
$ {\text{PM}}{{\text{I}}^k}({w_i}, {w_{i + 1}}) > {\text{PM}}{{\text{I}}^k}({w_{i + 1}}, {w_{i + 2}}) + {\text{mea}}{{\text{n}}_2} $ |
则认为字串wiwi+1是一个词或者词的一部分的概率较大, 即2元字串wiwi+1为待扩展种子, 执行步骤2;否则, 认为字串wi和wi+1各自成词或是词的边界的概率较大, 字串wiwi+1的串频减1。
步骤2 将t元字串扩展至t+1元字串, 其中
1) 如果PMIk(wi-1, wi, …, wi+t-1) > PMIk(wi, …, wi+t-1), 则认为把字串wi, …, wi+t-1扩展成wi-1, …, wi+t-1的概率大于扩展成wi, …, wi+t的概率, 故向前扩展。计算
$ {\text{PM}}{{\text{I}}^k}({w_{i-1}}, {w_i}, \;..., \;{w_{i + t-1}}) + {\text{mean}} \geqslant $ |
$ {\text{PM}}{{\text{I}}^k}({w_i}, \;..., \;{w_o}, {w_{o + 1}}, \;..., \;{w_{i + t-1}}) $ |
则把t元字串wi, …, wi+t-1扩展成t+1元字串wi, …, wi+t-1, t=t+1, 依次迭代, 执行步骤2;否则, 输出t元字串wi, …, wi+t-1, 执行步骤3。
2) 如果
$ {\text{PM}}{{\text{I}}^k}({w_i}, \;..., \;{w_{i + t-1}}, {w_{i + t}}) + {\text{mean}} \geqslant $ |
$ {\text{PM}}{{\text{I}}^k}({w_i}, \;..., \;{w_o}, {w_{o + 1}}, \;..., \;{w_{i + t-1}}) $ |
则把t元字串wi, …, wi+t-1扩展成t+1元字串wi, …, wi+t, t=t+1, 依次迭代, 执行步骤2;否则, 输出t元字串wi, …, wi+t-1, 执行步骤3。
步骤3 利用可存在性过滤规则。如果t元字串wi, …, wi+t-1的串频小于阈值T, 则退出算法; 否则, 执行步骤4。
步骤4 利用停用词过滤规则。如果t元字串wi, …, wi+t-1的任意一个子串包含在停用词集合中, 则退出算法; 否则, 按
步骤5 根据核心词表, 过滤候选新词链L上的核心词汇, 执行步骤6。
步骤6 人工判定。
2 实验及结果分析 2.1 实验数据1) 257 MB (约1000万字)百度贴吧语料, 用于网络新词发现。
2) 停用词典:包含702个停用词(选自哈尔滨工业大学停用词表), 用于过滤候选新词结果中的垃圾串。
3) ICTCLAS核心词典:共收集79836个词语, 是目前比较规范的词典之一, 用于过滤候选新词结果中的核心词汇, 以便得到新词。
4) 10 KB百度贴吧语料, 用于测试分词系统改进的效果。
2.2 新词实验及结果黄昌宁等[15]指出, 99%以上的词长都在五字及五字以下, 故本实验设定抽取的最大词长n等于5。
由于难以统计257 MB百度贴吧语料中的全部新词, 所以只采用准确率作为衡量新词发现方法的评测标准。准确率计算公式为
$ 准确率 = \frac{{正确新词条数}}{{新词条数}} \times 100\% . $ |
在PMIk方法的参数k取1~10之间10个正整数值时, 分别进行实验, 图 2描述随着k值变化的准确率变化趋势。
表 1列举PMIk方法的参数k取1~10之间10个正整数值时, 新词结果的前20条。
k | 实验结果 |
1 | 晦涩难, 非贪婪, 周子琦, 嘤嘤, 金针菇, 啰嗦, 耦合度, 肝肠, 蜀黍, 吧头衔, 矢量图, 抠脚大, 瞅瞅, 衲法号, 可理喻, 天答辩, 烫烫, 鼎鼎, 仔细观察, 彬彬 |
2 | 南海保镖, 赫卡特, 青年范児, 刘易雯, 徽太尉, 满智勇, 寒云似雾, 童鞋, 叼叼, 云似雾, 冒险岛, 迭代器, 吐槽, 蜀黍, 楠绾绾, 锐英源, 蛋疼, 莱克斯, 御坂, 肝肠 |
3 | 真朱, 寒云, 大神, 蛋疼, 窗体, 良化, 百度, 楼主, 控件, 菜鸟, 童鞋, 吐槽, 渡娘, 膜拜, 递归, 炮姐, 余贺, 坑爹, 尼玛, 傲娇 |
4 | 真朱, 大神, 楼主, 窗体, 百度, 良化, 控件, 寒云, 蛋疼, 菜鸟, 贴吧, 渡娘, 童鞋, 源码, 帖子, 点击, 递归, 链接, 吐槽, 线程 |
5 | 大神, 楼主, 真朱, 窗体, 控件, 百度, 良化, 寒云, 蛋疼, 菜鸟, 贴吧, 源码, 点击, 帖子, 线程, 渡娘, 链接, 童鞋, 微软, 递归 |
6 | 大神, 楼主, 真朱, 控件, 窗体, 百度, 良化, 寒云, 蛋疼, 菜鸟, 贴吧, 源码, 线程, 点击, 帖子, 链接, 渡娘, 次元, 微软, 神马 |
7 | 大神, 楼主, 真朱, 控件, 窗体, 百度, 良化, 寒云, 蛋疼, 贴吧, 菜鸟, 源码, 线程, 点击, 帖子, 链接, 次元, 渡娘, 微软, 神马 |
8 | 大神, 楼主, 真朱, 控件, 窗体, 百度, 良化, 寒云, 蛋疼, 贴吧, 源码, 菜鸟, 线程, 点击, 帖子, 链接, 次元, 微软, 神马, 报错 |
9 | 大神, 楼主, 真朱, 控件, 窗体, 百度, 良化, 寒云, 贴吧, 蛋疼, 源码, 菜鸟, 线程, 点击, 帖子, 链接, 次元, 神马, 报错, 微软 |
10 | 大神, 楼主, 真朱, 控件, 窗体, 百度, 良化, 寒云, 贴吧, 蛋疼, 源码, 线程, 菜鸟, 点击, 帖子, 链接, 次元, 报错, 神马, 微软 |
2.3 改进分词系统实验及结果
实验设计如下。实验一:基于ICTCLAS2002版分词系统进行实验; 实验二:基于ICTCLAS2015版分词系统进行实验; 实验三:加载用户词典到ICTCLAS2002版分词系统中进行实验。采用准确率、召回率和F值3个指标来衡量分词系统的性能, 计算公式如下:
$ 准确率 = \frac{{切分正确的词数目}}{{切分出的总词数}} \times 100\% . $ |
$ \begin{gathered} 召回率 = \frac{{切分正确的词数目}}{{文本包含的总词数}} \times 100\%, \hfill \\ F = \frac{{准确率·召回率·2}}{{准确率+召回率}} \times 100\% . \hfill \\ \end{gathered} $ |
针对10 KB百度贴吧测试语料进行上述实验, 实验结果如表 2所示, “切分出总词数”表示分词系统切分出的字串总数目, “识别新词数目”表示分词结果中包含的正确的新词数目。
实验编号 | 切分出总词数 | 识别新词数目 | 准确率/% | 召回率/% | F/% |
实验一 | 4260 | 1 | 89.81 | 95.65 | 92.64 |
实验二 | 4230 | 26 | 91.04 | 96.28 | 93.59 |
实验三 | 4067 | 150 | 97.74 | 99.38 | 98.55 |
表 3列举10 KB百度贴吧语料中3个例句分别在实验一、实验二和实验三中的结果。
实验编号 | 实验结果 |
ICTCLAS2002 | 让/我/这个/菜/鸟/都/有/点/情/何以/堪/啊!这个/镜头/在/变形/金刚/刚/出来/时候/不/是/就/被/喷/了/么/?小/正/太/, /你/好/。 |
ICTCLAS2015 | 让/我/这个/菜/鸟/都/有/点/情/何以/堪/啊!这个/镜头/在/变形/金/刚刚/出来/时候/不/是/就/被/喷/了/么/?小正太/, /你/好/。 |
ICTCLAS2002加载用户词典 | 让/我/这个/菜鸟/都/有/点/情/何以/堪/啊!这个/镜头/在/变形金刚/刚/出来/时候/不/是/就/被/喷/了/么/?小正太/, /你/好/。 |
例1 让我这个菜鸟都有点情何以堪啊!
例2 这个镜头在变形金刚刚出来时候不是就被喷了么?
例3 小正太, 你好。
2.4 结果分析从图 2可以看出, 准确率随k值增大而增大且逐渐趋于100%。k=3时的准确率比k=1时提高13.6%, k=10时的准确率比k=1时提高28.79%。因此, 当PMIk方法的参数
由表 1看出, 当PMIk方法的参数
从表 2可以看出, 相对ICTCLAS2002加载用户词典前, ICTCLAS2002加载用户词典后分词系统识别出的新词数目增加149个, 准确率、召回率和F值也分别提高7.93%, 3.37%和5.91%。结果表明, 增加用户词典后, ICTCLAS2002分词系统处理网络语料的效果有明显改善。相对ICTCLAS2015分词系统, ICTCLAS2002加载用户词典后分词系统识别出的新词数目增加了124个, 准确率、召回率和F值也分别提高6.7%, 3.1%和4.96%。
表 3中, 针对例1, ICTCLAS 2002和ICTCLAS2015分词系统均把新词“菜鸟”切分为“菜/鸟”; ICTCLAS2002加载用户词典(词典中包含新词“菜鸟”)后, 分词系统把新词“菜鸟”切分为一个词。针对例2, ICTCLAS2002分词系统把新词“变形金刚”切分为“变形/金刚”; ICTCLAS2015分词系统分词把“变形金”切分为一个词, 把“变形金刚”中的“刚”和它后面的“刚”结合起来切分为“刚刚”; ICTCLAS2002加载用户词典(词典中包含新词“变形金刚”)后, 分词系统把新词“变形金刚”切分为一个词。针对例3, ICTCLAS2002分词系统把新词“小正太”切分为“小/正/太”; ICTCLAS2015和ICTCLAS2002加载用户词典(词典中包含新词“小正太”)后分词系统把新词“小正太”切分为一个词。从10 KB百度贴吧测试语料的分词结果来看, 主要有3种情况: 1) ICTCLAS2002和ICTCLAS2015分词系统在遇到新词时, 大多情况下均是将新词切分为多个“散串”, 如例1, ICTCLAS2002加载包含这些新词的用户词典之后, 这些新词均能被正确切分; 2) ICTCLAS2015分词系统自动识别出新词不正确, 导致句子中其他词的分词结果不正确, 如例2中把“变形金”当做一个词, 导致“变形金刚”后面的“刚”和“变形金刚”中的“刚”结合起来切分为“刚刚”; 3)在ICTCLAS2002把新词切分为多个“散串”时, ICTCLAS2015和ICTCLAS2002加载用户词典后的分词系统正确切分出新词, 如例3。结果表明, 通过加载用户词典改进分词系统是一种可靠有效的方法。
3 结语本文基于257 MB百度贴吧语料, 验证了PMIk方法的参数k取值大于等于3时, 能够克服PMI方法的缺点, 并通过调整新词发现算法中的参数来提高长度大于2元的新词识别率。最后, 验证了基于加载用户词典来改进分词系统是有效可行的方法。下一步工作是研究PMIk方法的参数k取值与语料库规模、语料特征等因素的关系, 找出一种自适应地确定参数k值的方法, 提高新词识别效果, 进一步增强分词系统处理Web文本的能力。
[1] | 张海军, 史树敏, 朱朝勇, 等. 中文新词识别技术综述. 计算机科学 , 2010, 37 (3) : 6–12. |
[2] | 宗成庆. 统计自然语言处理. 北京: 清华大学出版社, 2008 : 103 -146. |
[3] | Pecina P, Schlesinger P. Combining association measures for collocation extraction // Proceeding Soft of the 21th International Conference on Compu-tational Linguisticsand 44th Annual Meeting of the Association for Computational Linguistics (COLING/ACL2006). Sydney, 2006: 651-658 |
[4] | 刘华. 一种快速获取领域新词语的新方法. 中文信息学报 , 2006, 20 (5) : 17–23. |
[5] | 刘建舟, 何婷婷, 骆昌日. 基于语料库和网络的新词自动识别. 计算机应用 , 2004, 24 (7) : 132–134. |
[6] | 韩艳, 林煜熙, 姚建明. 基于统计信息的未登录词的扩展识别方法. 中文信息学报 , 2009, 23 (3) : 24–30. |
[7] | Patrick P, Lin D K. A statistical corpus-based term extractor // Stroulia E, Matwin S. lecture notes in artificial intelligence. London, 2001: 36-46 |
[8] | 梁颖红, 张文静, 周德福. 基于混合策略的高精度长术语自动抽取. 中文信息学报 , 2009, 23 (6) : 26–30. |
[9] | 何婷婷, 张勇. 基于质子串分解的中文术语自动抽取. 计算机工程 , 2006, 32 (23) : 188–190. |
[10] | 孙继鹏, 贾民, 刘增宝. 一种面向文本的概念抽取方法研究. 计算机应用与软件 , 2009, 26 (9) : 28–30. |
[11] | Pazienza M T, Pennnacchiotti M, Zanzotto F M. Terminology extraction: an analysis of linguistic and statistical approaches. Berlin: Springer-Verlag, 2005 : 255 -279 . |
[12] | Bouma G. Normalized (pointwise) mutual information in collocation extraction // Proc Boennial GSCL Conference 2009, Meaning: Processing Texts Automatically. Tubingen, 2009: 31-40 |
[13] | 杜丽萍, 李晓戈, 周元哲, 等. 互信息改进方法在术语抽取中的应用. 计算机应用 , 2015, 35 (4) : 996–1000, 1005. |
[14] | 莫建文, 郑阳, 首照宇, 等. 改进的基于词典的中文分词方法. 计算机工程与设计 , 2013, 34 (5) : 1802–1807. |
[15] | 黄昌宁, 赵海. 中文分词十年回顾. 中文信息学报 , 2007, 21 (3) : 8–19. |