一种利用ngram模型来消除歧义的中文分词方法

标签: search | 发表时间:2015-05-05 20:43 | 作者:
出处:http://my.oschina.net/apdplat

这里的 歧义是指:同样的一句话,可能有两种或者更多的切分方法,这些切分结果,有的正确,有的不正确。

消除歧义的目的就是从切分结果中挑选切分正确的。

假设我们要切分句子:结婚的和尚未结婚的,使用 逆向最大匹配正向最大匹配算法的结果如下:

逆向最大匹配:[结婚, 的, 和, 尚未, 结婚, 的]
正向最大匹配:[结婚, 的, 和尚, 未结, 婚, 的]

再比如,这几块地面积还真不小:

逆向最大匹配:[这, 几块, 地, 面积, 还真, 不小]
正向最大匹配:[这, 几块, 地面, 积, 还真, 不小]

这里就出现了歧义现象,这种歧义现象称为交集型歧义。

交集型歧义的特点是,其中的一个字既可以和前面的字结合成词,也可以和后面的字结合成词,如上面所说的“和尚未"中尚就是这样的字,既可以和前面的字结合成“和尚”也可以和后面的字结合成“尚未”。还有“地面积”中的面,既可以是地面,也可以是面积。

那么我们该选择哪一个分词结果呢?

我们可以利用ngram模型来消除歧义,我们看第一个例子的分词过程:

初始化bigram
bigram初始化完毕,bigram数据条数:1519443

利用bigram为逆向最大匹配算法的分词结果进行评分:

二元模型 结婚:的 获得分值:16.970562
二元模型 和:尚未 获得分值:2.0
二元模型 尚未:结婚 获得分值:1.4142135
二元模型 结婚:的 获得分值:16.970562

逆向最大匹配:[结婚, 的, 和, 尚未, 结婚, 的] : ngram分值=37.35534

利用bigram为正向最大匹配算法的分词结果进行评分:

二元模型 结婚:的 获得分值:16.970562
二元模型 的:和尚 获得分值:3.0

正向最大匹配:[结婚, 的, 和尚, 未结, 婚, 的] : ngram分值=19.970562

最大分值:37.35534, 消歧结果:[结婚, 的, 和, 尚未, 结婚, 的]

接着看第二个例子:

利用bigram为逆向最大匹配算法的分词结果进行评分:

二元模型 地:面积 获得分值:1.7320508

逆向最大匹配:[这, 几块, 地, 面积, 还真, 不小] : ngram分值=1.7320508

利用bigram为正向最大匹配算法的分词结果进行评分:

正向最大匹配:[这, 几块, 地面, 积, 还真, 不小] : ngram分值=0.0

最大分值:1.7320508, 消歧结果:[这, 几块, 地, 面积, 还真, 不小]

这里要解释的是,ngram中的n>1,我们这里取2(bi),我们看到bigram中数据的条数有1519443,bigram需要从人工标注的语料库中提取,提取方法参考 word分词项目,bigram中的数据格式如下:

结婚:登记 91
结婚:的 288
地:面积 3
和:尚未 4
尚未:结婚 2
的:和尚 9

表示的含义是在人工标注的语料库中,结婚这个词后面跟着登记这个词的出现次数是91次,结婚这个词后面跟着的这个词的出现次数是288次。

如果ngram中的n为3,则数据格式如下:

结婚:的:事情 3
结婚:的:人 4
结婚:的:信念 2
结婚:的:决定 13

表示的含义和bigram一致。

通过分析bigram和trigram,我们知道,在ngram中,n越大,消歧的效果就越好,但是数据也越大,耗费的内存就更多了。

利用ngram模型来消除歧义,依赖人工标注的语料库,利用了统计学的大数定律,这种方法的缺点在于无法处理少见的语言现象,以及无法处理样本覆盖不到的情况。


相关 [利用 ngram 模型] 推荐:

一种利用ngram模型来消除歧义的中文分词方法

- - 杨尚川的个人页面
这里的 歧义是指:同样的一句话,可能有两种或者更多的切分方法,这些切分结果,有的正确,有的不正确. 消除歧义的目的就是从切分结果中挑选切分正确的. 假设我们要切分句子:结婚的和尚未结婚的,使用 逆向最大匹配和 正向最大匹配算法的结果如下:. 逆向最大匹配:[结婚, 的, 和, 尚未, 结婚, 的] 正向最大匹配:[结婚, 的, 和尚, 未结, 婚, 的].

