最後更新:2026年9月21日
第3週 搭配詞(補課)
1. 什麼是搭配詞?
搭配詞(collocation):兩個詞在自然語言中傾向於彼此靠近出現,稱為共現(cooccur)。例如「喝—茶」「天氣—好」是搭配,「喝—桌子」不是。Firth(1957):You shall know a word by the company it keeps.(觀其伴,知其義。)
問題:怎樣「測量」這種吸引力,並和偶然區分開?想法是把真實語料和「詞語隨機排列」比較:真實語料中共現的次數遠多於隨機預期,就是搭配詞。
2. 觀察值 O 與期望值 E
先固定兩個詞:目標詞 X(例:王婆)和搭配詞 Y(例:痛苦)。
- 觀察值 O:在 X 左右各 k 個詞的視窗內,Y 實際出現的次數。
- 期望值 E:如果純屬偶然,預期出現的次數。類比:10 顆球中有 5 顆紅球,抽 4 顆,預期有 \(4 \times 0.5 = 2\) 顆紅球。
算 E 分三步:
- 隨機抽一個詞剛好是 Y 的機率:\(P(Y) = \dfrac{\text{count}(Y)}{N}\)(\(N\) 是語料總詞數)。
- X 周圍有多少個位置:\(\text{count}(X) \times \text{視窗大小} \times 2\)(左右兩邊)。
- \(E = P(Y) \times \text{位置數}\)。
例(數字為示意):
- 語料總詞數:\(N = 50{,}000\)
- 目標詞:count(王婆) \(= 200\)
- 搭配詞:count(痛苦) \(= 50\)
- 視窗:3 + 3
計算:
- 機率:\(P(\text{痛苦}) = \dfrac{50}{50{,}000} = 0.001\)
- 位置數:\(200 \times 3 \times 2 = 1{,}200\)
- 期望值:\(E = 0.001 \times 1{,}200 = 1.2\)
- 若觀察值 \(O = 8\),則 \(\dfrac{O}{E} = \dfrac{8}{1.2} \approx 6.7\):共現次數是偶然預期的 6.7 倍。
3. 互信息 MI 與 PPMI
把 \(O/E\) 取以 2 為底的對數,得到(點)互信息 MI:
\[\mathrm{MI} = \log_2 \frac{O}{E}\]
\(\log_2 x\) 的意思是「2 的幾次方等於 \(x\)」。所以比值每多一倍,MI 加 1;每少一半,MI 減 1;\(O = E\) 時 MI \(= 0\)。上例:\(\mathrm{MI} = \log_2 6.7 \approx 2.74\)。
| \(O/E\) | MI | 意思 |
|---|---|---|
| \(1/4\) | \(-2\) | 遠少於偶然 |
| \(1/2\) | \(-1\) | 少於偶然 |
| \(1\) | \(0\) | 如偶然 |
| \(2\) | \(+1\) | 多一倍 |
| \(4\) | \(+2\) | 4 倍 |
| \(8\) | \(+3\) | 8 倍 |
PPMI(正的點互信息)把負值一律設為 0:
\[\mathrm{PPMI} = \max\!\left(0,\ \log_2 \frac{O}{E}\right)\]
負值表示兩詞互相「排斥」,但語料不夠大時不可靠。PPMI 常用於詞向量。
4. 簡單指標的問題
Evert 舉了一個例子(語料約 100 萬個雙詞組)。她沒有用視窗,而是只看雙詞組(bigram):兩個詞緊鄰,搭配詞 Y 就是目標詞 X 前面的那個詞。每個目標詞前面只有一個位置,所以位置數就是 count(X),E 的算法變成:
\[E = P(Y) \times \text{count}(X)\]
比較兩個詞對(Y 是前一個詞,X 是後一個詞;\(N = 1{,}000{,}000\)):
- the Iliad:\(E = 0.1 \times 10 = 1\)
- must also:\(E = 0.001 \times 1{,}000 = 1\)
| 詞對 | count(Y) | count(X) | \(P(Y)\) | \(E\) | \(O\) |
|---|---|---|---|---|---|
| the Iliad | 100,000 | 10 | 0.1 | 1 | 10 |
| must also | 1,000 | 1,000 | 0.001 | 1 | 10 |
兩者都是 \(O = 10\)、\(E = 1\),所以 \(O/E = 10\)、\(\mathrm{MI} = \log_2 10 \approx 3.32\):分數完全一樣。
但直覺上 the Iliad 強得多。Iliad 只出現 10 次,而且每一次前面都是 the,\(O = 10\) 已是可能的最大值;must 與 also 各出現 1,000 次,本來可以共現多得多。\(O\) 與 \(E\) 忽略了語料中其他的一切,我們還要看兩個詞沒有共現的情況。
5. 列聯表
對兩個事件 \(X\)、\(Y\),每個個案恰好落入四格之一:
| Y 發生 | Y 不發生 | |
|---|---|---|
| X 發生 | a(兩者都發生) | b(只有 X) |
| X 不發生 | c(只有 Y) | d(都沒有) |
列聯表無處不在:吸煙 × 肺癌、慣用手 × 性別、兩個詞 × 句子。問題都一樣:兩個性質是否互相獨立?詞對的觀察值 \(O\) 就是左上角的 \(a\)。
6. Fisher 精確檢定
預備知識:n 選 k
從 \(n\) 個中選 \(k\) 個、不計順序,有
\[\binom{n}{k} = \frac{n!}{k!\,(n-k)!}\]
種選法。例如從 8 杯中選 4 杯:\(\dbinom{8}{4} = \dfrac{8!}{4!\,4!} = 70\)。
奶茶實驗
Fisher(1935):一位女士聲稱能分辨奶茶是「先倒牛奶」還是「先倒茶」。8 杯外觀相同(4 杯先牛奶、4 杯先茶),她要指出哪 4 杯先牛奶。全部答對的機率只有 \(\dfrac{1}{70} \approx 0.014\),靠猜很不可能;答對 3 杯的機率 \(\dfrac{17}{70} \approx 0.243\),可能只是運氣。這就是 Fisher 精確檢定的想法:這張表在「純屬偶然」下有多不可能?
一張表的機率
固定各行各列的總數,一張特定的表(a, b, c, d)在「純屬偶然」下的機率是:
\[p = \frac{\dbinom{a+b}{a}\dbinom{c+d}{c}}{\dbinom{N}{a+c}}\qquad (N = a+b+c+d)\]
檢定要把這張表和所有更極端的表的機率加起來。
例(數字為示意):20 位學生(10 女、10 男),其中 10 位有讀書,8 位是女生。「更極端」是指有讀書的女生更多(9 位、10 位)。三張表如下(每行每列的總數都固定):
| 有讀書的女生 | 女生(讀 / 不讀) | 男生(讀 / 不讀) | 這張表的機率 |
|---|---|---|---|
| 8 位(實際) | 8 / 2 | 2 / 8 | \(\dfrac{2025}{184756} \approx 0.0110\) |
| 9 位 | 9 / 1 | 1 / 9 | \(\dfrac{100}{184756} \approx 0.0005\) |
| 10 位 | 10 / 0 | 0 / 10 | \(\dfrac{1}{184756} \approx 0.000005\) |
三張表機率加起來:\(p = \dfrac{2126}{184756} \approx 0.0115 < 0.05\),所以性別與讀書的關聯顯著。
回到 the Iliad / must also
兩個詞對的 \(O\) 和 \(E\) 一樣,現在看完整的列聯表。每一項是一個雙詞組(共 1,000,000 個);列=前一個詞,欄=後一個詞。
the Iliad(\(a = 10\),count(the) = 100,000,count(Iliad) = 10)
| Iliad | 非 Iliad | |
|---|---|---|
| the | 10 | 99,990 |
| 非 the | 0 | 900,000 |
must also(\(a = 10\),count(must) = 1,000,count(also) = 1,000)
| also | 非 also | |
|---|---|---|
| must | 10 | 990 |
| 非 must | 990 | 998,010 |
差別在 \(c\):the Iliad 的 \(c = 0\)(每個 Iliad 前面都是 the),must also 的 \(c = 990\)(also 大多沒有 must 在前面)。Fisher 檢定給出:
- the Iliad:\(p \approx 1 \times 10^{-10}\)
- must also:\(p \approx 1 \times 10^{-7}\)
兩者都「顯著」,但 the Iliad 的 \(p\) 小 1000 倍。實際用法是把 \(p\) 值當作分數來排序:the Iliad 排在前面,而 \(O/E\) 和 MI 做不到這一點。
7. 三種「相鄰」的定義
同一張列聯表,只是「共現項目(item)」不同:先決定項目是什麼,再問每個項目是否含 X、是否含 Y。
| 視窗法 | 句子法 | 語法關係法 | |
|---|---|---|---|
| 「相鄰」是指 | k 個詞之內 | 同一個句子 | 有語法關係(如形容詞→名詞) |
| 計數單位 | 詞 | 句子 | 搭配對 |
| 需要 | 選定 k | 分句 | 句法分析器 |
例:在小語料中找(好, 天氣)。
- 視窗法:數視窗內的詞。
- 句子法:數同時含「好」和「天氣」的句子(一個句子有兩個也只算 1 次)。
- 語法關係法:只數「形容詞→名詞」的修飾關係,「心情不好」這種謂語用法不算。
各方法的 \(O\) 就是各自列聯表的 \(a\)。前面 Evert 的 the Iliad 例子用的是最小的視窗:只看緊鄰的前一個詞。
8. 回顧
- 搭配詞:兩個詞比偶然更常在附近一起出現。
- 觀察值 \(O\) 對期望值 \(E\);取對數得 MI,去掉負值得 PPMI。
- 列聯表:也記錄「沒有」共現的情況(a, b, c, d)。
- Fisher 精確檢定:這張表在「純屬偶然」下有多不可能?
- 三種「相鄰」:視窗、句子、語法關係,同一張表、不同的「項目」。
閱讀
- Stefan Evert, “Corpora and Collocations”(本課主要參考)。
- (選讀)Paul Baker, Using Corpora in Discourse Analysis (2006), Chapter 5, “Collocations”。
- (選讀)J. R. Firth, “A Synopsis of Linguistic Theory” (1957)。