# 07d 修正驗證:07c 的 11 項(C1–C4、S1–S4、Y1–Y3) > 審查對象:`示範實作\_guide_drafts\guide_*.html`、`build_guide.py`、`make_toy_figures.py`(都在 2026-10-06 00:35 被 `patch_guide_07c.py` 改過),以及同一分鐘重組的 `HW1\HW1_一條龍說明.html` > 事實基準:`_extract2\outputs.txt`(exec n=In [n])、`NLP_HW1_submission_draft.ipynb`(cell 33=In [27]、cell 23=模板說明)、作業 PDF p28(pdftotext)、`tsne_glove_marked.png`、`tsne_wiki20_marked.png`、`noise_band.png` > 範圍:只看 07c 的 11 項。Y4(VERIFY 那句)照指示不看;組好的 HTML 裡仍是「第二次的修正尚待驗證」,這是預期中的。 > 審查員沒看過這份文件和之前的審查。除了本檔,沒有改任何檔案。 ## 一句話結論 **11 項全部修好。「事實錯誤」和「前後矛盾」等級的問題都是 0。** 組好的 HTML 裡 12 段新文字各出現 1 次,8 段舊文字都是 0 次(「老師建議」全文也是 0 次)。嵌進去的 `noise_band.png` 也是新版。 修正帶出 2 個小問題,加 1 個可以順手改的地方。三個都不是事實錯誤,也不是矛盾: - N1(風格):第 7 節對照表的 GloVe 欄列的配對比第 4 節少,看起來像兩本字典有差。 - N2(規範 13):C2 新句的「例外」只列第 4、7、12 節。第 14 節 Q17 還有一句「t-SNE 保留局部鄰居」,跟「鄰居只用在一個意思」衝突(這句是之前就有的)。 - N3(可選):S3 的對照表裡,Q4 的 slary 例子在第 10 節,表上沒列。 --- ## 一、逐項檢查 | # | 結果 | 現在的原文(證據) | 周邊有沒有新問題 | |---|---|---|---| | C1 | ✅ 已修(附帶風格 N1) | guide_results1.html 第 144 行:`有些男女配對黏在一起有(boy/girl、man/woman;但 brother/sister、uncle/aunt 分很開)有(boy/girl、man/woman、bride/groom、dad/mom、king/queen;但 brother/sister、uncle/aunt 分很開)` | 兩張圖逐點對過,這格寫的每一對都對:GloVe 的 brother (−0.9, 5.5)/sister (3.4, 4.4)、uncle (−0.4, 4.5)/aunt (2.2, 2.1) 都分很開;Wiki 20% 的 man (−7.1, −2.0)/woman (−6.7, −2.2)、king/queen 很近,brother (1.0, 1.7)/sister (−2.8, 4.7)、uncle (1.7, 1.0)/aunt (−3.0, 1.8) 都分很開。沒有錯。**但 GloVe 欄少列了 dad/mom、bride/groom。** 第 4 節第 69 行說 GloVe 有這兩對,而且圖上也真的幾乎重疊。這張是「比一比」的表,讀者會以為只有 Wiki 20% 有這兩對 → N1 | | C2 | ✅ 已修(附帶規範 N2) | guide_static.html 第 37 行:`在相似度、鄰居、b − a + c 這些地方,本文說的「近」「最像」都是指方向(夾角小),不是兩點之間的距離。(例外:第 4、7、12 節看 t-SNE/PCA 圖時說的「近」「黏在一起」,是圖上兩點的距離。)` | 主句加了範圍,第 4、7、12 節的圖都被排除了,原本的矛盾沒有了。**但例外沒列完整**:總結論 #1 寫「t-SNE 圖上部分男女配對貼在一起」,第 14 節 Q17 寫「部分男女配對黏在一起」,也都是在講圖上的距離;第 12 節用的詞是「貼得很緊」,不是「黏在一起」。另外 Q17 最後寫「t-SNE 是非線性的,保留局部鄰居」。第 1 節第 45 行說「鄰居」只用在一個意思(最像的 5 個字,看方向),新句又把「鄰居」列成看方向的地方。但 t-SNE 的近鄰是用 100 維裡的距離算的(07c 已經查過 TSNE 沒設 `metric`)→ N2 | | C3 | ✅ 已修,沒有新問題 | guide_conclusion.html 第 12 行:`家人/性別 −14.82、動詞第三人稱 −11.26(明顯超過雜訊);國名→國籍反而 +2.19(超過雜訊但不到 1.5 倍,只當參考)` | 用 exec 35 重算:14.82 ÷ 4.74 = 3.13 倍,11.26 ÷ 2.07 = 5.44 倍,兩個都「明顯超過」;2.19 ÷ 1.69 = 1.296 倍,所以標「只當參考」是對的。跟第 12 節第 43 行(3.13、5.44、1.30 倍)一致 | | C4 | ✅ 已修,沒有新問題 | guide_submit.html 第 51 行:`交作業這一步,你本人要做三件事——回拍板卡(學校代碼、學號)、在第 6 題最後一行照實寫「What I did」、照上面 4 步打包上傳。程式和報告都已經做好;考試要用的「看懂」,照第 15 節的步驟讀。` | 跟第 15 節第 82 行「第 5~7 步要你本人(回拍板卡、寫 What I did、上傳)」逐項對得上。第 15 節第 60 行的「三件事」(看懂、補上、打包)是另一個範圍,而第 13 節這句一開頭就寫了「交作業這一步」,所以不衝突。「照第 15 節的步驟讀」也找得到(第 1~4、8 步)。小地方:拍板卡其實有 6 題,第 15 節寫「學校代碼、學號等」,這裡少了「等」。不影響理解,不列成問題 | | S1 | ✅ 已修,沒有新問題 | build_guide.py 第 98 行:`論壇略低(−1.34,超過雜訊 1.26 但不到 1.5 倍,只當參考)`;guide_results3.html Q13:`語法類加總略低 1.34(超過雜訊 1.26 但不到 1.5 倍,只當參考)` | exec 28:37.87 − 36.53 = 1.34;exec 34 語法類雜訊 1.26;1.34 ÷ 1.26 = 1.06 倍。q3 表其他判輸贏的小類,我重算都至少 2.17 倍,所以只有這一列要註明。還用「剛好超過」字樣的三處:g10 第 46 行、g12 第 43 行、g12 第 74 行。三處都帶著「只當參考」,07c 說可以保留。g10 的說明寫「只看有沒有超過,不分是不是 1.5 倍」,這是在講「誰贏」怎麼判;語法類那格的判定還是「論壇略低」,括號只是照第 9 節的承諾補一個註記,不算矛盾 | | S2 | ✅ 已修,沒有新問題 | guide_static3.html 第 10 行:`原因是助教用 gensim WikiCorpus 的預設參數清資料:模板在 TODO4 前面寫「words with one character were discarded」(只有一個字母的字被丟掉);筆記本 In [27] 的註解也寫了這個預設「只留 2~15 個字母的英文字」,所以數字(不是字母)也會被拿掉。` | 筆記本 cell 33(execution_count 27)的註解原文:「用跟維基百科一樣的規則前處理:先拿掉網頁語法和網址,再小寫、只留 2~15 個字母的英文字(WikiCorpus 的預設)。」引用正確。模板 cell 23:「we used the default parameters of gensim.corpora.wikicorpus.WikiCorpus … Thus, words with one character were discarded.」也正確。現在兩個出處各自管各自的事 | | S3 | ✅ 已修,沒有新問題(N3 可選) | guide_results3.html 第 103 行:`Q1~Q2 → 第 1 節觀念 3;Q3 → 第 1 節觀念 4、第 12 節實驗 ③;…;Q18 → 第 6 節、第 12 節實驗 ③。` | **18 題的指向逐一核對,全部指到有講那個主題的節**(見下面第二部分)。沒有一個指錯 | | S4 | ✅ 已修,沒有新問題 | guide_static3.html 第 70 行:`作業規格建議的做法(PDF p28)…`;guide_results5.html 第 25 行:`作業規格 PDF p28 建議可以試「移除停用詞」(Remove stop words),我沒做。` | pdftotext p28 標題是「Recommended data pre-processing steps」,列了 5 項:Remove non-English words/Remove stop words/Lemmatization (e.g., rocks -> rock)/Better tokenization…/Retain the most frequent words。g6 表的 5 列依序一一對應(連 rocks → rock 的例子也一樣)。全部草稿和組好的 HTML 都已經找不到「老師建議」 | | Y1 | ✅ 已修,沒有新問題 | make_toy_figures.py 第 68 行:`ax.scatter([v], [1], color="#2A2A2A", s=40, zorder=3)` | 開 noise_band.png 看過:換種子的 4 個點是黑色,只有 window=10 是紅的,CBOW、300 維是綠的,刪停用詞是灰的、在帶子裡。標題「綠=變好、紅=變差」現在只對到 4 個菱形,不會誤導。帶子 46.12 ± 1.05 跟 exec 34 相符。組好的 HTML 嵌的 base64 跟現在的 png 完全一樣 | | Y2 | ✅ 已修,沒有新問題 | guide_results4.html 第 34 行最後:`(邊界例:動詞第三人稱 3.10 ÷ 2.07 = 1.498,差一點才到 1.5 倍,所以判「只當參考」。)` | exec 31:37.82 → 40.92,差 3.10;exec 34 雜訊 2.07;3.10 ÷ 2.07 = 1.4976。`q2_judge` 用 `abs(d) < 1.5 * nz`(3.10 < 3.105),判「超過,只當參考」,跟文字一致。g9 表 17 列我全部重算,只有這一列靠近 1.5 倍,下一個最近的是常見國家首都 1.43 倍,所以只舉這一個邊界例就夠了 | | Y3 | ✅ 已修,沒有新問題 | guide_results1.html 第 70 行:`中間那一大塊則大致是左邊男性(son、brother、uncle)、右邊女性(daughter、mother、aunt);例外是 husband,它在右邊跟 wife 黏在一起。` | 圖上 husband 在 (1.5, 6.4)、wife 在 (1.9, 5.8),兩點的距離跟灰線連起來的 man/woman 差不多,「黏在一起」說得通。第 12 節 PCA 那列說「husband 在下半」,那是另一張圖(PCA),不衝突 | --- ## 二、S3:18 題指向逐一核對 | 題 | 主題 | 指到 | 那一節有沒有講(原文位置) | 結果 | |---|---|---|---|---| | Q1 | word analogy、b − a + c | 第 1 節觀念 3 | 觀念 3+手算 b − a + c、邊界情況 1(排除 a、b、c) | ✅ | | Q2 | 為什麼可以加減 | 第 1 節觀念 3 | 平行四邊形圖+老師「趨勢非常的 close」(W3 00:32:03)。「看前後文學出來」那一半在觀念 4,就在觀念 3 下面 | ✅ | | Q3 | Skip-gram vs CBOW+實驗 | 觀念 4、實驗 ③ | 觀念 4 有兩種方法的對照表;實驗 ③ 有 CBOW 結果 | ✅ | | Q4 | 限制:一字多義、反義、OOV/FastText | 第 11 節、課堂補充 C 組 | 第 11 節有 apple、bank、good/bad 0.70、BERT;C 組第 9 點講 FastText、第 10 點講一字多義 | ✅(slary 在第 10 節 → N3) | | Q5 | GloVe vs Word2Vec | 第 7 節、課堂補充第 7 點 | 第 7 節「方法不同」列(Global/Local、W3 01:32:25);第 7 點「GloVe vs Word2Vec」小點 | ✅ | | Q6 | Skip-gram 訓練資料 | 課堂補充第 3 點 | 「Skip-gram 的訓練資料是『自己做出來的』」 | ✅ | | Q7 | 詞向量是哪一層 | 課堂補充第 4 點 | 「詞向量就是第一層的權重」 | ✅ | | Q8 | 負取樣 | 課堂補充第 5 點 | 「Negative sampling(負取樣)」 | ✅ | | Q9 | 為什麼轉小寫 | 第 4 節 | 「考試可能問」第一條就是轉小寫 | ✅ | | Q10 | 抽樣避免記憶體爆掉 | 第 5 節 | 「一行一行讀」(W3 01:55:49) | ✅ | | Q11 | 停用詞 | 第 6 節、實驗 ② | 第 6 節前處理表「移除停用詞:刻意不做」;實驗 ② | ✅ | | Q12 | 5%→20% | 第 9 節 | 報告第 2 題,5/10/20% 表 | ✅ | | Q13 | 論壇 vs 維基 | 第 10 節 | 報告第 3 題 | ✅ | | Q14 | 為什麼要對照組 | 第 10 節 | 「關鍵設計:為什麼要多做一個『維基對照組』」+控制變因 | ✅ | | Q15 | 貨幣為什麼差 | 第 4 節、實驗 ⑧ | 第 4 節「貨幣很差」列(kwanza、dram、won、real);實驗 ⑧ 覆蓋率(並提到論壇 39.0%) | ✅ | | Q16 | 只算第一名公不公平 | 實驗 ④ | 前 k 名正確率 | ✅ | | Q17 | 怎麼看 t-SNE | 第 4 節、實驗 ⑦ | 第 4 節 TODO3 t-SNE+「看圖要小心」;實驗 ⑦ PCA vs t-SNE | ✅ | | Q18 | window、vector_size | 第 6 節、實驗 ③ | 第 6 節「訓練參數:每一個在調什麼」;實驗 ③ | ✅ | | 結尾 | 「數字 → 觀察 → 原因」 | 第 8 節 | g8 結論句就是這三步 | ✅ | 「課堂補充」這一節沒有編號,但目錄上叫「課堂補充:12 個觀念」,「C 組」「第 7 點」在節裡都有標題,找得到。 --- ## 三、新問題(依嚴重度排序) ### A. 事實錯誤 無。 ### B. 前後矛盾 無。 ### C. 規範違反 **N2|guide_static.html 的 C2 新句,例外沒列完整;guide_results3.html Q17 的「鄰居」有第二個意思(規則 13)** - 原文 1(guide_static.html 第 37 行):`(例外:第 4、7、12 節看 t-SNE/PCA 圖時說的「近」「黏在一起」,是圖上兩點的距離。)` - 原文 2(guide_results3.html 第 97 行,Q17,之前就有):`t-SNE 是非線性的,保留局部鄰居。` - 問題: - 第 1 節第 45 行定義「這 5 個字本文叫「鄰居」(只用在這個意思)」,C2 新句又把「鄰居」列成「看方向」的地方。Q17 卻用「鄰居」講 t-SNE 在 100 維裡用距離找的近鄰。 - 例外只列第 4、7、12 節,但總結論 #1(「貼在一起」)和 Q17(「黏在一起」)也在講圖上的距離。第 12 節用的詞是「貼得很緊」,例外裡也沒列這個詞。 - 改成 1:`(例外:看 t-SNE/PCA 圖時——第 4、7 節、第 12 節實驗 ⑦、總結論第 1 條、第 14 節 Q17——說的「近」「黏在一起」「貼得很緊」,是圖上兩點的距離。)` - 改成 2:`t-SNE 是非線性的,只保證「原本很近的點,畫出來也很近」。`(這是第 4 節「看圖要小心」原本的說法) ### D. 風格 **N1|guide_results1.html 第 144 行(第 7 節對照表),GloVe 欄的配對比第 4 節少** - 原文:`有些男女配對黏在一起有(boy/girl、man/woman;但 brother/sister、uncle/aunt 分很開)有(boy/girl、man/woman、bride/groom、dad/mom、king/queen;但 brother/sister、uncle/aunt 分很開)` - 問題:這是一張兩欄並排的比較表。GloVe 欄沒列 dad/mom、bride/groom,Wiki 20% 欄有列,讀者會以為這是兩本字典的差別。但第 4 節第 69 行寫 GloVe 也有這兩對,圖上 dad (4.25, 1.4)/mom (4.25, 1.2)、bride/groom 也幾乎重疊。兩張圖上 husband/wife 也都很近(Y3 剛寫進第 4 節)。兩本字典真正的差別只有 king/queen:GloVe 這對在皇室圈裡,但相隔約 1.6;Wiki 20% 幾乎貼在一起。 - 改成:`有些男女配對黏在一起有(boy/girl、man/woman、dad/mom、bride/groom、husband/wife;但 brother/sister、uncle/aunt 分很開)有(boy/girl、man/woman、dad/mom、bride/groom、husband/wife,還有 king/queen;但 brother/sister、uncle/aunt 分很開)` **N3(可選)|guide_results3.html 第 103 行,Q4 少列第 10 節** - 原文:`Q4 → 第 11 節、課堂補充 C 組;` - 問題:Q4 答案 ② 舉的「論壇的錯字(slary)」只在第 10 節的鄰居表(salary → slary、salry…)。good/bad 那一半也在課堂補充第 8 點。現在指到的節沒有錯,只是不完整。 - 改成:`Q4 → 第 11 節、第 10 節(論壇錯字鄰居)、課堂補充第 8 點與 C 組;` --- ## 四、結論 **還有「事實錯誤」或「前後矛盾」等級的問題嗎?沒有,是 0。** - 07c 的 11 項(C1–C4、S1–S4、Y1–Y3)都修了,也都修對了。 - 組好的 HTML 已經包含全部修正和新版 noise_band.png。 - 新發現 N1(風格)、N2(規範 13)、N3(可選),都是改一個字串就好,不必重跑筆記本或圖。 - 改完 N1、N2 以後,就可以照 07c 的 Y4 更新 `VERIFY`。 本報告的每一項判斷都來自實際查證: - 讀了 `patch_guide_07c.py`,在全部草稿和 `build_guide.py` 裡搜尋每段新文字和舊文字;在組好的 HTML 裡數了 12 段新文字、8 段舊文字出現幾次,並比對 noise_band 的 base64。 - 對照 outputs.txt 的 exec 28、31、34、35 重算所有倍數(q2 表 17 列、q3 表 14 列)。 - 讀了筆記本 cell 33(In [27])和 cell 23 的原文;用 pdftotext 抽了 PDF p28。 - 打開 tsne_glove_marked、tsne_wiki20_marked、noise_band 三張圖逐點比對。 - 逐一打開 Q1–Q18 指到的每一節,確認有講那個主題。