我(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 題;用自動工具核對報告裡每一個數字都能在輸出找到;寫這份說明;再換兩批新審查員各檢查一次(三輪共 8 位,紀錄 05a~05h);最後依教學文件規範再審這份說明。報告、本文件、審查紀錄

我改了模板的哪些格子

老師規定:只准改「載入資料」的部分,亂改扣 5 分。所以我把每一格都分類清楚(下面用 Jupyter 畫面左邊的 In [n] 標示;報告格是文字格,沒有 In 編號):

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

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

表裡有些詞(window、雜訊、前 k 名⋯)要到第 6、12 節才會詳細講;看不懂先查用語表,或先跳過。

決定選了什麼為什麼
在哪裡跑你的筆電,不用 Colab你的 CPU 16 執行緒,Colab 免費版通常 2 核;Colab 跑久會斷線、輸出會不見(後兩項是外部知識)。
怎麼讀維基直接讀壓縮檔、一行一行讀不吃硬碟、不吃記憶體(老師課堂上提醒過不要整份載入再挑,W3 01:55:49)。
怎麼抽樣以篇為單位、固定亂數種子、5%⊂10%⊂20%結果能重現;三份教材只差在字數,第 2 題比較才公平。
大小寫題目全部轉小寫GloVe 字典和維基教材都是小寫,不轉會查不到字。
前處理只留英文字母;不刪停用詞、不做詞形還原停用詞和字形變化就是考卷的答案。停用詞有實驗(第 12 節實驗 ②);詞形還原沒有做實驗,是看考卷內容推的(例:bigger 還原成 big,比較級的答案就不見了)。
怎麼學Skip-gram、100 維、window 5、5 輪老師投影片的重點是 Skip-gram;100 維跟 GloVe 一樣,比較才公平。
字典大小最多 30 萬字作業規格 PDF p28 建議的「只保留最高頻的字」;字典太大會變慢、容易猜到冷門字。
第 3 題的教材卡達生活論壇問答跟維基差很多(推論:口語問答 vs 百科;沒有跟其他候選教材比較過)、大小適中、可直接下載。
第 3 題怎麼比多做一份維基對照組(跟論壇一樣多字)把「教材字數」和「教材種類」兩個因素分開(控制變因)。
加分實驗停用詞、調參數、前 k 名正確率、錯題分析、換公式、PCA 對照、另外換 3 個種子重跑(連同原本共 4 次,量雜訊)每一個都回答一個老師上課提過或考試可能問的問題。

產出的檔案

檔案用途
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\審查紀錄
所以對你的影響是:考試可能問「你為什麼這樣做」,上面技術決定表的「為什麼」欄就是答案。報告第 6 題也要照這一節如實寫出 AI 做了什麼。

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

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

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

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

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

站 4、站 5 在投影片上的頁序是反過來的(Bengio 在 p64、分布假說在 p70);這裡照「先有想法、再用神經網路做」的順序排。

進階:站 2、站 4 的專有名詞

所以作業的位置是:站 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% 裡)、同參數設定(但 gensim 自動把收錄門檻調成 9/16/30 次,見第 6 節例外 1)
教材種類的影響維基 → 論壇字數一樣(各 7,292 萬字)、同前處理、同參數設定(但兩本字典收的字數不同:10 萬 vs 22 萬,見第 10 節)
停用詞的影響刪 / 不刪同一份 5% 維基、同參數
訓練設定的影響CBOW、window、維度(一次改一個)同一份 5% 維基
算答案公式的影響3CosAdd → 3CosMul同一本字典

最後還要確認一件事:同樣設定換 4 個亂數種子各跑一次,正確率差多少?這個差叫「雜訊」;差距比雜訊還小的,就不能下結論(第 9 節有手算,第 12 節實驗 ①)。

所以對你的影響是
考試如果問「你的實驗怎麼設計的」,答「我一次只改一個因素,例如第 3 題我讓論壇和維基的字數一樣,這樣差異主要來自教材種類(兩本字典收的字數不同,這個因素沒有完全排除)」——這就是作業要的分析。