我(Claude)做了什麼:完整工作清單

結論:這份作業的程式、執行、報告文字都是我做的,在你的電腦上實際跑完。下面照時間順序列出每一步、每一個我自己下的決定和理由。你要交出去,就要知道這些,因為報告第 6 題要如實寫出來,考試也可能問「你為什麼這樣做」。

八個階段

階段做了什麼產出
1 讀規定讀完作業 PDF 37 頁、程式模板 32 格、助教說明影片(24 分鐘,轉成逐字稿)、老師 W2/W3 上課逐字稿;把 2025 和 2026 兩版 PDF 逐行比對,找出 6 個說法互相打架的地方。HW1_作業介紹.html
2 準備環境與資料建一個獨立的 Python 3.12.3 環境;裝 gensim 4.4.0 等套件;下載維基百科 11 個壓縮檔(6.93 GB)、GloVe 詞向量(128 MB)、卡達論壇語料(234 MB)。.venv\、data\、requirements.txt
3 寫程式把老師的模板複製一份,只改 TODO 格和載入資料的格子(其他格一字不差);在報告下面加上報告第 2~5 題的實驗程式。第一版筆記本
4 彩排+第一次正式執行先用很少的資料把整本跑一遍,修掉 4 個問題;再用完整資料跑完整本(第一版,0 錯誤)。第一版結果
5 第一輪審查派 4 位互不相干的審查員,只給他們老師的原始資料(PDF、模板、助教影片、投影片、逐字稿),各自從一個角度挑毛病:①老師規章 ②課程內容正確性 ③假扮助教打分 ④數字逐一核對(728 個數字)。審查紀錄 05a~05d
6 依審查修正AI 標註改成如實寫法;把模板的提示說明放回去;改正 4 處講錯的觀念(apple、冷門字、跨模型比分數、min_count);新增 6 組證據實驗(雜訊量測、冷門字次數、只看常見字的鄰居、apple 前 15 名、回教材查 sourpuss、只算兩本字典都有的題目)。繳交版程式
7 繳交版從頭重跑整本從第一格跑到最後一格,執行編號連續,報告每一個說法都有自己的輸出當證據。NLP_HW1_submission_draft.ipynb
8 寫報告、說明、再審查用最終數字寫報告 6 題;用自動工具核對報告裡每一個數字都能在輸出找到;寫這份說明;再換一批新審查員檢查一次。報告、本文件、審查紀錄

我改了模板的哪些格子

老師規定:只准改「載入資料」的部分,亂改扣 5 分。所以我把每一格都分類清楚(這裡的「第 N 格」是格子在模板裡的位置,從 0 開始數;跟 Jupyter 畫面左邊的執行序號 In [n] 不一樣):

格子原本是什麼我改成什麼屬於
第 2 格!wget 下載考卷Python 的 urllib 下載同一個網址(Windows 沒有 wget)載入資料
第 18~22 格!gdown、!gunzip、!cat、!headPython 下載;不解壓不合併、直接讀壓縮檔(省硬碟)載入資料
第 5、13、15、24、25、27、28 格TODO1~7 的空格填入答案程式;模板原本的註解和 Hints 說明全部保留,程式接在後面TODO
第 27 格(TODO6)—多印了成績(模板在 TODO6 後面沒有評分格,不印看不到結果)TODO 格內
第 29 格報告題目填入答案報告
第 31 格# Write your code here第一行保留,下面接第 3 題的共用工具第 3 題程式區
每一格我寫的程式—最上面加 # [Generative AI] The code in this cell was generated by Claude (Anthropic).(資料載入格另外保留模板原本的說明註解)規定要求的 AI 標註
第 32 格以後(模板沒有)第 2~5 題的實驗、總表、執行環境報告下面新增

我自己下的技術決定(每一個都有理由)

