在上一篇博文中已简单介绍了自然语言处理未登录词中新词提取的实现,现在来介绍一下新词提取的原理。
未登录词-新词提取的流程如下图所示:
对于新词提取的原理,主要介绍以下两个方面:
1、利用词频选取候选词语,即种子词语
2、判别候选词语的内部结合紧密程度和外部边界独立性
下面开始详细介绍
一、利用词频选取候选词语,即种子词语
利用N-Gram对语料进行切分,得到词语片段,统计词语片段出现的频数。设定一个阈值,只有当词语片段出现的频数超过这个阈值时,才认为这个词语片段构成一个候选词语。这种词频统计方法简单有效,但在提取结果中会包含很多不合语法和语义的词语片段,从而会产生大量的噪声,从而引起准确率不高的问题。因此,需要利用其他统计量对候选词语进行筛选。
二、判别候选词语的内部结合紧密程度和外部边界独立性
我们选取的统计量分别从词语内部的结合紧密程度和词语外部的边界度量入手,具体筛选方法为互信息和左右熵这两个统计量的计算和阈值的设定。
1、内部结合紧密程度的判定方法
从统计学的视角来看,词语内部的结合紧密程度依赖于词语的共现频次。如果某些相互成搭配的词语片段反复大量出现,即它们的共现频次越高,那么词语片段的结合紧密程度越强。但在实际应用中会发现,词语片段共现频次高可能不是一个词,而是多个词构成的词组。比如,在人人网用户状态语料中,“的电影”出现了389次,而“电影院”只出现了175次,然而我们却更倾向于把“电影院”当作一个词语。为了证明这种倾向,需要分别计算“的电影”和“电影院”两个词语片段的内部结合紧密程度,并比较它们的大小。
这里利用互信息来判断词语内部结合紧密程度。互信息是指两个事件同时发生的概率函数,体现了两个变量之间的相互依赖程度:
因此,我们利用人人网用户状态语料分别对“的电影”和“电影院”的互信息进行计算。
在2400万字的数据中,“电影”出现的次数为2774次,出现的概率为
“院”字出现的次数为4797次,出现的概率为
若“电影”和“院”之间毫无关系,那么根据条件独立性假设,预测“电影”与“院”拼接在一起的概率应为
但事实上,“电影院”在语料中出现的次数为175次,出现的概率为
由此可计算“电影”和“院”的互信息为
类似的,可得到“的”出现的的概率为
预测“的”与“电影”拼接在一起的概率应为
而事实上,“的电影”在语料中出现的概率为
由此可计算“的”和“电影”的互信息为
根据统计学知识,互信息值越高,表明X和Y的相关性越高,则X和Y组成词语的可能性越大;反之,互信息值越低,X和Y之间相关性越低,则X和Y之间存在边界的可能性越大。
因此,由上述计算结果可知,
因此,“电影院”更可能是一个词语,而“的电影”更可能是“的”和“电影”这两个片段偶然拼接在一起的。
2、外部边界独立性的判定方法
为了确保新词具有合法的语义,必须保证新词是独立的语言单位。这里采用左右熵的方法(Left and Right Entropy
Measures)来判定词语的独立性和边界。
熵(Entropy)表示随机变量不确定性的量度,能够反映知道一个事件的结果后平均会给你带来多大的信息量。设X是取有限个值的随机变量(或者说X是有限个离散事件得概率场),X取值x的概率为P(x),则X的熵定义为;
或
左右熵是指词汇的左边界的熵和右边界的熵
左熵(Left Entropy)为
右熵(Right Entropy)为
其中,W表示N-Gram切分后经过筛选的候选词语,
;A表示候选词语左边出现的所有词语的集合,a表示左边出现的某一个词语;B表示候选词语右边出现的所有词语的集合,b表示右边出现的某一个词语。
考虑一句话“吃葡萄不吐葡萄皮不吃葡萄倒吐葡萄皮”,“葡萄”一词出现的次数为4次,左边出现词语集A为{吃,吐,吃,吐},右边出现词语集B为{不,皮,倒,皮},根据上述公式,可计算得到“葡萄”的左熵为
右熵为
如果候选词语的 和 数值越大,即候选词语W左右出现的词语越多,则W越有可能是一个词语。
在人人网用户状态语料中,“被子”一词出现了956次,经计算得右熵为
左熵为
“辈子”一词出现了2330次,经计算得右熵为
左熵为
为判定词语的独立性和边界,我们将词语的自由运用程度定义为左右熵中的较小值,则可得“被子”的自由程度为
“辈子”的自由程度为
由此可知,“辈子”独立成词得可能性较小。
由上述说明可知,在实际运用中,凝固程度和自由程度两种判别方法缺一不可。只看凝固程度的话,会出现“半个词“的情况,如“巧克”、“俄罗”、“颜六色”等;只看自由程度的话,则会出现一些左右熵较大的词片段的情况,如“了一”(“吃了一顿”,“看了一遍”,“睡了一晚”,“去了一趟”等)等。
参考:http://www.matrix67.com/blog/archives/5044
<http://www.matrix67.com/blog/archives/5044>
热门工具 换一换