(纯属为了记录自己学习的点滴过程,引用资料都附在参考列表)
1 基本概念
什么是新词(是什么)
新词是一个相对的概念,每个人的标准都不一样,所以我们这里定义: 词典之外的词语(OOV)称作新词。
为什么要进行新词提取(为什么)
新词的提取对中文分词而言具有重要的意义,因为语料库的标注成本很高。那么如何修订领域词典呢,此时,无监督的新词提取算法就体现了现实意义。
怎么进行新词提取(怎么办)
- 提取出大量文本(生语料)中的词语,无论新旧。
- 用词典过滤掉已有的词语,于是得到新词。
步骤 2 很容易,关键是步骤 1,如何无监督的提取出文本中的单词。给定一段文本,随机取一个片段,如果这个片段左右的搭配很丰富,并且片段内部成分搭配很固定,则可以认为这是一个词。将这样的片段筛选出来,按照频次由高到低排序,排在前面的有很高概率是词。
如果文本足够大,再用通用的词典过滤掉“旧词”,就可以得到“新词”。
片段外部左右搭配的丰富程度(越丰富说明不确定性越大,这样可以引进熵这个概念进行度量了),可以用信息熵来衡量,而片段内部搭配的固定程度可以用子序列的互信息来衡量。
信息熵
在信息论中,信息熵( entropy )指的是某条消息所含的信息量。它度量一个随机事件的不确定性,熵越大,不确定性越大,反之亦然。
对于随机变量 X X X,信息熵定义如下:
H ( x ) = − ∫ x p ( x ) log p ( x ) d x H(x) = -\int_x p(x) \log p(x) dx H(x)=−∫xp(x)logp(x)dx
- 举一个简单的例子
给定字符串 S 作为词语备选,X 定义为该字符串左边可能出现的字符(左邻字),则称 H(X) 为 S 的左信息熵,类似的,定义右信息熵 H(Y),例如下列句子:
两只蝴蝶飞啊飞
这些蝴蝶飞走了
那么对于字符串蝴蝶,它的左信息熵为1,而右信息熵为0。因为生语料库中蝴蝶的右邻字一定是飞。假如我们再收集一些句子,比如“蝴蝶效应”“蝴蝶蜕变”之类,就会观察到右信息熵会增大不少。
互信息(Mutual Information)
度量两个随机变量 X , Y X,Y X,Y的相关程度,用狭隘的大白话理解随机变量的相关性,就是随机变量越相关,二者同时发生或者互斥的可能性越大,数学定义如下:
I ( X ; Y ) = E p ( x , y ) log p ( x , y ) p ( x ) p ( y ) I(X; Y) = E_{p(x,y)} \log \frac{p(x,y)}{p(x)p(y)} I(X;Y)=Ep(x,y)logp(x)p(y)p(x,y)
- 还是上面“蝴蝶”的例子:
X = 字 符 串 前 缀 , Y = 字 符 串 后 缀 X = 字符串前缀,Y=字符串后缀 X=字符串前缀,Y=字符串后缀,分析“蝴蝶”🦋这个字符串,
此时两者的联合分布只有一个取值“蝴蝶”,即 p ( X , Y ) = 1 p(X, Y) = 1 p(