[自然語言處理](https://app.notion.com/p/3e6fc631b03081b4a9e8f91f3411f61f) › [W3(9/24)](https://app.notion.com/p/3e6fc631b03081ff9776f36fab3e6e50) › 05|影片 [1:46:39–2:02:06](https://www.youtube.com/watch?v=g0QE6O17BWE&t=6399s)|投影片 作業一說明 NLP_HW1_word_emb.pdf(不在投影片文字檔內)|上一章 [04 GloVe、FastText 與向量檢索(1:28–1:46)](https://app.notion.com/p/3e6fc631b03081c5b27ce6cbad0d3d3a)|下一章 [06 N-gram 語言模型(2:12–2:33)](https://app.notion.com/p/3e6fc631b03081588140d7f6a95e5bb4)
## 重點
- 作業一叫 Word Analogy(詞類比):給 A、B、C 三個字,用詞向量算 B − A + C,猜第四個字 D。先用現成的 GloVe 向量做一次,再用 20% 的 Wikipedia 自己訓練 word2vec 做一次,兩邊比較。
- 程式 55%(7 個 TODO)加報告 45%,都寫在同一份 .ipynb,執行結果要留著。9/24 公布,三週後交(約 10/15,以 NTU COOL 為準)。
- 今年有實體閉書考試。不考背公式,考你做作業、聽課時抓到的 insight【老師說會考】(1:47:57)。所以做作業時要把觀察記下來。
## Exam-ready
- **Analogy**: "…helps to assess how well the word embedding model captures semantic and syntactic relationships between words."(HW1 p.2)
- 中文:類比題用來檢查詞向量模型有沒有抓到字和字之間的語意關係(semantic,意思上的)和語法關係(syntactic,字形變化上的)。白話:拿填空題測詞向量懂不懂「關係」。
- **Analogy task**: "A is to B as C is to D. (e.g. King is to Queen as Man is to Woman.)"(HW1 p.2)
- 中文:A 之於 B,如同 C 之於 D。例:king(國王)之於 queen(女王),如同 man(男人)之於 woman(女人)。
- **Vector arithmetic**: "word_b + word_c - word_a should be close to word_d"(HW1 程式模板 TODO2 提示)
- 中文:B 的向量加 C 的向量、再減 A 的向量,結果應該很接近 D 的向量。白話:把「A 變成 B 的那個變化」套到 C 身上,就會走到 D。
- **Google Word Analogy (Mikolov et al., 2013)**: "19,544 entries … 5 sub-categories for semantic relationships … 9 sub-categories for syntactic relationships"(HW1 p.3)
- 中文:Google 詞類比資料集共 19,544 題;語意關係分 5 個子類別(sub-category),語法關係分 9 個子類別。
- **t-SNE**: "Plot t-SNE to see word relationships in the sub-category of `family`"(HW1 p.13)
- 中文:用 t-SNE(把高維向量壓成 2 維來畫圖的方法)畫出 family(家庭)子類別的字,看字和字之間的關係。
- **Gensim**: "A popular Python package for embeddings"(HW1 p.15)
- 中文:Gensim 是做詞向量(embedding)很常用的 Python 套件。
- **Pre-processing**: "Remove stop words … Lemmatization (e.g., rocks -> rock) … Note that not every tricks yield better performance. You should try on your own."(HW1 p.28)
- 中文:建議的前處理包括刪停用詞(stop words,the、he 這類常見但意思少的字)、詞形還原(lemmatization,rocks 變 rock);但不是每一招都會讓表現變好,要自己試。
## [1:46:39](https://www.youtube.com/watch?v=g0QE6O17BWE&t=6399s) 作業變難,今年有閉書考試
作業一的主題跟去年一樣,只是要求變多:修課人數增加,TAICA 辦公室大概希望老師嚴格把關,不讓大家一句話就把作業做完【老師強調】(1:47:17)。
更重要的是今年有**實體閉書考試**。考試不會叫你寫出 BM25 公式這種題目【老師說不考】(1:47:47)。它考的是你做作業、聽課時抓到什麼 insight(洞見:自己觀察到、而且說得出原因的現象),而且要寫得出來【老師說會考】(1:47:57)。
BM25 是什麼?(第 2 週學過:搜尋引擎替「一篇文章跟你查的字有多相關」打分數的公式,是 TF-IDF 的改良版,見 [W2 第 07 章](https://app.notion.com/p/3e6fc631b030819ca51ee21869f5c86d)。)老師拿它當例子,意思是「背公式」這種題目不會考。
生活比喻:像駕照路考,不考你背法規條號,考你真的開過車才會有的判斷。
考試可能怎麼問:「做完詞類比作業,你發現詞向量擅長什麼、不擅長什麼?為什麼?」
注意:下課前老師補充,考試很大部分來自作業的過程和 insight,大約排在第 14 週,兩週內確認(見第 07 章)。
考試考 insight,要怎麼準備?
做作業時開一份觀察筆記,每條寫現象、原因、證據(數字或圖),直接用英文句子寫,考前就是現成答案。題材見本章 1:56:53 那一段。
老師原話是什麼?
「對這個可能要再強調一下」(1:47:17)
「這門課的作業難度會稍微比以前稍微再多加一點東西」(1:47:32)
「然後重點是我們今年的課會有一個實體的closed-book考試」(1:47:41)
「叫你寫出BM25的公式,不會這麼低級的題目」(1:47:51)
「你在聽這些內容你到底有catch到什麼樣的insight,我覺得那個是要能夠寫出來的」(1:48:02)
## [1:48:10](https://www.youtube.com/watch?v=g0QE6O17BWE&t=6490s) 作業在做什麼:類比資料集
作業就是第 01 章 man、woman、king、queen 那個概念:我們看不懂詞向量的絕對位置(每一維代表什麼),但看得懂相對關係,也就是兩個向量相減得到的方向。
先懂兩個詞:詞向量(word embedding)就是把每個字變成一串數字,例如 100 個數字;常出現在類似上下文的字,數字也會很像(第 2 週學過,見 [W2 第 08 章](https://app.notion.com/p/3e6fc631b03081b1aab8f5c4fc716850);本週 [第 01 章](https://app.notion.com/p/3e6fc631b0308169a5ebc6aa047ff58d))。向量相減就是兩串數字一格一格相減,得到「從 A 走到 B 要往哪個方向、走多遠」。
資料集是 Google Word Analogy,共 19,544 題,每題四個字 A B C D,給 A、B、C,猜 D。題目分兩大類:語意(semantic,看意思,例如首都→國家、男→女)5 個子類別;語法(syntactic,看字形,例如形容詞→副詞、單數→複數)9 個子類別。
生活比喻:像英文填空「big 之於 bigger,就像 small 之於__」,答得出來代表你看懂了「比較級」這個關係,不是背了單字。
預測一題的步驟:查出 A、B、C 的向量 → 算 B − A + C,得到目標位置 → 在整本字典裡找方向最接近(cosine 最高)的字 → 排除 A、B、C 自己 → 第一名就是預測的 D,再跟標準答案比對。下圖用 king : queen :: man : ? 走一遍:
```mermaid
flowchart LR
A["題目:king、queen、man"] --> B["算 queen − king + man"]
B --> C["跟字典每個字算 cosine"]
C --> D["排除 king、queen、man"]
D --> E["第一名:woman"]
E --> F["跟標準答案比對:答對"]
```
圖的重點在第三、四步:比的是方向(cosine),不是內積;要排除題目的字,是因為算出來的位置常常最靠近 queen 或 man 自己。
為什麼不用內積?內積(第 2 週學過:兩串數字一格一格相乘再加總,見 [W2 第 06 章](https://app.notion.com/p/3e6fc631b0308121891cc1705fe5be4a))會被向量的長短影響,越長的向量分數越高;cosine 把長度除掉、只比方向,比較公平。
考試可能怎麼問:「詞向量怎麼解 king : queen :: man : ?,為什麼要排除題目裡的字?」
**注意:HW1 p.2 的算式印成 King + Queen − Man ≈ Woman,這是打錯。照程式模板的提示,正確是 Queen − King + Man ≈ Woman,也就是 D ≈ B − A + C。**
下面「手算一次(進階,可跳過)」摺疊在做什麼(白話):用三個只有 3 個數字的假向量,真的算一次 queen − king + man,再跟 woman、boy、apple 這些候選字比方向。結果 woman 分數最高,證明這套方法真的會挑到 woman;也順便看到內積為什麼會被長度騙、題目的字為什麼要排除。
14 個子類別各考什麼?
語意 5 類共 8,869 題:capital-common-countries(506 題,Athens→Greece)、capital-world(4,524,Abuja→Nigeria)、currency(866,Algeria→dinar)、city-in-state(2,467,Chicago→Illinois)、family(506,boy→girl)。
語法 9 類共 10,675 題,名稱都以 gram 開頭:adjective-to-adverb(992,amazing→amazingly)、opposite(812,acceptable→unacceptable)、comparative(1,332,bad→worse)、superlative(1,122,bad→worst)、present-participle(1,056,code→coding)、nationality-adjective(1,599,Albania→Albanian)、past-tense(1,560,dancing→danced)、plural(1,332,banana→bananas)、plural-verbs(870,decrease→decreases)。
要先懂什麼?cosine similarity
cosine similarity(餘弦相似度)= 兩個向量的內積 ÷ 兩者長度相乘。它只看兩個方向夾多大的角,不看長短:1 是方向完全一樣,0 是互相垂直。投影片原句:「In a vector-space representation the cosine coefficient of two document vectors is a measure of similarity」(brief p.51)。
所以對這份作業的影響是:預測 D,就是在整個字典裡找跟 B − A + C 夾角最小的字。
它到底怎麼運作?手算一次(進階,可跳過)
假設向量只有 3 維,分別代表皇室感、男性感、人類感(真的向量沒辦法這樣解釋,只為了好算):king (0.9, 0.8, 0.7)、queen (0.9, 0.2, 0.7)、man (0.1, 0.8, 0.9);候選字 woman (0.2, 0.2, 0.8)、boy (0.1, 0.7, 0.5)、apple (0.1, 0.1, 0.0)。
1. 目標 = queen − king + man = (0.1, 0.2, 0.9),長度 ≈ 0.927。
2. woman:內積 0.1×0.2 + 0.2×0.2 + 0.9×0.8 = 0.78,長度 ≈ 0.849,cos = 0.78 ÷ (0.927 × 0.849) ≈ 0.991。
3. 全部排序:woman 0.991、man 0.875、boy 0.747、queen 0.708、king 0.681、apple 0.229。
4. 排除 king、queen、man,第一名 woman,答對。
觀察:man 排第二,所以 Gensim 的 most_similar 會自動排除輸入的字。man 的內積 0.98 比 woman 的 0.78 大,只因為 man 的向量比較長;cosine 除掉長度,才不會被長短騙。
老師原話是什麼?
「沒辦法知道這種絕對的向量表示,至少我們可以知道相對的向量的概念」(1:48:35)
## [1:49:50](https://www.youtube.com/watch?v=g0QE6O17BWE&t=6590s) 程式模板、Colab、助教影片
老師坦白說,把投影片丟給 GPT 就寫得出整份作業,但還是給程式模板(template)當規範。有模板一樣可以 vibe coding(用口語描述,讓 AI 寫程式)。程式碼在課程 GitHub,在 Google Colab 上跑,下載資料的步驟都寫好了,更細的操作有助教錄的影片。
GitHub 是放程式碼的公開網站,作業的程式模板就放在那裡,下載下來就能在 Colab 打開。
生活比喻:模板像考卷上的答案格,AI 可以幫你想答案,但要寫在指定的格子裡,改卷的人才找得到。
考試可能怎麼問:這段是作業操作,不太會出成考題(我判斷);要記的是只能在 TODO 格子裡寫。
**注意:老師口頭說「你要自己重寫也可以」(1:50:19),但 HW1 p.36 寫「Do not modify the code template (only changes to data loading are allowed).」,違反扣 5 分。照 PDF:只在 TODO 格子裡寫。**
要先懂什麼?Colab 和 .ipynb 是什麼?
Colab 是 Google 的線上 Python 環境,不用安裝,還能免費用 GPU(HW1 p.7)。檔案格式是 Jupyter notebook(.ipynb):一格一格的程式和文字,跑完的輸出(數字、表格、圖)會存在檔案裡。所以交出去之前每格都要跑過,輸出要留著。
老師原話是什麼?
「雖然有Template你一樣也是可以Vibe Coding」(1:50:15)
「我們會有另外一段錄影是助教錄的會比較細一點」(1:50:32)
## [1:51:30](https://www.youtube.com/watch?v=g0QE6O17BWE&t=6690s) 評分:程式 TODO 加報告
作業分兩塊:程式 55%(七個 TODO,每個有配分)加報告 45%。PDF 還有一條硬規定:.ipynb 要留著 20% wiki 版本的執行結果,沒留的話,所有跟實驗結果和圖有關的分數都拿不到(HW1 p.31)。
TODO 是程式模板裡留空、標著「TODO」要你自己補上的程式格子,一共 7 格,每格各有配分。
生活比喻(老師自己的):評分像聯考作文,都寫了不代表滿分。你被扣一兩分,就代表有人做得比你好,不用計較。
下圖是七個 TODO 的流程和配分,分成上下兩條路線:
```mermaid
flowchart LR
Q["類比題 19,544 題"] --> T1["TODO1 轉成表格 5%"]
T1 --> T2["TODO2 用 GloVe 預測 10%"] --> T3["TODO3 畫 t-SNE 5%"]
W["維基百科文章"] --> T4["TODO4 抽樣 20% 5%"] --> T5["TODO5 訓練自己的向量 10%"]
T5 --> T6["TODO6 用自己的向量預測 10%"] --> T7["TODO7 畫 t-SNE 10%"]
T1 --> T6
```
上面那條用別人訓練好的 GloVe 向量;下面那條用自己抽的 wiki 文章訓練向量,再做同樣的預測和畫圖。TODO1 轉好的題目表,兩條路線都會用到。
考試可能怎麼問:「現成向量和自己訓練的向量,類比準確率差在哪?為什麼?」這正是兩條路線要你比較的事。
下面「分數怎麼算」摺疊在說什麼(白話):準確率就是答對題數除以總題數;預測多一個字母、或題目裡的字查不到,都算答錯。它用 4 題小例子示範,提醒你報告要把「差一點的錯」和「查不到字的錯」分開分析。
預測做完,分數怎麼算?手算一次(進階,可跳過)
模板已寫好評分程式:準確率 = 預測跟標準答案完全一樣的題數 ÷ 總題數,大類、子類別各算一次。假設 family 只有 4 題,用自己訓練的向量:
- boy girl brother → sister(答案 sister,對)
- king queen man → woman(答案 woman,對)
- father mother son → daughters(答案 daughter,錯:多一個 s 也算錯)
- he she his → 沒有預測(前處理把 he、she、his 當停用詞刪了,查不到,錯)
準確率 = 2 ÷ 4 = 50%。差一點的錯(第 3 題)和查不到字的錯(第 4 題)原因完全不同,報告要分開講。
老師原話是什麼?
「不要去計較說這個分數為什麼你被扣了一分兩分這樣子」(1:52:17)
「你被扣了一分一定是有人有做然後比你好然後拿到滿分」(1:52:24)
## [1:52:32](https://www.youtube.com/watch?v=g0QE6O17BWE&t=6752s) TODO 內容:現成向量與 wiki 自己訓練
前三個 TODO 用現成向量:模板預設 glove-wiki-gigaword-100,也就是 GloVe、100 維、用 Wikipedia 加 Gigaword 新聞共 60 億個 token 訓練、全部小寫。後四個拿 Wikipedia dump(維基百科全站文字備份)自己訓練,再做一樣的事;工具是 Gensim(Python 的詞向量套件),怎麼訓練沒有太多限制,可以自己改參數、試變形。
這兩種向量是什麼?(本週學過)word2vec 是讓電腦拿一個字去猜旁邊的字(或反過來),猜多了就學出每個字的向量([第 03 章](https://app.notion.com/p/3e6fc631b03081f1b4bfe71efbd2cd7a));GloVe 是先數整份語料裡哪些字常一起出現,再從這張統計表學向量([第 04 章](https://app.notion.com/p/3e6fc631b03081c5b27ce6cbad0d3d3a))。兩種做出來的都是「一個字=一串數字」。100 維就是每個字用 100 個數字表示;token 是文章切開後的一個單位,大多是一個字或一個標點。
TODO3、TODO7 一定要畫 t-SNE(把高維向量壓成 2 維來畫圖的方法);想加畫別的降維方法來比較也可以,因為降維本身就有誤差。
抽樣的步驟:wiki 資料助教已清好(11 個 .gz 檔,用 gdown 下載),只要抽 20%,個人 Colab 額度跑得完。正確做法是一行一行讀,每行以 20% 機率留下,記憶體裡永遠只放一行;記憶體爆掉,通常是先把全部載進來再抽。
.gz 是壓縮檔(跟 .zip 類似);gdown 是從 Google 雲端硬碟下載檔案的 Python 小工具,模板已經寫好怎麼用。記憶體(RAM)是程式執行時暫放資料的地方,Colab 給的容量有限,整份維基百科一次塞不下。
有同學問沒學過 Python 會不會很辛苦:老師說用 C 的想法寫 Python 一開始會不習慣,但邏輯差不多,做久就還好。
生活比喻:t-SNE 像把地球儀攤成平面地圖,鄰國是誰大致保留,但面積和遠距離會變形(格陵蘭看起來跟非洲差不多大)。
下圖是投影片給的 TODO3 範例,把 family 子類別的字壓成 2 維:
[[IMG: C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\nlp_hw1_p020.png | HW1 p.20:family 子類別 46 個字用 t-SNE 壓成 2 維]]
圖上重點:
- 標題「t-SNE」「Word Relationships from Google Analogy Task」:用 t-SNE 畫出 Google 類比資料集裡字和字的關係。
- 每個藍點是一個字,都是 family(家庭)子類別的稱謂,例如 king(國王)、princess(公主)、stepbrother(繼兄弟)、bride(新娘)、groom(新郎)。
- 橫軸、縱軸的數字(−2.0 到 2.0、−6 到 −2)只是壓扁後的座標,本身沒有意思。
- 這張圖在講:意思或用法相近的字,壓成 2 維後還是會擠在一起。
圖上 king 和 prince、queen 和 princess、mom 和 dad、bride 和 groom 兩兩黏在一起,he、she、his、her 聚在左上。讀圖要小心:t-SNE 只保留「誰是鄰居」,群的大小、群和群的距離、方向都不可靠,king→queen 和 man→woman 不一定畫成平行。
考試可能怎麼問:「t-SNE 圖上兩群離很遠,能說它們意思差很多嗎?為什麼?」
下面「TODO2、TODO5 的細節(進階,可跳過)」摺疊在說什麼(白話):程式上的眉角,包括怎麼叫 Gensim 幫你算 B − A + C 並找最接近的字、為什麼題目要先轉小寫、查不到字時要記成答錯,以及自己訓練向量時能調哪些設定。不寫程式的人只要記得:大小寫和查不到的字,都會直接拉低分數。
每個前處理都會讓分數變好嗎?
不會,HW1 p.28 自己寫了 not every tricks yield better performance。用這份資料集算給你看:
- 刪停用詞(the、he、his 這類常見但意思少的字):family 類 506 題裡有 86 題(17%)用到 he、she、his、her,常見停用詞表會把它們刪掉,這 86 題全部查不到。
- 詞形還原(lemmatization,rocks 變 rock):present-participle、past-tense、plural、plural-verbs 共 4,818 題(約 25%),考的正是 dancing 和 danced、bird 和 birds 的差別,還原掉就學不到。
- 只留高頻字:少見的國家名、貨幣名(例如 kwanza)可能被丟掉。
所以前處理要一次改一項、各跑一次準確率。
它到底怎麼運作?TODO2、TODO5 的細節(進階,可跳過)
- TODO2:每題拆成 A、B、C、D,D 當標準答案(gold)。用 Gensim 的 most_similar:positive 放 B 和 C,negative 放 A,取第一名。它會自動排除 A、B、C,也會先把每個向量長度調成 1 再加減。
- 大小寫:9,962 題(約一半)有大寫字,例如 Athens;這份 GloVe 和助教清好的 wiki 都是小寫,不先轉小寫就查不到。
- OOV(字典裡沒有的字):查不到字時 Gensim 會報錯(KeyError),要自己接住、記成答錯。自己訓練的模型字典小,OOV 會明顯變多,就是第 04 章講的 OOV 問題。
- TODO5:Gensim Word2Vec 官方預設 vector_size=100(維度)、window=5(左右各看幾個字)、min_count=5(出現不到 5 次的字丟掉)、sg=0(CBOW;1 是 skip-gram)、negative=5、epochs=5。報告第 1 題要寫超參數,要記下來。
- 注意:第 03 章老師口頭說詞向量預設「700 多維」;Gensim 官方文件寫的預設是 100 維,模板的 GloVe 也是 100 維。報告照你實際設定的數字寫。
- PCA 這類線性投影會保留「兩段位移相等」的關係,可以跟 t-SNE 對照。延伸閱讀:[How to Use t-SNE Effectively(Distill)](https://distill.pub/2016/misread-tsne/)
老師原話是什麼?
「如果你用c的想法來想python一開始會很不習慣」(1:53:42)
「因為降維的東西本身就會有點誤差」(1:54:22)
「我們的作業的設計都是在你個人的Colab的運算的quota可以跑得完的」(1:55:40)
「你不要把百分之百的wikidump都載入」(1:55:59)
## [1:56:53](https://www.youtube.com/watch?v=g0QE6O17BWE&t=7013s) 報告 45%:可以用 AI,但要附實驗
報告題目列得很細是為了給方向,那是最低要求,等於把要餵給 AI 的 prompt 寫好了。可以用 AI 輔助,但一定要消化 AI 做了哪些事、分析在講什麼。
今年多一條:額外實驗的程式要附上,因為以前有人叫 AI 生出漂亮的分析圖,卻沒真的做實驗。老師希望你動手試:換參數、語料給少一點、看 OOV 問題。作業可以做得很深,甚至拿第 04 章的 MTEB 資料集來跑;分數會有一個範圍,把大家的差距拉開。
這段的三個名詞:OOV(out-of-vocabulary,字典外的字)是模型訓練時沒看過、所以查不到向量的字,語料越小這種字越多;MTEB 是一大套公開考題,用來評比各種向量模型好不好(兩個都是本週 [第 04 章](https://app.notion.com/p/3e6fc631b03081c5b27ce6cbad0d3d3a) 學過)。超參數(hyperparameter)是訓練前由人先設定的數字,例如每個字用幾個數字表示、往左右看幾個字,不是模型自己學出來的;報告第 1 題要寫。
生活比喻(老師自己的):漫畫《天才兒童》裡小學生運動會的越野障礙賽,最後一關是寫博士論文。意思是這份作業可以一路深挖下去。
考試可能怎麼問:「只用 5% 的 wiki 訓練,類比準確率會怎麼變?為什麼?」
**注意:老師口頭說額外實驗附 notebook 連結 (1:57:50);HW1 p.31 寫的是把額外實驗的程式放在同一份 notebook 的報告區塊下面,沒放該題 0 分。照 PDF 做。**
| 報告題目(HW1 p.31) | 配分 |
| 1. 用了哪個模型、哪些前處理、哪些超參數 | 5% |
| 2. 抽樣 5%、10%、20% 的 wiki,效能如何 | 10%(每種 3%) |
| 3. 換一份 wiki 以外的語料,各類別效能如何:呈現結果、介紹語料跟 wiki 的差別、解釋為什麼變好或變差 | 15%(各 5%) |
| 4. 挑至少 5 個字,各找 5 個最相似的字,寫觀察 | 10% |
| 5. 任何能加強報告的東西 | 5% |
| 6. Generative AI Usage | 必寫,沒寫扣 10 分 |
報告要怎麼寫出 insight?
每題都寫現象、原因、證據。幾個方向:
- 抽樣 5%、10%、20%:也記 OOV 題數。準確率上升,有多少是因為字終於查得到,有多少是向量變準?
- 換語料(例如新聞或小說):capital-world、currency 需要國際知識,語料少提國家就會掉;gram 類只要字形變化,大部分語料都有。用子類別準確率驗證你的猜測。
- 最相似的五個字:反義詞常排很前面,因為上下文很像(I feel good、I feel bad)。這呼應第 02 章的分布假說:上下文相似不等於意思相同。
(本週學過:分布假說是說「一個字的意思由它常出現的鄰居決定」,見 [第 02 章](https://app.notion.com/p/3e6fc631b030815a90adc80645bf2668)。good 和 bad 的鄰居很像,所以向量也很像。)
老師原話是什麼?
「但是你一定要消化你這個AI做了哪些事情」(1:57:32)
「但是我根本不知道他有沒有做這個實驗」(1:58:12)
「我給他的不同的參數不同的想法或是甚至語料我給他少一點」(1:58:37)
「在這個作業其實也可以很深入」(1:59:38)
## [2:00:00](https://www.youtube.com/watch?v=g0QE6O17BWE&t=7200s) 格式、抄襲與期限
人數多,格式一定要照規定;有一部分會先用 AI 審查,不符合規格很容易沒分。可以跟同學討論,但要分開寫,prompt、報告、心得都不能一樣。兩份一樣,雙方都 0 分,被抄的人也一樣【老師強調】(2:01:09),這條讓你有理由拒絕借人抄。
9/24 公布,三週後交;最後一週才開始寫會趕。覺得簡單的人負擔不大,但想寫出分析多的好報告就要花時間。有問題可以在 Slido 上問。
幾個名詞:Slido 是課堂上匿名發問的網站;下表的 requirements.txt 是一個純文字檔,列出你用到的 Python 套件和版本(例如 gensim==4.3.3),助教照著裝就能跑你的程式;.zip 是把多個檔案打包壓縮成一個檔。
生活比喻:像考試作弊被抓,借答案給人看的也一起記過。
考試可能怎麼問:這段是繳交規定,不會出成考題(我判斷),但違反會直接扣分。
| 規定(HW1 p.32–36) | 違反扣分 |
| 程式檔名 NLP_HW1_school_student_ID.ipynb,只收 .ipynb | −5 |
| 壓縮檔名 NLP_HW1_school_student_ID.zip(.ipynb 加 requirements.txt) | −5 |
| 附 requirements.txt(例:gensim==4.3.3) | −5 |
| 報告寫出生成式 AI 使用情形 | −10 |
| 報告寫出執行環境和 Python 版本 | −5 |
| 程式模板只能改資料載入的部分 | −5 |
| 程式或報告跟別人高度相似 | 雙方各 −100 |
用了 AI 或網路上的程式,要怎麼標?
HW1 p.35:用了生成式 AI,程式註解和報告兩處都要寫明;參考網路程式要附連結。檔名的 school 欄位 PDF 只給 NTHU 範例,交之前先問助教。下課回來後老師說,繳交格式的細節由助教回覆(見第 06 章開頭)。
老師原話是什麼?
「所以你如果不符合這個規格其實很容易就沒有分數」(2:00:14)
「討論總要寫的時候要分開寫」(2:00:33)
「給他一個條件是你被抄你一樣是0分」(2:01:09)
「兩份一樣全都是0分」(2:01:19)
## 補充:額外實驗可以請 AI 出主意
老師說,不知道額外實驗要做什麼,可以直接問 AI 想拿高分該做什麼實驗 (1:58:50)。但 AI 提的實驗要自己真的跑、程式附在同一份 notebook,報告也要寫清楚 AI 幫了什麼(Generative AI Usage,沒寫扣 10 分)。
老師原話是什麼?
「當然你也可以問問AI說這個我要得高分」(1:58:50)
## Self-check
Q1. In the word analogy task "king : queen :: man : ?", how does a word embedding model predict the answer, and why are the input words excluded?(中文:詞類比題「king 之於 queen,如同 man 之於?」,詞向量模型怎麼預測答案?為什麼要排除題目裡的字?)
**Answer**: It computes v(queen) − v(king) + v(man) (B − A + C) and returns the word with the highest cosine similarity to this vector, ideally "woman". The input words are excluded because the target vector usually stays closest to B or C themselves.
中文:先把 queen 的向量減掉 king 的向量、再加上 man 的向量(B − A + C),得到一個目標位置;再到整本字典裡找跟這個位置方向最接近(cosine 最高)的字,理想上是 woman。要排除 king、queen、man,是因為算出來的位置通常還是離 queen 或 man 自己最近,不排除的話,答案常常就是題目裡的字。
Q2. Give one example each of how stop-word removal and lemmatization can hurt analogy accuracy.(中文:各舉一個例子,說明刪停用詞和詞形還原怎麼讓類比準確率變差。)
**Answer**: Stop-word removal deletes pronouns (he, she, his, her), so family questions using them become out-of-vocabulary. Lemmatization maps birds → bird and danced → dance, erasing the differences tested by the plural and past-tense sub-categories.
中文:刪停用詞會把 he、she、his、her 這些代名詞刪掉,family 類用到它們的題目就查不到字(OOV,字典外的字),直接算錯。詞形還原會把 birds 變成 bird、danced 變成 dance,可是複數類、過去式類考的正是這個差別,還原掉模型就學不到。所以前處理要一次改一項、各測一次準確率。
Q3. What does t-SNE do, and what should you NOT conclude from a t-SNE plot of word embeddings?(中文:t-SNE 在做什麼?從詞向量的 t-SNE 圖上,哪些結論不能下?)
**Answer**: t-SNE is a nonlinear dimensionality reduction method that maps vectors into 2D while keeping nearby points near each other. Cluster sizes and distances between clusters are not reliable, and directions are not preserved, so analogy offsets need not look parallel.
中文:t-SNE 是非線性的降維方法,把高維向量壓到 2 維畫圖,盡量讓原本是鄰居的點在圖上也靠近。但群的大小、群和群之間的距離都不可靠,方向也不保留,所以 king→queen 和 man→woman 在圖上不一定是平行的箭頭,不能拿圖來證明類比成立或不成立。
Q4. Why might embeddings trained on a 20% Wikipedia sample score lower on the analogy test than pre-trained GloVe vectors? Give two reasons.(中文:用 20% 維基百科自己訓練的向量,類比分數為什麼可能比現成的 GloVe 低?說兩個原因。)
**Answer**: (1) Less data: glove-wiki-gigaword-100 was trained on about 6 billion tokens. (2) More out-of-vocabulary words: a smaller corpus, min_count filtering and pre-processing drop rare words, and questions containing them count as wrong.
中文:第一,資料量少:glove-wiki-gigaword-100 用了約 60 億個 token 訓練,20% 的 wiki 少很多,向量學得比較不準。第二,字典外的字(OOV)變多:語料小、min_count 門檻和前處理會把少見的字丟掉,含這些字的題目直接算錯。
讀完了嗎?下一章:[06 N-gram 語言模型(2:12–2:33)](https://app.notion.com/p/3e6fc631b03081588140d7f6a95e5bb4)|回到週頁:[W3(9/24)](https://app.notion.com/p/3e6fc631b03081ff9776f36fab3e6e50)