決定選了什麼為什麼
在哪裡跑你的筆電,不用 Colab你的 CPU 16 執行緒,Colab 免費版通常 2 核;Colab 跑久會斷線、輸出會不見。
怎麼讀維基直接讀壓縮檔、一行一行讀不吃硬碟、不吃記憶體(老師課堂上特別警告過記憶體爆掉的寫法)。
怎麼抽樣以篇為單位、固定亂數種子、5%⊂10%⊂20%結果能重現;三份資料只差在量,第 2 題比較才公平。
大小寫題目全部轉小寫GloVe 和維基資料都是小寫,不轉會查不到字。
前處理只留英文字母;不刪停用詞、不做詞形還原停用詞和字形變化就是考卷的答案(第 12 節有實驗證明)。
模型Skip-gram、100 維、window 5、5 輪老師投影片的重點是 Skip-gram;100 維跟 GloVe 一樣,比較才公平。
字典大小最多 30 萬字老師建議的「只留高頻字」;字典太大會變慢、容易猜到冷門字。
第 3 題的語料卡達生活論壇問答跟維基差最多(口語 vs 百科)、大小適中、可直接下載。
第 3 題怎麼比多做一份一樣大小的維基對照組把「資料量」和「內容種類」兩個因素分開(控制變因)。
加分實驗停用詞、調參數、top-k、錯題分析、換公式、PCA 對照、換種子重跑 3 次(量雜訊)每一個都回答一個老師上課提過或考試可能問的問題。

產出的檔案

檔案用途
HW1\示範實作\NLP_HW1_submission_draft.ipynb繳交版筆記本(程式+輸出+報告);交之前改成 NLP_HW1_學校_學號.ipynb
HW1\示範實作\NLP_HW1_DEMO_示範.ipynb第一版(審查前),留作對照,不交
HW1\示範實作\requirements.txt套件清單
HW1\HW1_一條龍說明.html本文件
HW1\HW1_作業介紹.html規定、扣分、繳交檢查清單
HW1\_work\2026-10-04-nlp-hw1-submission\審查紀錄

邏輯框架:這份作業在整門課的哪裡、到底在證明什麼

結論:這門課前三週在回答一個問題:「怎麼讓電腦知道字的意思?」這份作業就是讓你親手驗證課堂上的答案(詞向量),並找出「什麼決定詞向量好不好」。整份作業的實驗,都是在一次改一個因素、看結果怎麼變。

第一層:這份作業在課程地圖上的位置

老師前三週的投影片,是一條「表示字的方法越來越好」的路。下表照 W1 投影片的頁序排(老師 W3 開頭口頭回顧時,是從 one-hot 講到 TF-IDF):

站方法白話問題在哪投影片
1TF-IDF、BM25(向量空間模型)每個字一格,打分數(常出現但不是到處都有的字比較重要)一字一格,「計程車」和「的士」對不起來(同義詞問題)W1 p48–53、p60–61
2Bag of Words、one-hot每個字一個格子,有出現就打勾cat 和 dog 跟 cat 和 truck 一樣「不像」,電腦看不出誰跟誰相近W1 p55–58
3字典式解法(WordNet)用人工編的同義詞、上下位詞字典表示意思不看上下文、缺新字、要人維護W1 p62–63
4神經網路語言模型(Bengio 2003)讓神經網路學「下一個字」,順便學出每個字連續的座標—W1 p64–68
5分布假說→ LSA(共現矩陣+SVD 降維);另一種是 PPMI「看一個字出現在什麼前後文,就知道它是什麼字」(Firth 1957);數字和字一起出現的次數再壓縮矩陣有「字數×字數」那麼大、很稀疏、加一個字要全部重算W1 p70–80、W2 p24–27
6Word2Vec(Skip-gram)← 作業自己訓練的用中間的字猜旁邊的字,練出座標一個字只有一組座標W1 p81–90、W2 p32–38
7GloVe← 作業借來用的、FastTextGloVe 用整份資料的共現統計;FastText 看字的拼法片段同上W1 p91–93
8上下文詞向量(BERT、GPT)← 之後的課同一個字在不同句子給不同座標—W2 p39–40

所以作業的位置是:站 6、7。你在作業裡看到的缺點(apple 的鄰居只剩公司的意思、bank 的兩種意思可能混在同一組座標裡),正是站 8 要解決的問題。考試如果問「詞向量的限制是什麼、後來怎麼解決」,就是要你把這條路講出來。

