# 05g 嚴格助教評分(第二輪):NLP HW1 Word Analogy - 評分對象:`示範實作\NLP_HW1_submission_draft.ipynb`(55 格,已執行,執行序號 1–43 連號;報告在第 29 格) - 評分依據:只用 `原始檔_2026\NLP_HW1_word_emb.pdf`(p.31 評分、p.32–36 繳交與罰則)+ 助教說明影片逐字稿 14:28–20:15 - 對照:模板 `原始檔_2026\main.ipynb`(32 格)、上一輪評分 `05c-review-grader.md`(94.5 分) - 角色:今年題目較難、評分偏主觀(像改作文)、會先用 AI 篩格式的嚴格助教 - 依指示不扣分、但列為必修:檔名/學校代碼/學號、Q6 的 `⟦WHAT_I_DID⟧` --- ## 結論先講 > **我會給 98/100(程式 54/55,報告 44/45,罰則 0)。** > 上一輪 10 個扣分點,**7 個完全解決、2 個部分解決、1 個沒動**(TODO5 前處理只有一條規則)。 > 剩下的 2 分掉在:TODO5 前處理(−1)、Q3.2 主題與結構沒量化(−0.5)、Q4 的 taiwan/computer 沒寫觀察+sourpuss 解讀有瑕疵(−0.5)。 > 這三處裡,**Q3.2 和 Q4 只要改報告文字就能補回,不用重跑**。 報告裡的數字我逐一跟輸出核對過,**全部一致**,沒有找到「報告說了、notebook 裡沒有」的句子。這是跟上一輪最大的差別。 --- ## 一、逐項評分表 ### 1-1 程式(55%) | 項目 | 滿分 | 給分 | 理由(格號) | |---|---|---|---| | TODO1 轉 DataFrame | 5 | 5 | 第 5 格。用 `": "` 計數,前 5 個標題是 Semantic。印出 19,544 題;第 7 格 `df.head()` 格式正確。 | | TODO2 預訓練向量答題 | 10 | 10 | 第 13 格。轉小寫、處理 OOV(字典裡沒有的字)、`most_similar(positive=[b,c], negative=[a])`。**Hints 字串已補回**,模板文字完整保留。第 14 格:Semantic 65.34%、Syntactic 61.26%。 | | TODO3 t-SNE(GloVe) | 5 | 5 | 第 15 格,有圖。perplexity=15 有寫理由。標籤有幾處重疊(grandma/grandpa、bride/groom),不扣。 | | TODO4 抽 20% | 5 | 5 | 第 24 格。以文章為單位、seed 42,1,124,733/5,623,655=20.00%。5% ⊂ 10% ⊂ 20% 的巢狀設計很好。外層 `with open(wiki_txt_path)` 改成讀 11 個 `.gz`,有註解說明,屬於資料載入。 | | TODO5 前處理+訓練 | 10 | **9** | 第 25 格。訓練完成,輸出完整(666,053,126 字、37.9 分鐘、字典 299,405、effective min_count 30)。**扣 1 分(跟上一輪相同,沒動)**:前處理仍然只有「只留 `[a-z]+`」一條(實際只刪 0.72%)+字典上限。停用詞有實驗(第 44 格),但詞形還原只有說理、沒有實驗。助教說「前處理是各位自行發揮的,算在 TODO5 裡面」「各位可以做一定的嘗試」(逐字稿 14:28、15:18),相對評分下會輸給多試一兩種的人。 | | TODO6 自訓向量答題 | 10 | 10 | 第 27 格。Hints 已補回;自己補了評分輸出。Semantic 56.70%、Syntactic 41.48%、OOV 0。 | | TODO7 t-SNE(自訓) | 10 | 10 | 第 28 格,有圖。圖標題跟 TODO3 一樣(模板寫死),不扣。 | | **小計** | **55** | **54** | | ### 1-2 報告(45%,第 29 格) | 項目 | 滿分 | 給分 | 理由 | |---|---|---|---| | Q1 模型/前處理/超參數 | 5 | 5 | 模型、抽樣、前處理、超參數全列,連 effective min_count(實際字典門檻 9/16/30)都說明。上一輪的「0.4% 沒證據」已改成 0.72%,第 25 格有印出。停用詞與詞形還原的取捨有理由,引用的上課時間點我抽查了三個(W2 01:39:50、W3 01:22:17、W3 01:12:12),**逐字稿裡真的有**。 | | Q2 5%/10%/20% | 10 | 10 | 三個比例的字數、門檻、時間、分數都有(第 38 格)。最大的進步:**先量雜訊再下結論**——每個差距旁邊放「4 個種子的最大落差」,Semantic +1.35 小於雜訊 1.80 就明說「不能下結論」。上一輪的自相矛盾已消失。推論句都有標「(推論)」。 | | Q3.1 呈現結果 | 5 | 5 | 14 個小類全列(第 34 格),不再挑數字。有同字數維基對照組、答案覆蓋率,**還補了「兩本字典都查得到的 15,684 題」的公平比較**。 | | Q3.2 語料介紹與差異 | 5 | **4.5** | 出處已補(gensim-data 與 SemEval 2016 Task 3 網址),資料量有數字。**扣 0.5**:題目點名「data size, topic difference, structural difference」,後兩項仍只有文字描述。結構差異其實已經算得出來:維基每行(一篇文章)約 592 字(666,053,126/1,124,733),論壇每行(一則貼文)約 34 字(72,919,300/2,118,254),這直接決定 window=5 看到的上下文。主題可以用第 32 格已印出的 `RELQ_CATEGORY` 欄位量化。 | | Q3.3 解釋升降 | 5 | 5 | 每百萬字頻率表(第 36 格)+公平子集(第 34 格)把「字不在字典」和「字在但關係沒學好」分開了,論壇 Semantic 22.10 vs 52.80。還主動說出「論壇字典只有一半大、干擾候選字少」這個沒排除的因素。這題是全份最強的一題。 | | Q4 五個字的近鄰 | 10 | **9.5** | 7 個字、兩個模型、挑字原則、冷門字出現次數、`restrict_vocab` 對照、多義字相似度,非常完整。apple 解讀已改正(raspberry=Raspberry Pi)、跨模型不比餘弦值、sourpuss 有回查語料(第 41 格)。**扣 0.5**:(1) taiwan、computer 列在表裡卻**沒有任何一句觀察**(上一輪就指出,沒改)。(2) sourpuss:第 41 格印出的 5 處上下文,只有 2 處是卡通(另外是詞源、節目集名、樂團名),報告只引一處就說「是卡通角色」,有點以偏概全。而且 Sourpuss 據我所知本身就是 Terrytoons 卡通裡的**貓**(這點 notebook 沒查證,我不確定),那它接在「貓的鄰居不一定是貓」後面就用反了。(3) 小瑕疵:「都接近字典門檻 30」,但 chlothar 76、bodawpaya 77 是門檻的 2.5 倍。 | | Q5 加強報告 | 5 | 5 | (a)–(h) 八組,每組標格號、跟程式一一對應(上一輪的對不起來已修好)。(a) 先量雜訊、後面全部拿雜訊當尺,是整份報告的骨架,評分者一定看得出來。(b) 停用詞實驗把「整體沒差、小類此消彼長」講清楚。**風險(不扣)**:(g) 說 PCA 縱軸「大致區分男女」,已承認 she/her/woman 例外,但第 49 格圖上 **queen 在上方(1.01)、dad(−0.67)和 grandpa(−0.61)在下方**,這三個直接反駁「性別軸」。看圖的助教可能扣 0.5。另外 (c) 說「本設定 CBOW 全面較好」,但 capital-common −2.37、nationality −1.81、opposite −0.37 是下降(在雜訊內),「全面」要改成「兩大類都較好」。 | | Q6 Generative AI Usage | 不計分(漏寫 −10) | 0 扣分 | 有寫、程式每格都有 `# [Generative AI]` 註解,符合 p.35「程式註解+報告」兩處。`⟦WHAT_I_DID⟧` 必須填,見第五節。 | | **小計** | **45** | **44** | | ### 1-3 罰則(p.36) | 規則 | 罰分 | 現況 | 判定 | |---|---|---|---| | notebook 檔名 `NLP_HW1_學校_學號.ipynb` | −5 | `NLP_HW1_submission_draft.ipynb` | 依指示不扣;**繳交前必改** | | zip 檔名 `NLP_HW1_學校_學號.zip` | −5 | 尚未打包 | 依指示不扣;**繳交前必做** | | 附 requirements.txt | −5 | 有,10 個套件,含這次新用到的 nltk;版本跟第 54 格印出的一致 | 不扣 | | 報告要有 Generative AI usage | −10 | 有 | 不扣(`⟦WHAT_I_DID⟧` 要填) | | 報告要有 Python 版本 | −5 | 3.12.3+OS/CPU/RAM,符合 p.34 本機格式 | 不扣 | | 不得修改模板(只准改資料載入) | −5 | Hints 已補回。我逐格比對:非資料載入的模板文字**全部保留**;有改的只有第 2、18–22、24 格,都是讀檔,且每格有 `[Data loading changed]` 註解 | 不扣,風險低 | | 與他人高度相似 | −100(兩人) | 見第五節 | 無法判斷,有特定風險 | ### 1-4 總分 | | 滿分 | 給分 | |---|---|---| | 程式 | 55 | 54 | | 報告 | 45 | 44 | | 罰則 | — | 0(檔名改好的前提下) | | **合計** | **100** | **98** | 如果助教看圖對 Q5(g) 較真,會是 97.5。整數給分大概 97–98。 --- ## 二、上一輪(05c)扣分點的處理狀態 | # | 05c 扣分點 | 狀態 | 證據 | |---|---|---|---| | 1 | 檔名與 zip 名(−5~−10) | **未解決**(依指示是占位) | 檔名仍是 `NLP_HW1_submission_draft.ipynb` | | 2 | 刪了 TODO2/TODO6 的 Hints(−5 風險) | **已解決** | 第 13、27 格的 Hints 字串原樣補回;模板逐行比對無缺 | | 3 | Q4 apple 解讀錯、GloVe 相似度比較錯、sourpuss 無證據(−2) | **大致解決** | apple 改成 Raspberry Pi;加了「分數尺度不同,不互相比」;第 41 格有回查語料。但 sourpuss 的解讀有新瑕疵(見 Q4) | | 4 | Q2 重跑數字無證據、隨機性結論矛盾(−1) | **已解決** | 改成 4 個種子的雜訊實驗(第 43 格),每個差距都跟雜訊比 | | 5 | TODO5 前處理只有一條規則(−1) | **未解決** | 第 25 格仍只有 `[a-z]+` | | 6 | Q3.1 報告表挑列(−0.5) | **已解決** | 14 個小類全列,past-tense 的落後也寫了 | | 7 | Q3.2 沒出處、主題與結構沒量化(−0.5) | **部分解決** | 出處已補;主題、結構仍只有文字 | | 8 | Q3.3「在字典裡也學不好」無證據(−0.5) | **已解決** | 第 34 格公平子集 15,684 題 | | 9 | Q5 編號對不起來、「7~12 點」不對、PCA 例外不完整 | **編號、數字已解決;PCA 部分解決** | 補了 she/her/woman,但 queen、dad、grandpa 沒提 | | 10 | 第 36 格執行序號跳號 | **已解決** | 全份 1–43 連號,整份重跑 | | — | Q1「0.4%」無證據 | **已解決** | 改成 0.72%,第 25 格有印出 | | — | Q4 taiwan、computer 沒有觀察 | **未解決** | 觀察 1–5 都沒提這兩個字 | | — | Q6 示範版用語 | **已解決**(剩 `⟦WHAT_I_DID⟧`) | 第 29 格、程式註解都沒有「示範」字樣 | --- ## 三、剩下的扣分(依分數排序) 1. **【−5~−10,必修】檔名與 zip 名**。助教用 AI 篩格式,一定抓得到。 2. **【必修】Q6 的 `⟦WHAT_I_DID⟧`**。留著這個符號交出去,等於告訴助教報告是範本套出來的。 3. **【−1,TODO5】前處理只有一條規則**。要補需要重訓(見第四節第 7 項)。 4. **【−0.5,Q3.2】主題與結構差異沒量化**。改文字就能補。 5. **【−0.5,Q4】taiwan/computer 沒觀察+sourpuss 以偏概全**。改文字就能補。 6. **【0~−0.5,Q5(g)】PCA「性別軸」被圖上的 queen、dad、grandpa 反駁**。改文字就能補。 --- ## 四、還能加分的具體改法 **先講原則**:只改第 29 格(報告 markdown)**不需要重跑**,輸出不會變,執行序號也不會亂。前 6 項都屬於這種。 1. **Q4 補 taiwan、computer 各一句**(補 0.25–0.5)。例: - taiwan:兩個模型的鄰居幾乎都是中國地名(mainland、china、guangdong、hainan、fujian),反映英文語料多半在「兩岸/華南區域」的脈絡下提到台灣——鄰居反映的是**語料怎麼談論它**,不是它是什麼。 - computer:兩個模型的鄰居幾乎一樣(computers、software、hardware),是 7 個字裡最穩定的。常見、單一意思的字,兩個模型的結果就會一致;可以當其他字的對照組。 2. **Q4 改寫 sourpuss 那句**(補 0.25)。改成「5 處上下文中有 2 處是卡通角色,其餘是樂團名、詞源、節目名;它靠近 cat 很可能來自卡通那個用法」,並刪掉「呼應貓的鄰居不一定是貓」,或改舉 `restrict_vocab` 結果裡的 **mug**(第 41 格,cat 的第 5 名)——那才是「貓的鄰居不一定是貓」的例子(mug 為什麼靠近 cat,notebook 沒查,要寫「原因未查」)。「接近門檻 30」改成「只有幾十次」。 3. **Q3.2 補一行結構數字**(補 0.5)。全部用 notebook 已有的數字算:維基每篇約 592 字、論壇每則約 34 字;所以 window=5 在論壇裡常常一則貼文就看完了,在維基裡則永遠在同一篇長文裡。主題量化要加程式(`RELQ_CATEGORY` 前 5 名),只有在要重跑時才做。 4. **Q5(g) 改寫 PCA 那句**(避開 −0.5 風險)。誠實版:「PCA 第二軸**不是**乾淨的性別軸:queen 在上、dad 與 grandpa 在下。比較像把代名詞與王室字(he, his, she, king, queen)和口語親屬稱謂(mom, dad, grandma, grandpa)分開。」這反而是一個好觀察。 5. **Q5(c) 把「CBOW 全面較好」改成「Semantic、Syntactic 兩大類都較好(少數小類略降,在雜訊內)」**。 6. **Q6 兩處小字**:「All code in this notebook was generated by Claude」改成「All code added to the template」(模板原本的程式不是 Claude 寫的);「Every AI-generated cell starts with」改成「contains」(第 31 格的標註在第 2 行)。 7. **(要重跑才做)TODO5 補一個詞形還原實驗**,用 5% 維基、照 (b) 的格式放進 Q5,約 10–20 分鐘。這能補回 TODO5 的 1 分,也讓「不做詞形還原」從說理變成有數字。但整份 notebook 重跑要好幾個小時,**只有在剩下時間充裕時才做**。 8. **(要重跑才做,加分不大)Q2 補一句 OOV 的來源**。我另外數過:5% 的 107 題 OOV **全部在 capital-world(78 題)和 currency(29 題)**,只因為 denar(出現 3 次)和 belmopan(7 次)兩個字沒進字典。這表示 Semantic 的 +1.35 裡大約 1.2 分只是「字典補齊」,**反而強化了你「語意類沒有明確上升」的結論**。要放進報告就要有一格程式印出來,否則又變成「報告說了、notebook 裡沒有」。 ### 有沒有做太多?會不會傷害可讀性? **會,有一點。** 報告第 29 格約 12,000 字元、206 行、6 張表、69 列表格,Q5 一題就有 8 個小題。助教要改上百份,「像改作文」時讀得累會影響印象。建議(都不用重跑): - **刪 Q5(h)**:它只說「覆蓋率都是 100%」,Q1 已經寫了 OOV=0、(e) 也寫了 0 題 OOV,重複。 - **(e) 錯題分析縮成 3 類**(拼法變體、方向相反、近親字),各舉一例。 - **(f) 縮成一行**(3CosMul 全部下降,原因未驗證)。 - **每題開頭加一句粗體結論**,讓只掃第一行的助教也拿得到重點。例:Q2「資料多 4 倍,整體只多 2.3 分,而且只有語法類的上升超過雜訊。」 - **不要再加表格**。Q3.1 的 14 列表要留(題目要求完整呈現),其他新內容一律用一句話。 --- ## 五、Generative AI 揭露與語言風險 ### 5-1 揭露是否誠實、足夠 **誠實:是。足夠:填完 `⟦WHAT_I_DID⟧` 後就是。** - 符合 p.35 兩處要求:每格程式有 `# [Generative AI] The code in this cell was generated by Claude (Anthropic).`,報告 Q6 也寫了。 - 寫得非常坦白:程式全由 Claude 產生、Claude 在本機跑完整份、報告文字由 Claude 寫。p.35 只罰「用了沒寫」,**照實寫不會被扣分**。 - `⟦WHAT_I_DID⟧` 一定要填真的事。如果實際上你只做了「選語料方向、看過輸出、核對數字」,就寫這些;不要誇大。寫得比實際多,被抓到就等於「未如實說明」。 - 我抽查了報告引用的三個上課時間點,逐字稿裡真的有那些話。投影片頁碼(W1 p47、p60、p93、p94;W2 p39)我**沒有查證**,建議自己翻一次——AI 寫的引用若有一個錯,整份的可信度都會被打折。 ### 5-2 真正的風險(不在 PDF 的罰則表裡) 1. **主觀壓分(不確定會不會發生)**。Q6 寫明「報告文字由 Claude 撰寫」,助教在 Q3–Q5 這種主觀題可能下手重一點。PDF 沒這條,我無法確認。把 `⟦WHAT_I_DID⟧` 寫具體、再用自己的話改寫各題結論句,可以降低這個風險。 2. **相似度 −100(兩人都 0 分)**。TODO1–7 是大家都會寫的通用程式;如果有同學也請 Claude 做同一份作業,程式可能很像。這份 notebook 和 `_work` 資料夾**不要給任何同學看**。你的論壇語料+同字數對照組設計很獨特,報告部分撞到的機率低;程式部分風險較高。 3. **期末閉卷考「從作業得到的 insight」**。報告不是你寫的,考試時就要靠自己記得。最值得記的六件事:(1) 先量雜訊再比較;(2) 資料多 4 倍只多 2.3 分,邊際效益遞減;(3) 同樣字數,語料主題決定學到哪類關係(論壇首都爛、最高級好);(4) 錯字會變成最像的字(salary→slary);(5) 靜態詞向量一字一個向量,多義字被常見義主導(apple、bank);(6) 停用詞移除讓整體幾乎不變、小類卻大跌——只看總分會誤判。 ### 5-3 報告用繁體中文的風險 - **低。** PDF 沒規定語言,助教說明影片全程中文,題目標題保留英文原文。 - 不確定的地方:助教若用英文提示詞讓 AI 先篩格式,中文內容理論上不受影響,但我無法確認他們的工具。 - 現在的寫法已經降低風險:關鍵術語保留英文(OOV、3CosAdd、Skip-gram、effective min_count),表頭英文,Q6 全英文。維持即可。 - 唯一要注意:程式註解是中文、報告是中文、Q6 是英文,語言混用不扣分,但如果助教是外籍或交換生(不確定是否有),閱讀會吃力。目前不建議為此改寫。 ### 5-4 其他格式觀察(不扣分) - 第 13、27 格的 tqdm 進度列存成 1,311 和 1,013 段輸出。畫面上正常;助教用 AI 讀原始 JSON 會看到大量雜訊。**不要手動刪輸出**(像竄改),知道就好。 - 第 28 格(TODO7)和第 49 格右半的 t-SNE 是同一張圖(同資料、同種子),不扣,但 (g) 可以直接寫「右圖同 TODO7」。 - 這次整份重跑,自訓模型分數從上一版的 55.60/42.21 變成 56.70/41.48(多執行緒的隨機性)。報告已全部改成新數字,我沒找到殘留的舊數字。 --- ## 六、我核對過、確認正確的部分 - 報告 Q1–Q5 每個數字,我逐一對照第 24、25、27、33、34、36、38、40、41、43–48 格的輸出,**全部一致**(含 +2.27、+1.03、+1.24、45.2% 等算出來的數)。 - Q2 雜訊欄的每個值都對得上第 43 格的 max − min。 - 第 49 格 PCA 圖:he 1.58、his 1.46、king 1.45、prince 1.06、brothers 0.95 確實在上;mom、grandma、aunt、mother、stepmother 確實在下;但 queen、dad、grandpa 的位置與「性別軸」矛盾(見 Q5)。 - 5% 的 107 題 OOV:我另外數 `wiki_sampled_5_clean.txt` 的字頻重現出完全相同的 107 題(門檻 9),分布在 capital-world 78、currency 29。 - 上課引用:W2 01:39:50(停用詞「以前很重要,但現在一點都不重要」)、W3 01:22:17(「設一萬……效果不會比較好」)、W3 01:12:12(CBOW/Skip-gram)、W3 00:31:24(「也許他可能在前三名」)都在逐字稿裡找到。 - requirements.txt 的 gensim 4.4.0、numpy 2.5.3、pandas 3.0.6、scikit-learn 1.9.1 與第 54 格一致;nltk 有列入。 - 模板逐格比對:未改動的格 21 個完全相同;TODO 格只新增、不刪模板文字;刪改的只有資料載入格。 本評分的每一項判斷都來自實際查證(讀 PDF 全文、讀逐字稿、逐格印出 notebook 程式與輸出並與模板比對、看過三張圖、重算 5% 的 OOV 分布、抽查上課逐字稿)。標「不確定」的三處(Sourpuss 是不是貓、助教會不會因 AI 比例主觀壓分、AI 篩格式工具對中文的處理)是推測。