# 05c 嚴格助教評分:NLP HW1 Word Analogy(示範版 notebook) - 評分對象:`示範實作\NLP_HW1_DEMO_示範.ipynb`(53 格,已執行;報告在第 29 格) - 評分依據:只用 `原始檔_2026\NLP_HW1_word_emb.pdf`(p.31 評分、p.33–36 繳交與罰則)+ 助教說明影片逐字稿 16:00–23:30 - 對照模板:`原始檔_2026\main.ipynb`(32 格) - 角色:今年修課人數多、評分「像改作文」、會用 AI 先篩格式的嚴格助教 - 依指示:檔名占位與「示範版/不是要繳交的版本」字樣不扣分,但列為格式風險 --- ## 結論先講 > **我會給 94.5/100(程式 54/55,報告 40.5/45,罰則 0)。** > 程式部分幾乎滿分。報告的分數主要掉在三個地方:第 4 題有一個**解讀錯誤**(apple 的鄰居 raspberry 是 Raspberry Pi,不是水果);報告有三處說法**在 notebook 裡找不到證據**(重跑兩次的分數、非英文字 0.4%、回查 sourpuss 的語料原句);第 5 題的 (a)–(g) **編號和程式格對不起來**。 > 這三類都能在不重新訓練模型的前提下修好,修完可以拿 97–98。 罰則風險:如果繳交前沒把檔名、zip 名改好,各扣 5 分。如果助教認定「動了模板」,再扣 5 分(風險中低,見第三節)。 --- ## 一、逐項評分表 ### 1-1 程式(55%) | 項目 | 滿分 | 給分 | 理由(引用格號) | |---|---|---|---| | TODO1 轉 DataFrame | 5 | 5 | 第 5 格。用 `": "` 計數,前 5 個是 Semantic,正確。印出 19,544 題,`df.head()`(第 7 格)跟投影片 p.14 範例一模一樣。 | | TODO2 預訓練向量答題 | 10 | 10 | 第 13 格。先轉小寫(GloVe 全是小寫字)、處理 OOV(字典裡沒有的字)、用 `most_similar(positive=[b,c], negative=[a])`。第 14 格成績:Semantic 65.34%、Syntactic 61.26%,數字合理。**但刪掉了模板的 `""" Hints """` 字串**,見第三節的罰則風險。 | | TODO3 t-SNE(GloVe) | 5 | 5 | 第 15 格,圖有輸出。perplexity=15 有寫理由(字只有幾十個)。標籤有重疊(bride/groom、grandma/grandpa),不扣分。 | | TODO4 抽 20% | 5 | 5 | 第 24 格。以「文章」為單位抽樣,固定種子 42,結果 1,124,733/5,623,655 = 20.00%。同一趟順便產生 5%、10%,而且 5% ⊂ 10% ⊂ 20%,設計好。讀檔方式改了(見第三節)。 | | TODO5 前處理+訓練 | 10 | **9** | 第 25 格。訓練在 20% 上完成,輸出完整(6.66 億字、36.9 分鐘、字典 299,405 字)。**扣 1 分**:前處理只有一條規則(只留 `[a-z]+`),是全班可能最少的那一群。雖然「不移除停用詞」有做實驗支持(第 44 格),但「不做詞形還原」只有說理、沒有實驗。助教說過「前處理是各位自行發揮的,算在 TODO5 裡面」,別人多試一兩種(例如 gensim `Phrases` 把 new_york 黏成一個字),這裡就會輸 1 分。 | | TODO6 自訓向量答題 | 10 | 10 | 第 27 格。模板在 TODO6 後面沒有評分格,自己補上成績輸出,是加分行為。Semantic 55.60%、Syntactic 42.21%。 | | TODO7 t-SNE(自訓) | 10 | 10 | 第 28 格,圖有輸出。小缺點:圖標題跟 TODO3 一字不差(模板寫死的),單看圖分不出是哪個模型。 | | **小計** | **55** | **54** | | ### 1-2 報告(45%,第 29 格) | 項目 | 滿分 | 給分 | 理由 | |---|---|---|---| | Q1 模型/前處理/超參數 | 5 | 5 | 三件事都有答,超參數全列,還說明為何選 100 維(跟 GloVe 公平比較)。**風險**:「非英文字只占約 0.4%」這句,notebook 裡沒有任何一格算出 0.4%。嚴格助教可能要你拿出證據,目前不扣,但列為修正項。 | | Q2 5%/10%/20% | 10 | **9** | 表格清楚,三個比例都有分數、字數、訓練時間,結論「邊際效益遞減」有數字撐(×4 資料只 +3.07)。**扣 1 分**:(1)「同設定重跑 20% 兩次,48.21 vs 48.29,comparative 45.95 vs 54.88」在 notebook 裡**找不到**這次重跑的程式或輸出。(2) 自相矛盾:一方面用「最高級 +8.6」證明語法類需要更多資料,另一方面又承認同設定重跑時 comparative 會差 8.9 點,卻只說「1~2 點的差距不應過度解讀」。照你自己的數據,小類 8~9 點的差距都可能是隨機的。(3)「常見字在 5% 時座標就已穩定」是推論,沒有數據。 | | Q3.1 呈現結果 | 5 | **4.5** | 有同字數維基對照組,設計好;有答案覆蓋率。**扣 0.5**:報告表只挑了 11 個列(14 個小類只列 8 個),漏了 capital-common-countries、currency、adjective-to-adverb、opposite、past-tense、plural。其中 past-tense 剛好是論壇輸的語法類(35.38 vs 41.22),漏掉它看起來像挑對自己有利的數字。完整表在第 34 格,但題目是「Present your results」,報告裡就該完整。 | | Q3.2 語料介紹與差異 | 5 | **4.5** | 資料量、主題、結構、文體都有寫,錯字例子(slary、salry)很有說服力。**扣 0.5**:(1) 沒附資料集出處(SemEval 2016/2017 Task 3 的論文或網址),投影片 p.35 要求網路來源要附連結。(2)「主題」差異只有舉例,沒有量化。資料本身有 `RELQ_CATEGORY` 欄位(第 32 格印得出來),列出前 5 大分類就能量化。(3)「結構差異」可以量化:維基每行約 592 字(一篇文章),論壇每行約 34 字(一則貼文),這直接影響 window 能看到的上下文。 | | Q3.3 解釋升降 | 5 | **4.5** | 每百萬字頻率表(第 36 格)是全份報告最強的證據。**扣 0.5**:「就算在字典中……關係學不起來」這句沒有證據。現在的正確率把 OOV 題直接算錯,論壇語意類 12.37% 主要是被 3,510 題 OOV 拉低的。要證明「在字典裡也學不好」,需要算「只看四個字都在字典裡的題目」的正確率。 | | Q4 五個字的近鄰 | 10 | **8** | 選 7 個字、兩個模型、有挑字原則,超過「至少五個」。**扣 2 分**:(1) **解讀錯誤**:「apple 同時靠近手機(blackberry、iphone)與水果(raspberry)」。這裡的 raspberry 幾乎可以確定是 Raspberry Pi(小電腦),跟它並列的 tvos 是 Apple 的電視系統、xelibri 是 Siemens 的手機品牌。五個鄰居全是科技,結論應該反過來:apple 跟 bank 一樣,**只剩常見義**。懂的助教看到會直接扣。(2)「GloVe 的相似度普遍較高(0.8~0.9 vs 0.7~0.8)」跟第 40 格不符:GloVe 的範圍其實是 0.67~0.89,apple 的第一名 GloVe 0.74 還低於 Wiki 0.77。而且兩個不同訓練法的向量空間,餘弦值本來就不能直接比大小;「反映訓練資料量大約 9 倍」是沒證據的因果推論。(3)「回查語料發現是卡通貓角色(sourpuss cranky cat who hates mondays)」在 notebook 裡沒有任何一格做過這個查詢。(4) taiwan、computer 有列表但沒有任何觀察。 | | Q5 加強報告 | 5 | 5 | (a)–(g) 七組額外實驗,遠超一般學生,這題相對評分一定是頂標。**但有扣分風險**(嚴格助教可能扣 0.5):(1) 報告的 (a)–(g) 跟程式格註解的 (a)–(g) **對不起來**:報告 (a) 是停用詞,但程式第 42 格標 (a) 的是 top-k;報告 (g) 是隨機性,沒有對應程式;程式 (g) 是覆蓋率(第 48 格),報告沒提。(2)「這些差距(7~12 點)遠大於隨機波動」:window=10 的整體差距只有 3.36 點(45.22→41.86),不在 7~12 之間。(3) PCA「第二主成分大致是性別軸」只提 she/her 是例外,但圖上 queen 在下方(男性區)、dad 和 grandpa 在上方(女性區)也是例外。 | | Q6 Generative AI Usage | 不計分(漏寫 −10) | 0 扣分 | 有寫,每格程式也都有 `# [Generative AI]` 註解,符合 p.35「程式註解+報告」兩處都要寫。**但現在的文字是示範版用語,一定要重寫**,見第五節。 | | **小計** | **45** | **40.5** | | ### 1-3 罰則(p.36) | 規則 | 罰分 | 現況 | 判定 | |---|---|---|---| | notebook 檔名 `NLP_HW1_學校_學號.ipynb` | −5 | `NLP_HW1_DEMO_示範.ipynb` | 依指示不扣;**繳交前必改** | | zip 檔名 `NLP_HW1_學校_學號.zip` | −5 | 尚未打包 | 依指示不扣;**繳交前必做** | | 本機執行要附 requirements.txt | −5 | 有,10 個套件,版本跟第 52 格印出的一致 | 不扣 | | 報告要有 Generative AI usage | −10 | 有 | 不扣(要改寫) | | 報告要有 Python 版本 | −5 | 3.12.3,環境寫到 OS/CPU/RAM,符合 p.34 本機格式 | 不扣 | | 不得修改模板(只准改資料載入) | −5 | 見第三節 | 我不扣,但風險中低 | | 與他人高度相似 | −100(兩人) | 見第五節 | 目前無法判斷,**有特定風險** | ### 1-4 總分 | | 滿分 | 給分 | |---|---|---| | 程式 | 55 | 54 | | 報告 | 45 | 40.5 | | 罰則 | — | 0(檔名改好的前提下) | | **合計** | **100** | **94.5** | 如果助教只用整數給分,大概落在 94–95。 --- ## 二、會被扣分的地方(依分數排序) 1. **【−5~−10,繳交格式】檔名與 zip 名**。`NLP_HW1_DEMO_示範.ipynb` 要改成 `NLP_HW1_學校_學號.ipynb`,zip 同樣規則。助教會用 AI 先篩格式,這種一定被抓。 2. **【−5,風險中低】動到模板**。詳見第三節。最便宜的修法是把 TODO2/TODO6 刪掉的 Hints 字串補回去。 3. **【−2,Q4】apple 的解讀錯誤+相似度比較錯誤+查語料無證據**。raspberry 是 Raspberry Pi;GloVe 相似度不是「0.8~0.9」;跨模型比餘弦值本來就不成立;sourpuss 原句沒有程式證據。 4. **【−1,Q2】重跑數字沒有證據、隨機性結論自相矛盾**。48.21/45.95 不在 notebook 裡;comparative 重跑差 8.9 點,卻用 superlative +8.6 當結論。 5. **【−1,TODO5】前處理只有一條規則**。相對評分下會輸給有多試前處理的同學。 6. **【−0.5,Q3.1】報告表挑列**,漏掉論壇輸的 past-tense。 7. **【−0.5,Q3.2】沒附語料出處**,主題與結構差異沒量化。 8. **【−0.5,Q3.3】「在字典裡也學不好」沒有證據**(沒算排除 OOV 後的正確率)。 9. **【0~−0.5,Q5】編號跟程式格對不起來**、「7~12 點」數字不對、PCA 例外沒講完整。 10. **【0,但會被注意到】第 36 格的執行序號是 1**,其他格是 1–40 連號。嚴格助教看到序號跳號,第一反應是「這格是不是另外跑的、結果可不可信」。格內註解已說明是事後補跑,算誠實,不扣分。 --- ## 三、模板修改的風險明細(−5 那一條) 規則原文:「Do not modify the code template (only changes to data loading are allowed).」 | 格 | 改了什麼 | 屬於資料載入嗎 | 風險 | |---|---|---|---| | 2 | `!wget` 改成 `urllib` | 是 | 無 | | 18–19 | 11 行 `!gdown` 改成迴圈,第 19 格變成只印一行 | 是 | 無 | | 20–22 | `!gunzip`/`!cat`/`!head` 改成直接讀 `.gz` | 是 | 無,而且每格都有註解說明原本是什麼 | | **24(TODO4)** | 模板外層的 `with open(wiki_txt_path) as f:` 拿掉,改成逐一讀 11 個 `.gz`;另外在 TODO 區塊外加了 5%/10% 的輸出檔 | 讀檔部分算;**多開兩個輸出檔不算** | 低。有註解說明,助教多半接受 | | **13、27(TODO2、TODO6)** | 模板迴圈裡的 `""" Hints ... """` 整段被刪 | **不是** | **中低**。這是唯一明確動到「非資料載入」模板文字的地方 | | 27 | TODO6 後面加了評分輸出 | 是新增,不是修改 | 低 | | 15、28 | `plt.show()` 後 `plt.savefig` 存出空白圖、兩格存同一個檔名 | 模板原本就這樣 | 無(保持原樣是對的) | **建議**:把 Hints 字串原封不動貼回第 13、27 格的迴圈裡。它是一個沒作用的字串(不會改變任何結果),貼回後不用重跑,輸出仍然對得上。 --- ## 四、可以再加分/讓評分者印象更好的地方 依「花的力氣少、效果大」排序。前 6 項都不需要重新訓練模型。 1. **改正 apple 的解讀(Q4)**。改成「apple 在兩個模型都只剩公司義(blackberry、iphone、tvos、Raspberry Pi、xelibri 全是科技產品),跟 bank 一樣,水果義被常見義蓋掉」。想加分可以補一行 `most_similar(positive=["apple","fruit"])`,看水果義能不能被「拉」出來。 2. **刪掉或改寫「GloVe 相似度普遍較高」那句(Q4)**。照第 40 格的實際範圍寫,並加一句「不同模型的餘弦值尺度不同,不能直接比大小」。這句反而能展現你懂。 3. **把「沒有證據」的三句補證據或刪掉**: - 0.4%(Q1):補一格算「被 `[a-z]+` 濾掉的字占幾 %」,或刪掉數字。 - 重跑兩次(Q2、Q5(g)):補一格用同參數再訓練一次 20%(約 37 分鐘)並印出,或改成用 5% 重跑兩次(約 9 分鐘×2)。不補的話就要整句拿掉。 - sourpuss 原句(Q4):補一格 `grep` 語料印出含 sourpuss 的句子,或改成「推測是卡通角色」。 4. **統一 Q5 的編號**。報告 (a)–(g) 與程式格註解要一一對應,最好在報告每一小點後面寫「(第 N 格)」。助教要對照程式時一眼就找得到,「像改作文」的評分對這種細節很敏感。 5. **Q3.1 放完整 14 個小類**,或至少把 past-tense 和 plural 加回去,再加一欄 Wiki 20%。不要讓人覺得在挑數字。 6. **修正隨機性的說法(Q2)**。改成「整體分數穩定(差 0.08),但題數少的小類同設定重跑可差到 9 點,所以小類 10 點以內的差距都只能當趨勢參考」,然後把「最高級 +8.6」的結論語氣放軟。 7. **Q3.3 補「排除 OOV 後的正確率」**。只看四個字都在字典裡的題目再算一次(用第 31 格已存的 `details` 就算得出來,不用重訓)。這能把「字不在字典」跟「字在但關係沒學好」分開,是這題最有力的一個補強。 8. **Q3.2 量化差異**:每行平均字數(維基約 592、論壇約 34)、論壇 `RELQ_CATEGORY` 前 5 大分類,再附 SemEval 2016 Task 3 的出處。 9. **Q4 補 taiwan、computer 的觀察**(例如 taiwan 在兩個模型的鄰居都是中國地名,反映語料的地理脈絡)。7 個字列出來卻只講 5 個,看起來像沒寫完。 10. **TODO5 多試一種前處理**(例如 gensim `Phrases`),放在 Q5 當實驗,順便補強 TODO5 的那 1 分。需要重訓,約 10 分鐘(用 5%)。 11. **TODO3/TODO7 的圖加一行 markdown 說明**(放在圖下方的新 markdown 格,不動模板程式),講這張圖看到什麼:成對的字(boy/girl、groom/bride)貼在一起、step- 家族自成一群。目前兩張圖都沒有任何解讀。 ### 關於語言(繁體中文) - PDF 沒有規定報告語言,助教說明影片是中文,報告用繁中**我判斷風險低**。 - 不確定的地方:如果助教用英文提示詞讓 AI 先篩格式,中文報告理論上不受影響,但我無法確認他們用的工具。 - 降低風險的作法:每題的關鍵結論句保留英文術語(例如「diminishing returns」「OOV」「polysemy」),現在已經大致這樣寫了,維持即可。 ### 關於輸出太長 - 第 13、24、27 格的 tqdm 進度列,在檔案裡分別存成 1,525、13、1,030 個輸出片段。在 Colab/Jupyter 畫面上會合成一條進度列,看起來正常。 - 但如果助教用 AI 讀原始 `.ipynb`(JSON),會看到上千段雜訊。**不建議手動刪改輸出**(容易被當成竄改),知道有這件事就好。 --- ## 五、會不會被懷疑是 AI 寫的報告?怎麼揭露才誠實又合規 ### 5-1 現在的版本一定會被認出來 會被認出的特徵: - 每一點開頭都是粗體短句,接著破折號「——」,結尾是一句金句(例:「這說明詞向量學的是分布,而非字義」「前處理沒有絕對好壞,取決於要評估的任務」)。 - 段落結構非常對稱,每題都是「表格+3~4 個粗體觀點」。 - 程式註解是教學口吻(「記憶體不會爆」「再聰明也答不對」),而且每一格都標了 `[Generative AI]`。 - 一天之內訓練了 11 個模型、做了 7 組額外實驗,而且所有數字都精準互相引用。 **重點**:被認出來本身**不扣分**。PDF 只罰「用了 AI 卻沒寫」(−10)。真正的風險是下面兩個。 ### 5-2 真正的風險 1. **揭露寫得不實(最嚴重)**。如果程式和報告大部分是 AI 產生,卻寫成「只用 AI 潤稿」,被看出來就是「未如實說明」,比照未揭露處理。 2. **相似度 −100(兩人都 0 分)**。這份示範如果流到其他同學手上(例如做成教學分享),或其他同學也請同一個 AI 做同樣的題目,TODO1–7 的程式會長得非常像。**這份 notebook 不要給任何同學看**;繳交版的程式與報告要用自己的寫法重做,特別是 TODO 區塊(大家最容易撞)。 另外,評分是主觀的。如果整份明顯是 AI 產生、揭露也寫「全部由 AI 產生」,助教在「像改作文」的項目(Q3、Q4、Q5)可能主觀給低一點。這點 PDF 沒寫,**我不確定會不會發生**,但這是要自己重寫報告文字的另一個理由。 ### 5-3 揭露怎麼寫(範本,必須依實際情況改) 只能寫真的發生過的事。下面是「程式由 AI 起草、自己執行、檢查並改寫報告」的情境範本: **報告 Q6:** > Generative AI Usage > 我使用 Claude(Anthropic)協助以下部分: > 1. 程式:TODO1–TODO7 與報告下方額外實驗的程式由 Claude 起草;我在本機逐格執行、檢查輸出,並修改了〔具體寫你改了哪些〕。每一格 AI 參與的程式都在第一行標註 `# [Generative AI]`。 > 2. 實驗設計:〔例:選用論壇語料、同字數維基對照組的想法來自與 Claude 的討論〕;實驗由我執行,所有數字皆來自本 notebook 的輸出。 > 3. 報告:初稿由 Claude 依執行結果整理,我逐句核對數字與 notebook 輸出,並以自己的文字改寫〔或:修正了 Q4 的 apple 解讀等錯誤〕。 > 未使用 AI 的部分:〔例:最終結論與觀察的取捨、Q4 的挑字〕。 **程式格註解**(每一格 AI 參與的程式): ```python # [Generative AI] Drafted with Claude (Anthropic); executed and reviewed by me. Modified: . ``` **一定要刪掉的字樣**: - 第 29 格開頭整句「**示範版報告**:由 Claude 撰寫……不是要繳交的版本……」 - 每一格程式註解裡的「作為示範;不是要繳交的版本」 - Q6 裡的「本示範筆記本」「學習用示範」「實際繳交時應由學生自行重做」 - 第 38 格「助教說這題不用附程式,這裡附上是為了示範」中的「為了示範」 原則:**寫得越具體越安全**。「哪個工具、做了哪一部分、我自己做了什麼」三件事都寫到,助教就沒有扣分的依據。 --- ## 六、我核對過、確認正確的部分(不用改) - 報告 Q1–Q3 引用的數字,我逐一跟第 14、25、27、34、36、38、40、42–46 格的輸出核對,全部一致(含四捨五入)。 - 5%/10%/20% 的字數、時間、OOV 題數、各類正確率,跟第 38 格一致。 - 論壇與對照組的字數(72,919,300 vs 72,920,923)確實相同規模,對照設計成立。 - requirements.txt 的 gensim 4.4.0、numpy 2.5.3、pandas 3.0.6、scikit-learn 1.9.1 跟第 52 格印出的版本一致。 - TODO 區塊都在模板指定的位置;第 3 題的額外程式放在報告下方的「Code For 3」標題之後,符合 p.31「否則 0 分」的要求。 本評分的每一項判斷都來自實際查證(讀 PDF 全文、讀逐字稿、逐格印出 notebook 程式與輸出並與模板比對、看過三張圖)。標「不確定」的兩處(語言對 AI 篩檢的影響、助教是否會因 AI 比例主觀壓分)是推測。