模型制作

- 小鱼儿 - 非正常人类研究中心 – Mtime时光网
1.材料:一大袋的一次性筷子(花了60块钱);5支502胶水;5张粗砂纸;记号笔一只;锋利的美工刀片若干,破剪刀一把. 就是这种屌毛筷子,质量也太他妈的差了点,80%都是弯的 . 随便提一下:我的脚丫子还是蛮性感滴 . 开始动工了!!  先做门框跟房子的底架. 3.不好意思,忘了交代一下了,我是先画图纸的,看到那张纸了没有.

MapReduce编程模型

- - CSDN博客云计算推荐文章
MapReduce是一个Google发明的编程模型,也是一个处理和生成超大规模数据集的算法模型的相关实现. 用户首先创建一个Map函数处理一个基于对的数据集合,输出的中间结果基于对的数据集合,然后再创建一个Reduce函数用来合并所有的具有相同中间Key值的中间Value值.

关于BOM模型

- - CSDN博客编程语言推荐文章
当我们使用浏览器打开一个网页程序时,那么,js系统会自动创建对象,首先创建浏览器对象window,然后再为window对象创建它的子级对象,最后形成一个树状模型,这个就是BOM模型. BOM定义了JavaScript可以进行操作的浏览器的各个功能部件的接口. BOM 主要处理浏览器窗口和框架,不过通常浏览器特定的 JavaScript 扩展都被看做 BOM 的一部分.

对象的消息模型

- loudly - 酷壳 - CoolShell.cn
[ ———— 感谢 Todd 同学 投递本文,原文链接 ———— ]. 话题从下面这段C++程序说起,你认为它可以顺利执行吗. 试试的确可以顺利运行输出hello world,奇怪吗. 其实并不奇怪,根据C++对象模型,类的非虚方法并不会存在于对象内存布局中,实际上编译器是把Hello方法转化成了类似这样的全局函数:.

JS三维模型库 Three.js

- Le - 开源中国社区最新软件
Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象. 你可以在它的主页上看到许多精采的演示. 不过,这款引擎目前还处在比较不成熟的开发阶段,其不够丰富的 API 以及匮乏的文档增加了初学者的学习难度(尤其是文档的匮乏) 演示:http://mrdoob.github.com/three.js/.

论NoSQL的数据模型

- - NoSQLFan
本文内容是对《 NoSQL Data Modeling Techniques》一文的简单概述,原文对NoSQL的几种 数据模型进行了详细深入的讨论. 是了解NoSQL数据模型不过错过的全面资料. NoSQL的一些非功能性的特性,比如扩展性、性能以及一致性的讨论,目前已经有很多. 而对于NoSQL产品内部数据模型相关的知识一直比较欠缺,本文就希望能够系统地对NoSQL数据模型进行一些探讨.

深入Java内存模型

- - ImportNew
你可以在网上找到一大堆资料让你了解JMM是什么东西,但大多在你看完后仍然会有很多疑问. happen-before是怎么工作的呢. 用volatile会导致缓存的丢弃吗. 为什么我们从一开始就需要内存模型. 通过这篇文章,读者可以学习到足以回答以上所有问题的知识. 它包含两大部分:第一部分是硬件层次的大体架构,第二部分是深入OpenJdk源代码和实现.

[转]Geodatabase数据模型

- - 小鸥的博客
1  Geodatabase概念.   Geodatabase是ArcInfo8引入的一种全新的面向对象的空间数据模型,是建立在DBMS之上的统一的、智能的空间数据模型. “统一”是指,Geodatabase之前的多个空间数据模型都不能在一个统一的模型框架下对地理空间要素信息进行统一的描述,而Geodatabase做到了这一点;“智能化”是指,在Geodatabase模型中,对空间要素的描述和表达较之前的空间数据模型更接近我们的现实世界,更能清晰、准确地反映现实空间对象的信息.

Apache与Nginx网络模型

- - CSDN博客互联网推荐文章
      Nginx的高并发得益于其采用了epoll模型,与传统的服务器程序架构不同,epoll是linux内核2.6以后才出现的. 下面通过比较Apache和Nginx工作原理来比较.       传统Apache都是多进程或者多线程来工作,假设是多进程工作(prefork),apache会先生成几个进程,类似进程池的工作原理,只不过这里的进程池会随着请求数目的增加而增加.