第二層:作業在證明什麼——一張「因素圖」

① 讀多少(資料量)報告第 2 題:5%/10%/20% ② 讀什麼(資料種類)報告第 3 題:論壇 vs 維基 ③ 怎麼整理(前處理)第 1、5 題:停用詞實驗 ④ 怎麼學(模型設定)第 5 題:CBOW、window、維度 詞向量(字典)好不好? 量化:詞類比考試TODO2/6:19,544 題正確率 看圖:t-SNE/PCATODO3/7、第 5 題 看鄰居:最像的字第 4 題

左邊是會影響字典好壞的 4 個因素,右邊是檢查字典好壞的 3 種方法。報告的每一題,都是「動左邊一個因素,從右邊看結果」。

第三層:怎樣的實驗才算數——控制變因

想知道「某個因素有沒有影響」,就要一次只改那一個,其他全部一樣。這叫控制變因。這份作業每個實驗都照這個原則設計:

想知道只改了其他保持一樣
資料量的影響5% → 10% → 20%同一批文章(5% 包含在 10% 裡)、同參數
資料種類的影響維基 → 論壇字數一樣(各 7,292 萬字)、同前處理、同參數
停用詞的影響刪 / 不刪同一份 5% 維基、同參數
模型設定的影響CBOW、window、維度(一次改一個)同一份 5% 維基
算答案公式的影響3CosAdd → 3CosMul同一本字典

最後還要確認一件事:同樣設定跑 4 次,結果會晃多少?差距比「晃動」還小的,就不能下結論(第 12 節實驗 ①)。

所以對你的影響是
考試如果問「你的實驗怎麼設計的」,答「我一次只改一個因素,例如第 3 題我讓論壇和維基的字數一樣,這樣差異只能來自內容種類」——這就是老師說的 insight。

總結論:整份作業學到的 8 件事

結論:詞向量真的能抓到字的關係,但它學的是「誰跟誰一起出現」,所以讀什麼、讀多少、怎麼整理、怎麼學都會改變它學到的東西;它也有一字一向量的根本限制。下面 8 件事,每一件都有實驗數字當證據。

#結論證據(本作業的數字)對應投影片
1字可以變成有意義的座標,關係可以用加減算出來GloVe 答對 63.11%;t-SNE 圖上男女配對黏在一起、按角色分群W2 p30(Washington − U.S. + U.K. = London)
2座標是從「一起出現」學來的,不是從「意思」good 的鄰居有 bad;論壇裡 salary 的鄰居是錯字 slary;cat 的鄰居是卡通貓 sourpussW1 p70、W2 p24(分布假說)
3資料越多越好,但越來越沒感5%→10%→20%:45.22→46.87→48.29;資料 ×4 只多 3 分;少見字形(最高級)進步最多—
4資料種類決定學到哪些關係一樣大小下,論壇語意類 12.37 vs 維基 46.07;但最高級 43.58 vs 19.25。cheapest 在論壇出現的頻率是維基的 28.6 倍、illinois 只有 0.01 倍W1 p93(It depends)
5前處理沒有絕對的好壞,要看任務刪停用詞:整體幾乎不變(45.22→45.03),家人類 −17、地理類 +3~5W1 p47(When to remove stop words? Avoid to broke the semantics)
6模型設定的影響可以比資料量還大300 維只用 5% 資料(56.95)就贏過 100 維的 20%(48.29);CBOW +7.5;window 10 −3.4W1 p81–90
7評分方式本身也有限制前 10 名命中率比第 1 名高 24.5 分;有些「錯」只是拼法不同(argentinian/argentinean);同設定重跑,小類可差 9 分;3CosMul 反而較差—
8一字一向量是根本限制apple 同時靠近手機和水果;bank 只剩銀行,沒有河岸W1 p60(bank 一詞多義)、W2 p39(上下文詞向量)
考前背這一句
詞向量用「分布假說」把字變成座標,能用加減做類比;但它學的是共同出現而不是意思,所以受資料的量、種類、前處理與模型設定影響,也分不出一字多義——這就是後來需要 BERT 這類上下文詞向量的原因。