搭配词(collocation)
广义而言,搭配词(collocation)是指两个或多个词因为语言习惯性结合在一起表示某种特殊意义的词汇。搭配词在不同的研究领域上有不同的解读,尚未有一致性的定义。大概的意思就是词语的习惯搭配了,就是学英语时老师一直拿来搪塞我们的那种『习惯搭配』。比如sit in traffic,表示堵车或者在通勤上花费了非常多时间的意思,那么sit_traffic就是一个搭配词。其中sit称为base word,traffic称为collocate. 所以collocations = base word + collocate.
前面的例子中介词in去哪里了呢?研究搭配词时通常只研究base word和collocate两个单词,可以记为 ( w , w 1 ) (w, w_1) (w,w1),比如sit和traffic的collocation表示为 (sit, traffic),中间的单词都省略掉。这样的表示类似bigram的形式,称为skip bigram,即跳过(skip)中间的一些词,只取首尾两个词记为bigram的形式。普通的bigram也是skip bigram的一种。
虽然skip bigram跳过了中间的词,但不意味着这部分信息丢失了。skip bigram有个距离属性,表示skip bigram中首尾两个词中间相差多少个词。两个相连的词构成的skip bigram距离是1,比如sit in traffic的(sit, in)的距离为1,所以没有距离为0的bigram! 但是有距离是负数的bigram,比如(in, sit)的距离为-1,表示sit应该在前面。对于英语,这个距离一般取5和-5.
类似地,sit in traffic的所有skip bigram(包含普通bigram在内)有如下,括号中的数字表示距离。
- (sit, in, 1)
- (in, traffic, 1)
- (in, sit, -1)
- (traffic, in, -1)
- (sit, traffic, 2)
- (traffic, sit, -2)
搭配词研究的意义在于有些词合在一起可能符合语法,但平常几乎不会用,或者合在一起没有什么意义,那么从语料库中找出常用的搭配词就可以用于英文学习或句子改错。比如你非要说stand in traffic,语法上看起来没有错误,但(stand, traffic, 1)在语料库中出现的次数很低,因为没有人这么说。
Smadja算法
算法思想
搭配词选取通常从语料库中用统计的方法选出一些候选词,然后判断哪些搭配词是合理的搭配词。常用的统计方法有互信息,log likelihood ratio (LLR),t检验,chi-square检验等。另外一种方法是Smadja于1993年提出的基于ngram距离的语法关系搭配词提取方法(Syntactic relation by distanced ngram analysis),这种方法很好用,应用也很广泛。基本思想是:
- 计算任意两个单词在距离 d d d时一起出现的次数,即距离为 d d d的skip bigram的个数
对于英文最大距离取5,最小距离取-5. 比如(play, role)在距离-4~4之间出现的次数如下表所示。
距离 d d d | (play, role) count |
---|---|
-4 | 81230 |
-3 | 161358 |
-2 | 920270 |
-1 | 255149 |
1 | 27584 |
2 | 1428845 |
3 | 3452577 |
4 | 325548 |
- 选取出现次数最高的skip bigram作为最终的collocation,此时它们的距离是 d d d.
比如上表中可以看到当play和role的距离为3是他们出现的次数是最多的,此时(play, role, 3)就是最终的搭配词,例如play an important role.
Smadaj算法有两个基本假设:
- 搭配词出现的频率远高于非搭配词,即(base word, collocate)出现的频率高于其它组合
- 搭配词出现的次数在距离上的分布有峰值
如下图是(play, role)在距离-5~5之间的频率分布,可以看到在距离为3时出现峰值。
为了应用Smadaj算法,我们需要计算出任意两个单词的skip bigram出现的次数以及它在每个距离上出现的次数。下图是Smadaj论文中的图。图中base word是takeover,显示的是takeover与所有搭配词的频率分布。
得到上表后Smadja提出了三个条件来筛选合理的搭配词。一些符号表示如下。
记某个base word w w w与它的搭配词 w i w_i wi的频率是 f r e q i freq_i freqi,即上表中 F r e q Freq Freq那一列。记某个base word的平均频率为 f ˉ \bar{f} fˉ,即上表中 F r e q Freq Freq一列的平均值,表示base word takeover 的平均频率。记 p i j p_i^j pij为搭配词 ( w , w i ) (w, w_i) (w,wi)在距离 j j j上出现的次数, p i ˉ \bar{p_i} piˉ为搭配词 ( w , w i ) (w, w_i) (w,wi)在所有距离上出现次数的平均值,即:
p i ˉ = 1 10 ∑ j = − 5 5 p i j ( j ≠ 0 ) \bar{p_i} = \frac{1}{10}\sum_{j=-5}^5 p_i^j \ (j \neq 0) piˉ=101j=−5∑5pij (j=0)
Smadja算法中判断搭配词 ( w , w i ) (w, w_i) (w,wi