> **示範版報告**:由 Claude 撰寫,用來示範「每一題寫到什麼程度」。不是要繳交的版本,請用自己的結果與文字重寫。 Running environment: Local — Windows 11 (10.0.26200), CPU: Intel Core i7-11800H (8 cores / 16 threads), RAM 16 GB Python version: 3.12.3 ##### 1. Which embedding model do you use? What are the pre-processing steps? What are the hyperparameter settings? (5%) Answer: **模型** - Part II:`glove-wiki-gigaword-100`(Stanford GloVe,維基百科+Gigaword 新聞約 60 億字訓練,40 萬字、100 維、全部小寫)。 - Part III:Gensim `Word2Vec`(Skip-gram),用 20% 維基百科自己訓練。 **抽樣**:以文章為單位,`random.seed(42)`,每篇擲一次亂數,`r < 0.2` 就留下(1,124,733 / 5,623,655 篇)。同一個亂數同時產生 5%、10% 子集,所以 5% ⊂ 10% ⊂ 20%。直接串流讀 11 個 `.gz`,不解壓、不合併,記憶體只放一篇文章。 **前處理** - 做了:只保留 `[a-z]+` 的字(助教資料已小寫、去標點;非英文字只占約 0.4%);字典只留最常見的 30 萬字(`max_final_vocab`)。 - **刻意沒做:移除停用詞**——考卷有 206 題含 NLTK 停用詞(family 的 he/she/his/her、currency 的 won);第 5 題實驗顯示移除後 family 從 67.19% 掉到 50.20%。 - **刻意沒做:詞形還原**——語法類考的就是字形變化(bigger、biggest、cars),還原會讓答案消失。 **超參數**:`vector_size=100`(與 GloVe-100 相同,方便公平比較)、`window=5`、`sg=1`(Skip-gram)、`negative=5`、`sample=1e-3`、`min_count=5`、`max_final_vocab=300000`、`epochs=5`、`workers=15`、`seed=42`。20% 維基共 666,053,126 字,訓練 36.9 分鐘,字典 299,405 字。 **答題**:3CosAdd(`most_similar(positive=[b, c], negative=[a])`,自動排除題目三個字),題目先轉小寫;題目字不在字典中則算答錯(本次 0 題)。 ##### 2. What will the performance be like if you sample 5%, 10% and 20% of wiki text in TODO4? (10%, 3% for each) Answer: | | 5% | 10% | 20% | |---|---|---|---| | 字數 | 1.66 億 | 3.33 億 | 6.66 億 | | 訓練時間 | 9.1 min | 18.4 min | 36.9 min | | **Overall** | 45.22 | 46.87 | **48.29** | | Semantic | 53.93 | 54.26 | 55.60 | | Syntactic | 37.99 | 40.74 | 42.21 | | superlative | 16.76 | 22.82 | 25.40 | | comparative | 43.09 | 51.13 | 54.88 | | OOV 題數 | 107 | 0 | 0 | - **越多越好,但邊際效益遞減**:資料 ×4、時間 ×4,整體只 +3.07。常見字在 5% 時座標就已穩定,多出的資料主要幫到少見字。 - **語法類進步比語意類大**(+4.22 vs +1.67),最高級 +8.6:biggest、worst 等字形本來就少見,需要更多出現次數。 - **5% 有 107 題 OOV**:部分字出現不到 `min_count=5` 次。 - 部分小類不單調(capital-common-countries 79.25→73.72)。同設定重跑 20% 兩次,整體 48.21 vs 48.29,但 comparative 45.95 vs 54.88——多執行緒訓練有隨機性,題數少的小類波動大,**1~2 點的差距不應過度解讀**。 ##### 3. What is the performance for different categories or sub-categories when trained on different corpora? (15%) 3.1. Present your results. (5%) Answer: 語料:SemEval 2016/2017 Task 3 論壇問答(Qatar Living)。為了把「資料量」和「內容種類」分開,另從 5% 維基切出**同樣字數(7,292 萬字)**的對照組,兩者用完全相同的參數訓練。 | | Wiki control | Forum | |---|---|---| | **Overall** | **41.66** | 26.05 | | Semantic | 46.07 | 12.37 | | Syntactic | 38.00 | 37.41 | | capital-world | 54.47 | 12.00 | | city-in-state | 34.29 | 2.51 | | nationality-adjective | 75.48 | 22.01 | | family | 63.24 | 60.67 | | comparative | 53.45 | **65.54** | | superlative | 19.25 | **43.58** | | present-participle | 31.16 | **52.18** | | plural-verbs | 34.71 | **46.32** | | OOV 題數 | 169 | 3,510 | 答案覆蓋率(四個字都在字典中的比例):capital-world 98.3% vs **48.6%**、currency 86.8% vs **39.0%**、city-in-state 100% vs 68.3%。 3.2. Introduce the corpus you selected and explain what are the differences between the Wikipedia corpus and your corpus. (including data size, topic difference, structural difference … ) (5%) Answer: - **是什麼**:卡達生活論壇的發問與留言,189,941 個討論串、2,118,254 則貼文;只取標題、內文、留言三個欄位,刪除 HTML 與網址後,用與維基相同的規則(小寫、2~15 字母)斷詞。 - **資料量**:72,919,300 字,約為 20% 維基的 1/9;因此另做同字數的維基對照組。字典 100,310 字(對照組 224,050)。 - **主題**:維基涵蓋歷史、地理、人物、科學;論壇集中在簽證、工作、薪水、租屋、購物等在地生活。 - **結構與文體**:維基是編輯校稿過的長篇說明文;論壇是短貼文、口語、問句多、錯字與縮寫多(salary 的鄰居是 slary、salry、sallary;visa 的鄰居是 iqama、rp)。 3.3. Explain why the performance increases or decreases. (5%) Answer: 在**資料量相同**的前提下,差異來自內容: - **語意類大輸(46.07 → 12.37)**:論壇很少談世界首都、美國州名、國籍。每百萬字出現次數:capital 160.4 vs 43.2、illinois 90.0 vs 1.1、albanian 13.4 vs 0.8。很多答案根本不在字典(覆蓋率 48.6%);就算在字典中,也很少出現在「X 是 Y 的首都」這種前後文,關係學不起來。 - **語法類打平,但比較級、最高級、-ing、第三人稱動詞反而贏**:網友常寫 better(8.5 倍)、cheapest(28.6 倍)、looking(12.1 倍)、going(8.8 倍)、goes(3.5 倍)。字形出現越多,座標越準。 - **錯字成為「最像的字」**:錯字與正確字的前後文完全相同,而詞向量只看前後文——這說明詞向量學的是分布,而非字義。 - 結論:**語料的主題與文體決定詞向量學到哪些關係**;要讓某類關係學好,語料裡就要有大量該類的用法。 ##### 4. Select a few words and use their embeddings to retrieve the five most similar words. What do you observe? (10%) Answer: 挑字原則:考卷字(king)、老師提到的例子(cat)、一字多義(apple、bank)、反義測試(good)、專有名詞(taiwan)、一般名詞(computer)。 | 字 | GloVe | Wiki 20% | |---|---|---| | king | prince, queen, son, brother, monarch | nangklao, prince, queen, suriyothai, throne | | cat | dog, rabbit, cats, monkey, pet | dog, rabbit, pet, sourpuss, mouse | | apple | microsoft, ibm, intel, software, dell | blackberry, iphone, tvos, raspberry, xelibri | | bank | banks, banking, credit, investment, financial | savings, bancorp, guaranty, dfcu, bancorporation | | good | better, sure, really, kind, very | sure, **bad**, tough, better, decent | | taiwan | mainland, china, taiwanese, taipei, hong | china, guangdong, taipei, hainan, japan | | computer | computers, software, technology, pc, hardware | computers, software, computing, mainframe, hardware | 觀察: - **反義詞很近**:good 的第二名是 bad——兩者前後文相同(「a ___ movie」),詞向量分不出正反。 - **一字多義被混在一起**:apple 同時靠近手機(blackberry、iphone)與水果(raspberry);bank 只剩金融義,河岸義被較常見的用法蓋過。每個字只有一個向量,是靜態詞向量的根本限制(BERT 等上下文模型才能解決)。 - **語料偏差直接反映在鄰居**:king 的第一名是泰國國王 nangklao;cat 的鄰居 sourpuss,回查語料發現是卡通貓角色(「sourpuss cranky cat who hates mondays」)——驗證了老師說的「貓的鄰居不一定是貓」。 - GloVe 的相似度普遍較高(0.8~0.9 vs 0.7~0.8),鄰居也較「一般」,反映其訓練資料量大約 9 倍。 ##### 5. … Anything that can strengthen your report. (5%) Answer: **(a) 移除停用詞的實驗(5% 維基)**:整體 45.22 → 45.03 幾乎不變,但 family 67.19 → 50.20、plural-verbs 38.16 → 27.01、comparative 43.09 → 37.46;地理類反而上升(nationality 76.99 → 82.05)。整體分數掩蓋了小類的此消彼長:停用詞既是 family 的答案、也是語法線索;移除後首都與國家在視窗中更靠近,地理關係反而好學。**前處理沒有絕對好壞,取決於要評估的任務。** **(b) 超參數(5% 維基,一次只改一個)** | 設定 | Overall | Semantic | Syntactic | |---|---|---|---| | 基準(Skip-gram, window 5, 100 維) | 45.22 | 53.93 | 37.99 | | CBOW | 52.71 | 59.16 | 47.34 | | window=10 | 41.86 | 50.70 | 34.51 | | vector_size=300 | **56.95** | **68.16** | 47.63 | - 300 維用 5% 資料就贏過 100 維的 20%(48.29),語意類甚至超過 GloVe-100(65.34):在此規模下,**向量容量比資料量更關鍵**。 - CBOW 在語法類大勝(comparative 43→68、superlative 17→37):CBOW 以上下文預測中間字,對「此位置該放哪種字形」特別敏感。 - window 變大反而變差(family −12.5):視窗越大越偏向主題相關(king–kingdom),而非功能相似(king–queen)。 - 這些差距(7~12 點)遠大於隨機波動(整體約 0.1 點),結論可信。 **(c) Top-k 命中率**:Wiki 20% 的 top-1/3/5/10 為 48.29 / 62.27 / 67.01 / 72.77(GloVe 63.11 / 73.68 / 77.73 / 82.01)。很多錯題只是「差一點」。 **(d) 錯題分析(Wiki 20%,10,107 題錯)**:0 題 OOV、4,785 題(47%)正解在第 2~10 名。錯法:拼法變體(argentinian vs argentinean、belarusian vs belorussian——其實是考卷的拼法限制)、方向相反(large → smaller)、同類選錯(Bishkek → tajikistan)、近親字(father → stepmother)、語料偏差(child → abusers)。 **(e) 3CosMul**:同一份 Wiki 20% 向量改用 3CosMul,整體 48.29 → 44.61、各小類皆下降;文獻中 3CosMul 常較好,但在本設定不成立。 **(f) PCA vs t-SNE**:PCA 的第二主成分大致是性別軸(女性詞在上、男性詞在下,she/her 例外地靠近 he/his);t-SNE 則把每對(boy/girl、groom/bride)貼得很緊、分群清楚。PCA 保留全域方向,t-SNE 保留局部鄰居。 **(g) 隨機性**:同設定兩次訓練,整體差 0.08,但 comparative 差 8.9 點,比較實驗時需注意。 ##### 6. Generative AI Usage Answer: 本示範筆記本的程式(標有 `# [Generative AI]` 的每一格)與本報告,皆由 Claude(Anthropic)產生並在本機實際執行;所有數字與圖表皆來自本筆記本的執行輸出。這份是學習用示範,實際繳交時應由學生自行重做並如實說明 AI 的使用範圍。