10 報告第 3 題:換一種教材(配分 15%,最高)

結論:同樣字數下,論壇教材讓語意類大輸(⟦R:q3_forum_sem⟧ vs ⟦R:q3_ctrl_sem⟧)、部分語法小類反而贏——教材種類決定字典學到什麼(單次實驗)。

為什麼:百科全書一直寫地理和國家,網友一直講「最便宜、比較好、正在找」。細節和數字在下面 3.1、3.3。

這一題在問什麼

拿一份「不是維基百科」的文字來訓練字典,考同一張考卷,然後回答三件事:

  1. 3.1 成績如何(配分 5%)
  2. 3.2 你選的教材是什麼、跟維基差在哪:大小、主題、結構(配分 5%)
  3. 3.3 成績為什麼變好或變差(配分 5%)

程式一定要放在報告下面,沒放這題 0 分(作業規格 PDF p31)。

3.2 我選的教材:卡達生活論壇(Qatar Living)

維基百科卡達論壇
是什麼百科全書住在卡達的外籍人士互相問問題:簽證、租房、薪水、買車
誰寫的編輯,有人校稿(外部知識)一般網友,隨手打
文字風格正式、完整句子口語、縮寫、錯字很多、很多問句
主題什麼都有:歷史、地理、科學、人物很集中:卡達的生活大小事
結構一篇很長的文章(20% 樣本平均每篇約 592 字;推算:666,053,126 字 ÷ 1,124,733 篇)一則發問+很多短留言(平均每段約 34 字;推算:72,919,300 字 ÷ 2,118,254 段)
大小都是 7,292 萬字(見下面「維基對照組」)

來源:SemEval 2016/2017 Task 3 的公開資料,Gensim 可以直接下載。共 189,941 個討論串;標題、內文、每則留言各算一段,刪掉少於 3 個字的段落後,留下 2,118,254 段(筆記本輸出寫作 posts)。

關鍵設計:為什麼要多做一個「維基對照組」

論壇只有 7,292 萬字,維基 20% 有 6.66 億字,差了 9 倍(推算:6.66 億 ÷ 7,292 萬 ≈ 9.1)。如果直接拿論壇跟維基 20% 比,論壇輸了,你分不出是:

所以我從維基裡切出剛好一樣多字(7,292 萬字)的一份當「維基對照組」,用一模一樣的參數訓練。這樣兩邊主要只差在教材種類,比較才公平。

所以對你的影響是(這就是會拿高分的地方)
大部分人會直接拿「另一份教材」跟「維基 20%」比,然後說「因為教材比較少所以比較差」。能想到「要控制教材字數」的人,報告 3.3 題就有說服力。這種「一次只改一個變數」的想法,叫控制變因,考試也很可能問。

3.1 成績

⟦R:q3_rows⟧
小類維基對照組論壇誰贏

「誰贏」用第 9 節的同一把尺:差距超過該小類的雜訊才判。但雜訊是在 5% 維基(1.66 億字)量的;論壇和維基對照組的教材更小,雜訊可能更大,所以「剛好超過雜訊」的語法類 −1.34 只當參考。

答案覆蓋率:字典裡有沒有這些字

「覆蓋率」=這個小類的題目裡,四個字全部都在字典裡的比例。答案不在字典裡,再聰明也答不出來。

小例子(假設的):4 題全世界首都,其中 2 題的四個字論壇字典都收了 → 覆蓋率 = 2 ÷ 4 = 50%。另外 2 題一定答錯。

⟦R:q3_cov_rows⟧
小類維基對照組論壇

公平比較:只算兩本字典都查得到的題目

論壇字典比較小、很多字查不到,這本身就會讓論壇正確率變低。為了把這個因素排除,筆記本另外只算「四個字在兩本字典都查得到」的 15,684 題:

維基對照組論壇
整體42.8032.12
語意類52.8022.10
語法類37.9137.01
最高級18.2842.90
-ing31.8251.33
國名→國籍77.1222.81
過去式40.9633.78

學到什麼:就算字都查得到,論壇語意類還是大輸、最高級和 -ing 還是大贏。所以差異不只是「論壇字典小、查不到字」,而是兩份教材的內容真的不一樣。

同一個字,兩本字典學到的鄰居

⟦R:q3_neighbor_rows⟧
字維基對照組的 5 個鄰居論壇的 5 個鄰居

證據:同樣的字,在兩份教材裡出現幾次

猜原因之前,先算數字。下面是「每 100 萬個字裡出現幾次」(兩份教材一樣大,可以直接比)。

怎麼換成次數(推算,筆記本只印每 100 萬字):cheapest 在論壇每 100 萬字 27.50 次,論壇教材共 72.92 個「100 萬字」,所以大約出現 27.50 × 72.92 ≈ 2,005 次;維基對照組 0.96 × 72.92 ≈ 70 次。27.50 ÷ 0.96 ≈ 28.6 倍。

字維基對照組論壇論壇是維基的幾倍
cheapest(最便宜)0.9627.5028.64 倍
biggest(最大)37.2659.971.61 倍
best(最好)553.01988.651.79 倍
looking(正在找)56.31680.7412.09 倍
cheaper(更便宜)7.7880.2710.32 倍
going104.22914.058.77 倍
better(更好)116.98990.408.47 倍
bigger13.1253.584.08 倍
husband/wife104.85/212.38418.87/605.503.99/2.85 倍
goes66.47235.333.54 倍
capital(首都)160.3843.230.27 倍
brazilian(巴西人)42.4333.460.79 倍
albanian(阿爾巴尼亞人)13.370.750.06 倍
illinois(伊利諾州)90.021.100.01 倍

這張表在筆記本第 3 題的程式區(「第 3 題補充證據」那一格,畫面上是 In [30]),數字照抄筆記本輸出。

不要只挑對自己有利的證據
頻率能解釋一部分,但不是全部:biggest 在論壇只多 1.61 倍、best 只多 1.79 倍,最高級卻贏 23.35 個百分點;brazilian 在論壇也有維基的 0.79 倍,國名→國籍卻輸 54.85 個百分點。(推論)關鍵可能不只是「單字出現幾次」,而是「國家–國籍」「原級–最高級」這種成對關係,有沒有在同樣的前後文裡反覆出現。把反例也寫進報告,會比只放支持的數字更有說服力。

3.3 為什麼(這段就是報告要寫的內容)

發現原因
首都、城市、貨幣:論壇慘輸網友很少聊非洲國家的首都或美國的州(推論)。覆蓋率表顯示,論壇字典裡連字都沒有:全世界首都只有 ⟦R:q3_cov_capworld⟧ 的題目四個字都查得到,貨幣只有 ⟦R:q3_cov_currency⟧。就算字有(常見國家首都覆蓋率 100%),出現次數太少、也很少出現在「首都是…」這種前後文,關係學不起來。
國名→國籍:論壇大輸(推論)albanian 在論壇只有維基的 0.06 倍;但 brazilian 也有 0.79 倍,國名→國籍仍大輸——可能是「巴西–巴西人」這種成對關係,在論壇裡很少出現在相同的前後文。
比較級、最高級、-ing、動詞第三人稱:論壇反而贏上面的字頻表顯示,網友用 cheapest、looking、better、goes 的頻率是維基的 3.5~28.6 倍。(推論)字形出現越多次、前後文越一致,詞向量越準。
另一個可能的因素:論壇字典只有對照組的一半大,干擾的候選字比較少。「公平比較」排除查不到的題目後論壇仍然贏,但字典大小的影響沒有完全排除。
家人/性別:差不多差 2.97 個百分點,小於這個小類的雜訊 4.74,不下結論。
論壇的鄰居常常是錯字上面 7 個字裡,salary、family、doha、visa 四個字的論壇鄰居大多是錯字(salary 的鄰居是 slary、salry、salery、sallary、salaray);king、paris、computer 則不是。錯字的前後文跟正確的字高度相似,詞向量用前後文學,所以把錯字當成最像的字。維基有人校稿,比較少這樣(推論)。老師投影片 W1 p94 也寫「Vector search is not robust to typos」。
論壇學到了在地用語visa 的鄰居有 iqama(卡達居留證)、rp(residence permit)(這兩個字的意思是外部知識);doha(卡達首都)的鄰居有 doah(doha 的錯字)、qata、qatat、qutar(qatar 的錯字)。
考試可能問
「用不同教材訓練,結果為什麼不同?」→ 字典學的是每個字出現在什麼樣的前後文;教材的主題和文體不同,常出現的字和句型就不同。
「要怎麼公平地比較兩種教材?」→ 控制教材字數一樣(維基對照組),其他參數也都一樣,只改一個變數。
「網路論壇資料有什麼問題?」→ 錯字、縮寫、HTML、網址,要清理;錯字會變成「最像的字」。