# 章節包:自然語言處理(NLP)W3(9/24)第 02 章「分布假說與 LSA/LSI」
影片 0:36:38–0:53:48,YouTube ID g0QE6O17BWE。Notion 章節頁 https://app.notion.com/p/3e6fc631b030815a90adc80645bf2668(頁 ID 3e6fc631b030815a90adc80645bf2668),頁面標題「02 分布假說與 LSA/LSI(0:36–0:53)」。
## 1. 第一行(直接照抄,不要改)
[自然語言處理](https://app.notion.com/p/3e6fc631b03081b4a9e8f91f3411f61f) › [W3(9/24)](https://app.notion.com/p/3e6fc631b03081ff9776f36fab3e6e50) › 02|影片 [0:36:38–0:53:48](https://www.youtube.com/watch?v=g0QE6O17BWE&t=2198s)|投影片 W1_NLP_brief_v2 p.70–80|上一章 [01 詞向量的起源與類比(0:02–0:36)](https://app.notion.com/p/3e6fc631b0308169a5ebc6aa047ff58d)|下一章 [03 word2vec 的訓練方式(1:02–1:28)](https://app.notion.com/p/3e6fc631b03081f1b4bfe71efbd2cd7a)
## 1b. 最後一行(直接照抄,放在 Self-check 後面,當全頁最後一行)
讀完了嗎?下一章:[03 word2vec 的訓練方式(1:02–1:28)](https://app.notion.com/p/3e6fc631b03081f1b4bfe71efbd2cd7a)|回到週頁:[W3(9/24)](https://app.notion.com/p/3e6fc631b03081ff9776f36fab3e6e50)
## 2. 各段標題(照順序;每段一個 ## 標題,直接照抄連結)
- `## [0:36:38](https://www.youtube.com/watch?v=g0QE6O17BWE&t=2198s) 分布假說:看一個字的鄰居` 老師講什麼:語言學家 Firth 的想法:不認識的字可以從前後文猜出來。貓和狗周邊的字幾乎一樣,所以概念相近;你不會看到文章寫「卡車舔他的貓」。目標是讓電腦學出一個能反映共現機率的表示。
- `## [0:38:09](https://www.youtube.com/watch?v=g0QE6O17BWE&t=2289s) 以前的做法:共現矩陣小例子` 老師講什麼:講 word2vec 之前,先看以前怎麼做。用 Stanford 課程的三句話當例子,數字兩兩相鄰出現的次數,做成對稱的共現矩陣。
- `## [0:40:26](https://www.youtube.com/watch?v=g0QE6O17BWE&t=2426s) 用 SVD 降維` 老師講什麼:把共現矩陣用 SVD 拆開,只留最重要的幾個維度再乘回去,就得到每個字的向量。畫到 2D 以後,NLP 和 deep 因為都接在 like 後面而靠在一起。老師沒細講 SVD 怎麼算。
- `## [0:43:49](https://www.youtube.com/watch?v=g0QE6O17BWE&t=2629s) 為什麼需要 LSA` 老師講什麼:一詞多義,所以字有出現不代表相關;一個概念有很多種說法,所以字沒出現也不代表無關。老師把 LSI 比喻成「參觀博物館」,看以前的人怎麼做,核心就是 SVD。(前面約 1 分鐘的逐字稿因為干擾變成亂碼。)
- `## [0:45:00](https://www.youtube.com/watch?v=g0QE6O17BWE&t=2700s) 十篇文章範例:Linux 與基因體` 老師講什麼:前五篇講 Linux,後五篇講基因體,兩組只靠 database 這個字連起來。做成詞-文件矩陣以後,搜尋「Dolly 羊」原本絕對找不到前五篇。
- `## [0:48:40](https://www.youtube.com/watch?v=g0QE6O17BWE&t=2920s) 只留前 K 個奇異值再乘回去` 老師講什麼:對角矩陣只留最大的兩個值,其餘設成 0,再乘回去重建矩陣。原本是 0 的地方出現了正值或負值:database 這個字把概念傳到另一群文章,這就是語意延伸。
- `## [0:51:20](https://www.youtube.com/watch?v=g0QE6O17BWE&t=3080s) LSA 與 LSI 的差別和致命傷` 老師講什麼:這個方法叫 LSA,拿去做檢索、建索引時叫 LSI。缺點有兩個:SVD 遇到十萬維的矩陣就算不動;新增一篇文章就要整個重算,沒辦法只補新的部分。所以後來改成用學的。
## 3. 老師強調/會考/不考的地方(原句已驗證;寫進筆記時 ASR 錯字要改正)
(無)
## 4. 這章摘要與重要度
一個字的意思由它的鄰居決定。在神經網路出現之前,LSA/LSI 用共現矩陣加 SVD 把相關的字拉近,但計算太貴,也沒辦法只補新資料。(一般)
## 5. 整堂課的提醒(ASR 錯字、老師口誤、投影片缺公式等;只用跟這章有關的)
- 0:00:00 那句「有任何疑問或感想,歡迎留言…點讚、訂閱、分享」是語音辨識幻覺,不是老師講的;0:01:21–0:02:30 是設定畫面,0:02:31 才開始上課。
- 0:42:31–0:43:48 疑似麥克風干擾(老師先問「有帶電池嗎」,接著說「為什麼幹擾」),逐字稿變成重複的「這個是電」加亂碼,約 1 分多鐘的內容遺失,大約是 brief p.74 的前半段。
- 作業一說明(1:46:39–2:02:06)用的是 NLP_HW1_word_emb.pdf,不在兩份投影片文字檔裡。本機有原檔(自然語言處理\NTHU_Natural_Language_Processing\2026\Assignments\Assignment1\),也有整理好的 自然語言處理\HW1\HW1_Word_Analogy_規定.md。
- W2 投影片這堂實際講到 p.17(困惑度),不只「開頭幾頁」;W2 p.4 跟 brief p.66(Markov/Shannon)是同一張,老師 2:16:45 自己說兩份投影片有重疊。
- YouTube 影片標題寫「Fall 2025」,實際是 2026-09-24 這堂(以網址為準)。
- brief p.68、p.69、p.89 是純圖頁(只有標題或 [IMAGE-ONLY]),0:26:48–0:36:38 那幾張類比圖各在 p.68 還是 p.69,從文字檔確認不了,寫章節時要轉成 PNG 看圖。
- 0:42:31–0:43:48 逐字稿是亂碼(重複「這個是電」加日文、俄文字元),約 1 分多鐘內容遺失,大概是老師在講 p.74「有出現不見得是相關」的前半;需要的話回去看影片。
- 作業一說明 PDF(NLP_HW1_word_emb.pdf)沒有 _text 文字版,第 5 章的 slides 欄無法標頁碼;需要的話先跑 slides_to_text.py。
- SOP 第 1 節寫 NLP-W3 用 W2 投影片的「開頭幾頁」,實際講到 W2 p.17(困惑度),建議改成 W2 p.1–17。
- 老師兩次說詞向量預設「700 多維」(1:04:34、1:22:11),可能跟 BERT 的 768 維混在一起;就我所知,Gensim word2vec 預設 vector_size 是 100,Google News 預訓練向量是 300 維。寫筆記前要再查證。
- 1:28:38 老師先說 GloVe 是 2013 年、又改口說 2014;投影片 p.91 寫 2014,考試照投影片寫。1:32:25 老師說「一般認為 GloVe 比 word2vec 好」,但投影片 p.93 寫「It depends」,Exam-ready 照投影片寫。
- 逐字稿裡 property/priority/publicity 大多是 probability(例:2:34:56「一串字的priority」),但 0:23:03「在算publicity的時候」比較像 perplexity,要看上下文,不能一律取代。
- 新發現的語音辨識錯字(建議加進 fix_transcript.py):WATTO VECTOR/what-to-vector/Wall-to-back/VoltoVector/waterbath/photo vector=word2vec;GrowVac/grow back=GloVe;Fosting=WordSim;Categor Label=character level;angry/engram=n-gram;CBUS=syllabus;基礎學習跟深入學習=機器學習跟深度學習;GPT ISO=GPTZero;turn in=Turnitin;Tica=TAICA;biblicoding=vibe coding;Contactual=contextual;Cross Entry=cross entropy;Wall-Embedded=word embedding;ntu庫=NTU COOL;Chanon=Shannon;Markup=Markov;annual p=NLP;Geno=genome;多利養=Dolly 羊;絞交=繳交;超習=抄襲;1:06:15「到Fur以後」可能是 BERT(不確定)。
## 6. 投影片文字(這章範圍)
**這幾頁的公式或內容只在圖裡(文字檔抓不到),寫 Exam-ready 與公式前先用 Read 看這幾張圖:**
- W1_NLP_brief p.76 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\brief_W1_NLP_brief_p076.png
- W1_NLP_brief p.77 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\brief_W1_NLP_brief_p077.png
--- W1_NLP_brief p.70 ---
Distributional Hypothesis
In other words, similar words will appear in similar contexts
The cat licked its fur
The dog licked its fur
No surprise “cat” and “dog” both appear near “lick” and “fur”. We should find
they also often appear near “eat”, “run”, “bite” and so on… but not near words
like “read”, “sophisticated”, or “wheel”.
“A word is characterized by the company it keeps.” (Firth 1957)
70
A Synopsis of Linguistic Theory, 1930–1955
--- W1_NLP_brief p.71 ---
Latent Semantic Analysis
Using a corpus of text as input, draw a window of a defined length around each word and count
co-occurrence statistics. The resulting matrix contains our word vectors.
Count Co-Occurrence
71
“Indexing by latent semantic analysis”, S. Deerwester, 1990
Words with similar meanings tend to appear in similar textual
contexts or co-occur across similar documents.
--- W1_NLP_brief p.72 ---
Simple example for word co-occurrence usage
Training corpus
◦“I like deep learning.”, “I like NLP.”, “I enjoy programming."
72
cooccurence
I
like
enjoy
deep
learning
NLP
programming
I
0
2
1
0
0
0
0
like
2
0
0
1
0
1
0
enjoy
1
0
0
0
0
0
1
deep
0
1
0
0
1
0
0
learning
0
0
0
1
0
0
0
NLP
0
1
0
0
0
0
0
programming
0
0
1
0
0
0
0
--- W1_NLP_brief p.73 ---
Simple example for word co-occurrence usage
SVD on this co-occurrence matrix
◦Reduce dimension
Use the 2 biggest singular value to represent words
73
like
enjoy
learning
deep
programming
NLP
I
--- W1_NLP_brief p.74 ---
Latent Semantic Analysis
74
Why need it?
◦serious problems for retrieval methods based on term matching
◦vector-space similarity approach works only if the terms of the query are explicitly presented in the relevant
documents
◦有出現不見得是相關
◦沒出現不見得是無關
◦the rich expressive power of natural language
◦often queries contain terms that express concepts related to text to be retrieved
TK Landauer “An Introduction to Latent Semantic Analysis”
--- W1_NLP_brief p.75 ---
Latent Semantic Indexing(LSI)
75
A statistical technique
Uses a linear algebra technique called singular value
decomposition (SVD)
◦attempts to estimate the hidden structure that generates terms
given concepts
◦discovers the most important associative patterns between words
and concepts
Data driven
◦A large collection of sentences or documents is employed
--- W1_NLP_brief p.76 ---
LSI and Text Documents
76
Let X denote a term-document matrix
X = [x1 . . . xn]T
◦each row is the vector-space representation of a document
◦each column contains occurrences of a term in each document in the
dataset
Latent semantic indexing
◦compute the SVD of X:
◦- singular value matrix (diagonal matrix)
◦set to zero all but largest K singular values -
◦obtain the reconstruction of X by:
ˆ
T
V
U
=
ˆ
ˆ
T
V
U
=
--- W1_NLP_brief p.77 ---
Genome news
LSI Example
77
A collection of documents:
d1:
Indian government goes for open-source software
d2:
Debian 3.0 Woody released
d3:
Wine 2.0 released with fixes for Gentoo 1.4 and Debian 3.0
d4:
gnuPOD released: iPOD on Linux… with GPLed software
d5:
Gentoo servers running at open-source mySQL database
d6:
Dolly the sheep not totally identical clone
d7:
DNA news: introduced low-cost human genome DNA chip
d8:
Malaria-parasite genome database on the Web
d9:
UK sets up genome bank to protect rare sheep breeds
d10:
Dolly’s DNA damaged
Linux OS
--- W1_NLP_brief p.78 ---
LSI Example
78
The term-document matrix XT
d1 d2 d3 d4 d5 d6 d7 d8 d9 d10
open-source 1 0 0 0 1 0 0 0 0 0
software
1 0 0 1 0 0 0 0 0 0
Linux
0 0 0 1 0 0 0 0 0 0
released
0 1 1 1 0 0 0 0 0 0
Debian
0 1 1 0 0 0 0 0 0 0
Gentoo
0 0 1 0 1 0 0 0 0 0
database
0 0 0 0 1 0 0 1 0 0
Dolly
0 0 0 0 0 1 0 0 0 1
sheep
0 0 0 0 0 1 0 0 0 0
genome
0 0 0 0 0 0 1 1 1 0
DNA
0 0 0 0 0 0 2
0 0 1
--- W1_NLP_brief p.79 ---
LSI Example
79
The reconstructed term-document matrix after projecting on a subspace of dimension K=2
= diag(2.57, 2.49, 1.99, 1.9, 1.68, 1.53, 0.94, 0.66, 0.36, 0.10)
= diag(2.57, 2.49, 0, 0, 0, 0, 0, 0, 0, 0)
d1 d2 d3 d4 d5 d6 d7 d8 d9 d10
open-source 0.34 0.28 0.38 0.42 0.24 0.00 0.04 0.07 0.02 0.01
software
0.44 0.37 0.50 0.55 0.31 -0.01 -0.03 0.06 0.00 -0.02
Linux
0.44 0.37 0.50
0.55 0.31 -0.01 -0.03 0.06 0.00 -0.02
released
0.63 0.53 0.72 0.79 0.45 -0.01 -0.05 0.09 -0.00 -0.04
Debian
0.39 0.33 0.44 0.48 0.28 -0.01 -0.03 0.06 0.00 -0.02
Gentoo
0.36 0.30 0.41 0.45 0.26 0.00 0.03 0.07 0.02 0.01
database 0.17 0.14 0.19 0.21 0.14
0.04 0.25 0.11
0.09 0.12
Dolly
-0.01 -0.01 -0.01 -0.02 0.03 0.08 0.45 0.13 0.14 0.21
sheep
-0.00 -0.00 -0.00 -0.01 0.03 0.06 0.34 0.10 0.11 0.16
genome
0.02 0.01 0.02 0.01 0.10 0.19 1.11 0.34 0.36 0.53
DNA
-0.03 -0.04 -0.04 -0.06 0.11 0.30 1.70 0.51 0.55 0.81
T
ˆ
ˆ
Negative value!
--- W1_NLP_brief p.80 ---
Problems
●The original matrix still has the same dimension as our vocabulary size -
potentially 100,000 x 100,000
●The matrix is extremely sparse
●We can perform Singular Value Decomposition (SVD) for dimensionality
reduction, however at a quadratic computational cost
●Adding a new word changes the entire matrix
80
## 7. 逐字稿(0:36:38 前後各多 1 分鐘,原始行)
[00:35:38] 然後這是對應的
[00:35:39] 他的translation
[00:35:41] 就是
[00:35:43] 同樣這些字
[00:35:44] 在另外一種語言的
[00:35:45] 這種relation
[00:35:47] 所算出來的這種embedding
[00:35:49] 其實分佈其實是一樣
[00:35:52] 所以為什麼我們可以做
[00:35:54] 做這個translation
[00:35:55] 就是當我看完英文字典之後
[00:35:57] 我就可以去
[00:35:58] 講法文的這樣子
[00:36:00] anyway就是
[00:36:01] 他的mapping
[00:36:03] 因為詞的用法
[00:36:04] 不會有太大的改變
[00:36:05] 尤其是
[00:36:06] 同樣語系的
[00:36:08] 應該說同樣語系的
[00:36:10] 這個可能對應到中文
[00:36:12] 或者是其他的不同
[00:36:14] 可能分佈會有點不太一樣
[00:36:16] 這樣子
[00:36:18] 好
[00:36:19] 所以這件事情我們當然是
[00:36:22] 能夠做到這樣
[00:36:23] 其實是我們的目標
[00:36:24] 但的確在
[00:36:25] 在那個年份
[00:36:26] 其實就一大堆人在做
[00:36:28] 然後一直做到一個
[00:36:29] 非常pratical的
[00:36:30] waterbath出來之後
[00:36:31] 有grow back
[00:36:32] 有fast text之後
[00:36:33] 大家就覺得這一塊
[00:36:35] 就底定是這個樣子
[00:36:38] 但前期他其實有很多的想法
[00:36:40] 就是說
[00:36:41] 為什麼可以這樣做
[00:36:44] 我要用什麼方式訓練
[00:36:46] 然後我的訓練資料在哪裡
[00:36:48] 什麼什麼
[00:36:49] 這些東西都用
[00:36:51] 以前有很多語言學的想法
[00:36:54] 在做這件事情
[00:36:56] 這句話其實是
[00:36:58] 可能大家也都知道
[00:36:59] 但是他更早的一個
[00:37:02] 其實點或是他的citation
[00:37:05] 應該是來自於這個
[00:37:07] 語言學家講的這個東西
[00:37:09] 就是一個字
[00:37:11] 是跟隨著
[00:37:12] 是用他周邊的字
[00:37:15] 所表現出來
[00:37:16] 就這個字的意思
[00:37:17] 你不知道
[00:37:19] 就是有點像
[00:37:20] 你去讀一個英文句子
[00:37:22] 這個字你不知道
[00:37:23] 但是你可以看出
[00:37:24] 前後文在講
[00:37:25] 這個字大概是什麼意思
[00:37:27] 你大概就猜出來這樣子
[00:37:29] 也就是說
[00:37:30] 如果這兩個字
[00:37:31] keg跟dog
[00:37:32] 他的周邊的字
[00:37:33] 幾乎都一樣
[00:37:34] 在我眾多語料裡面
[00:37:36] 他們旁邊發生的字都一樣
[00:37:38] 你大概可以猜出
[00:37:39] 他們兩個字的概念是一樣
[00:37:41] 你不會看到一個文章在描述
[00:37:44] 卡車舔他的貓
[00:37:46] 這樣子
[00:37:47] 所以就用這樣的想法
[00:37:49] 我們就
[00:37:50] 那我就知道說
[00:37:51] 我利用這種co-occurrence probability的關係
[00:37:55] 我就可以去
[00:37:57] 能不能讓電腦去學會一個表示
[00:38:00] 這個表示剛好可以hit到
[00:38:02] 這個co-occurrence probability
[00:38:04] 所以這個精神
[00:38:06] 就是這樣延伸出來的
[00:38:09] 那在講what-to-vector之前
[00:38:12] 我們來看一下
[00:38:13] 以前我們在做NLP的想法是什麼
[00:38:16] 這件事情其實
[00:38:18] 雖然你說
[00:38:19] 老師現在也不會用LSI
[00:38:21] 這個
[00:38:22] 雖然聽起來很炫的技術
[00:38:25] 但是他不pratical
[00:38:26] 也不好用
[00:38:27] 也不好算
[00:38:28] 然後算出來也不是那麼準
[00:38:30] 但是你要想想看
[00:38:31] 以前在做這塊的時候
[00:38:33] 其實這個技術是非常炫
[00:38:35] 就是很厲害
[00:38:37] 我可以靠著語料的讀取
[00:38:40] 我不用做監督室學習的資料
[00:38:43] 我就可以Chain這種貓跟狗的關係
[00:38:46] 我就可以Chain出來
[00:38:47] 而不是靠大型的類神經網路去做
[00:38:51] OK
[00:38:52] 那精神上也是這樣
[00:38:54] 就是說我的字
[00:38:56] 我用意識的字
[00:38:57] 它旁邊的這個textual context
[00:39:01] 或是所謂的co-occurrence的東西
[00:39:04] 其實是很接近
[00:39:06] 其實是很接近的
[00:39:08] 那我們用這個例子
[00:39:12] 這個例子其實是Stanford課的例子
[00:39:15] 然後其實是可以用
[00:39:18] 這一個LSI算出來
[00:39:21] 不過我們資料沒有很多
[00:39:25] 但是你其實是可以算
[00:39:26] 我只是把這個例子來做這樣的解釋
[00:39:29] 就比如說我現在的Corpus有三句
[00:39:33] 三句
[00:39:34] 就是這個
[00:39:36] 這個故意做的這個
[00:39:37] 有一些重複字這樣子
[00:39:40] 然後like後面有不同的like這樣子
[00:39:44] 所以我們就做所謂的co-occurrence
[00:39:46] 就是說這個字
[00:39:47] 後面跟隨了哪個字這樣子
[00:39:50] 就是它們兩兩之間有在一起
[00:39:52] 就把它Comp的加一這樣子
[00:39:54] 所以像這邊
[00:39:56] i後面接like這邊出現兩次
[00:39:59] 所以就是2這樣子
[00:40:01] 這是一個對稱的
[00:40:03] 所以要找這樣
[00:40:04] 所以我可以做一個這樣co-occurrence的matrix
[00:40:08] 那這個co-occurrence matrix
[00:40:09] 跟我們之後等一下有個例子
[00:40:11] 我們用的matrix其實不太一樣
[00:40:14] 我們那邊用的是一個TT matrix
[00:40:16] 就是文章中出現哪些字的一個matrix
[00:40:20] 但是精神上是一樣的
[00:40:22] 就是我就用這樣的一個matrix做
[00:40:26] SVD
[00:40:27] 那SVD我並沒有講SVD
[00:40:29] 但是我們等一下會
[00:40:30] 另外的例子會講得更細一點
[00:40:32] 怎麼做這件事情
[00:40:33] 我就想要有一個process
[00:40:35] 做矩陣的一個拆解
[00:40:37] 這個拆解完之後
[00:40:39] 我可以再取出重要的這些幾個dimension出來
[00:40:43] 然後再做再把它反制回去這樣子
[00:40:47] 然後反制回去之後
[00:40:49] 我就可以得到每一個字的向量
[00:40:52] 每一個字的向量
[00:40:54] 然後把這個字的向量
[00:40:55] 再把它映射在這個二維空間上
[00:40:58] 我就發現說
[00:40:59] 這個annual p跟deep
[00:41:02] 我圈起來意思就是比較
[00:41:04] 因為只有三句
[00:41:05] 只有三句其實很難去講什麼統計
[00:41:07] 但是用這種方式做下來的這個annual p跟deep
[00:41:13] 因為它都跟隨在like的後面
[00:41:17] annual p在like的後面
[00:41:19] deep在like的後面
[00:41:21] 所以用這種方式
[00:41:22] 它可以學會這樣的表示
[00:41:25] 就是很接近
[00:41:26] 所以以前這個
[00:41:29] 這個還沒有使用
[00:41:32] 還沒有用到這個
[00:41:34] 這個槍的時候
[00:41:36] 這個是沒有
[00:41:42] 有帶電池嗎
[00:41:53] 就是在你還沒有用nn在做的時候
[00:41:56] 其實你就有辦法
[00:41:58] 靠著這樣的矩陣的學的方式
[00:42:01] 計算的方式
[00:42:03] 你就可以做出這樣字之間的關係
[00:42:06] 所以
[00:42:09] 謝謝
[00:42:10] 希望不會有問題
[00:42:20] 好
[00:42:22] 好
[00:42:23] 這就是LSI它能夠做出的效果
[00:42:26] 好
[00:42:27] 好
[00:42:28] 沒關係
[00:42:31] 為什麼幹擾
[00:42:32] 這個是電
[00:42:50] 這個是電
[00:42:51] 這個是電
[00:42:53] 這個是電
[00:42:54] 這個是電
[00:42:55] 這個是電
[00:42:56] 這個是電
[00:42:59] 這個是電
[00:43:00] 這個是電
[00:43:14] 這個是電
[00:43:15] 這個是電
[00:43:16] 這個是電
[00:43:17] 這個是電
[00:43:18] 這個是電
[00:43:19] 這個是電
[00:43:20] 這個是電
[00:43:21] 這個是電
[00:43:22] 這個是電
[00:43:23] 這個是電
[00:43:24] 這是火
[00:43:26] 這個是電
[00:43:27] 這裡是電
[00:43:28] 這裡是電
[00:43:29] 所以這下面它會,"火えば方ою
[00:43:49] 因為有一詞多義
[00:43:51] 沒有出現也不見得是無關
[00:43:53] 因為本來就是一個意識
[00:43:54] 可以用很多種的方式來表示
[00:43:57] 所以這件事情我們來看一下
[00:44:02] 以前是怎麼做的
[00:44:03] 你大概可以知道一下
[00:44:04] 就是參觀一下博物館
[00:44:07] 說以前這些古人用的這樣的技術
[00:44:10] 到底長什麼樣子
[00:44:11] 其實裡面就有一個SVD
[00:44:13] 那SVD其實不是這邊才有的東西
[00:44:16] 這個你們在學線性代數就學過
[00:44:18] 所謂矩陣的拆解
[00:44:20] 它可以拆解出現在你整個空間裡面
[00:44:26] 一些重要的代面序的表示
[00:44:28] 就是把它的
[00:44:29] 做出它的對角矩陣這樣子
[00:44:34] 所以anyway
[00:44:39] 我沒有要講SVD
[00:44:41] 反正就是你有一個拆解
[00:44:42] 一個矩陣的方式
[00:44:43] 它可以用這樣的方式
[00:44:45] 拆解出一個對角矩陣
[00:44:48] 然後我們從那個對角矩陣
[00:44:49] 取出
[00:44:50] 所謂的這個principle的一些dimension
[00:44:54] 然後再把它反制回去
[00:44:56] 它的效果就看得出來
[00:44:58] 我們先用一個例子
[00:45:00] 這個例子叫有十篇文章
[00:45:02] 這十篇文章裡面
[00:45:04] 前五篇文章講的是LinuxOS的東西
[00:45:08] 然後後面是講所謂的GNOME
[00:45:11] 這些跟LinuxOS一點關係都沒有的東西
[00:45:15] 所以你可以想像是這個兩組不同的文章
[00:45:20] 但是因為會用到一些common的word
[00:45:22] 好像這邊LinuxOS有所謂MySQL Database
[00:45:26] 但是我們在講這個GNOME的時候
[00:45:29] 也有所謂GNOME Database
[00:45:32] 為什麼要特別這樣講
[00:45:33] 就是說
[00:45:35] 這個我們前面一直在講所謂的co-occurrence
[00:45:38] 那這個Open Source跟Database共同出現
[00:45:40] 那表示Open Source跟Database這兩個字
[00:45:43] 其實有一定的關係
[00:45:44] 我們才會一起講
[00:45:46] 那這個Linux Software
[00:45:48] 然後Release這些東西
[00:45:50] 它一起出現
[00:45:51] 它的關係就會出來
[00:45:54] 然後這邊因為基因體的資料庫
[00:45:57] 叫GNOME Database
[00:45:58] 但是GNOME又會跟什麼Dory
[00:46:01] 多利養這些東西又會有關係
[00:46:04] 所以我們是不是這個Database
[00:46:07] 就會串接基因體的一些字
[00:46:10] 然後也會串接LinuxOS的一些字
[00:46:13] 那我們是不是可以把這些關係拉近這樣子
[00:46:17] OK
[00:46:18] 那我們來看一下
[00:46:20] 這十篇文章
[00:46:21] 如果我們做一個叫做TD Matrix
[00:46:24] 就是所謂的Term
[00:46:27] 就是我認為的關鍵字
[00:46:29] 跟我的Document
[00:46:31] 十篇Document
[00:46:32] 有出現這個字就比較關號這樣子
[00:46:35] 有點像說我現在就是用這幾個字來描述所有的文章
[00:46:39] 我就可以做出十篇文章的Vector
[00:46:42] 那這樣的一個Matrix
[00:46:45] 我們用剛才的SVD的方式
[00:46:49] 不過我們先看一下
[00:46:49] 這個矩陣
[00:46:50] 因為就兩組不同講不同的東西
[00:46:54] 那所以你發現前五篇都在講Open Source
[00:46:57] 所以這邊都是0
[00:46:58] 那後五篇講Geno
[00:47:00] 所以他前面這些Linux的字也都是0
[00:47:03] 所以表示說
[00:47:05] 當我要搜尋這個多利養的時候
[00:47:08] 我絕對不會找到前五篇的東西
[00:47:10] 因為關鍵字都沒有出現
[00:47:13] 不然我們就把這樣的Vector計算剛才那個過程
[00:47:17] 這有點小
[00:47:19] 那這個過程是什麼呢
[00:47:20] 再回到頭
[00:47:21] 這個
[00:47:23] 這個
[00:47:24] 就當我們做出這樣的矩陣之後
[00:47:26] 那每一個每一個Document的Vector
[00:47:30] 或者是你橫的看
[00:47:31] 就是每一個字他的表示的方式
[00:47:34] 我們把這樣的一個Matrix做拆解成
[00:47:39] 用SVD拆解成這個三個向量
[00:47:42] 中間這一個是Single-Variant Matrix
[00:47:45] 其實是一個對角矩陣
[00:47:47] 這個我想SVD應該
[00:47:49] 大家都都都知道
[00:47:52] 那anyway就是我有一個方式可以做一個這樣拆解
[00:47:56] 但是我們先不管後面這麼多
[00:47:59] 你可以想想看
[00:48:00] 以前你在學線性代數在算SVD的時候
[00:48:03] 有一些方法
[00:48:05] 然後也可以用
[00:48:06] 其實SVD是一個蠻有用的技術
[00:48:09] 甚至在推薦系統什麼都有用
[00:48:12] 也可以用訓練的方式
[00:48:14] 可以用逼近的方式做這些東西
[00:48:17] 好不管怎麼做
[00:48:18] 他其實運算複雜度挺高的
[00:48:22] 所以後面才會用逼近的方式在做
[00:48:25] 那假設假設沒有這些我們要exactly對的東西
[00:48:29] 那我們就是運算SVD運算
[00:48:32] 所以這個你可以想像這個一萬個維度跟一萬個維度矩陣要做SVD
[00:48:36] 他的成本有多少
[00:48:38] 做出來之後呢
[00:48:40] 我們把中間這個對角矩陣呢
[00:48:42] 去取所謂的Largest K
[00:48:45] 就是從從第一個到到
[00:48:48] N個當我們只舉前K個把它留下來
[00:48:53] 比如說那個對角只只有前K個留下來
[00:48:56] 後面都是0
[00:48:58] 就做出一個新的中間對角矩陣
[00:49:01] 然後再把它乘回去
[00:49:03] 他乘回去就會得到一個新的TT Matrix
[00:49:06] 然後你就會發現
[00:49:08] 不太一樣
[00:49:11] 這個這個就是做出來的對角矩陣
[00:49:14] 那我們只留前兩個後面變成0
[00:49:17] 然後再把這一個矩陣呢
[00:49:18] 乘回去剛才
[00:49:20] SVD拆解出來的那個前後的矩陣再乘回去
[00:49:24] 我就可以得到一個新的TT Matrix
[00:49:28] 他這個新的TT Matrix
[00:49:29] 你可以發現有一些不一樣的地方
[00:49:31] 那我們剛才有highlight說這邊都是0
[00:49:34] 這邊都是0
[00:49:36] 但是他這邊有一點值出現
[00:49:39] 或者是他有一點負的值出現
[00:49:41] 比如說他他可以拉開這個關係
[00:49:44] 或者說把一些關係呢
[00:49:45] 靠著Database這個字
[00:49:47] 把它拉進來這樣子哦
[00:49:50] 就有一些有提到Database
[00:49:52] 跨LinuxOS跟GNOME的的的新聞
[00:49:56] 所以靠的是中間這個字
[00:49:58] 你可以很多地方啊
[00:50:00] 你都可以trace說
[00:50:01] 其實有點影響
[00:50:02] 我就靠這個Database去propagate這個concept出去了
[00:50:07] 那這樣意思是說
[00:50:08] 以後搜尋引擎在搜尋這個關鍵字的時候
[00:50:13] 某一篇文章
[00:50:14] 他就不再是一個1號的表示
[00:50:17] 他有一些字
[00:50:18] 但是誒
[00:50:19] 可能本來是0的現在變負的
[00:50:21] 就是我可以把他他的概念拉的更開一點
[00:50:24] 但是有些關係呢
[00:50:26] 像這個D5這一篇呢
[00:50:28] 他其實
[00:50:29] 額
[00:50:30] 這個
[00:50:32] 這邊的概念就出現了
[00:50:33] 他是一個LinuxOS的句子
[00:50:36] 但是呢
[00:50:37] 他這個他就跟多力一樣有點關係
[00:50:40] 雖然你會覺得說老師這樣會不會是有問題
[00:50:43] 當然這個case看起來是有點怪
[00:50:46] 但是如果你的語料更多一點
[00:50:48] 你的關聯co-occurrence更復雜一點的時候
[00:50:52] 你就發現這個LSI做出來的東西其實還不錯
[00:50:56] 還不錯
[00:50:57] 就是在那個年代
[00:50:59] 在沒有這種大模型的年代的時候
[00:51:02] 誒這個技巧其實是非常神乎其技的
[00:51:06] 就是靠著計算
[00:51:08] 我就可以算出字跟字之間的relation
[00:51:11] 或是document之間的概念如何延伸
[00:51:16] OK
[00:51:20] 那這個方法
[00:51:21] 其實就叫LSA
[00:51:24] 就是隱含的語義分析
[00:51:27] 你可以這樣直譯
[00:51:29] 隱含語義分析呢
[00:51:30] 在通常後面都會用在這個做retrieval
[00:51:35] 做index
[00:51:35] 所以這樣的一個技術
[00:51:37] 我們叫LSI這樣子
[00:51:39] 就是這樣告訴你說
[00:51:40] 以前其實在這些NN沒有出來的時候
[00:51:44] 這些這些word2vector還沒出來之前
[00:51:47] 我們怎麼去拉近貓跟狗的關係
[00:51:50] 其實也是可以靠著貢獻性
[00:51:51] 靠著計算去得到這樣的relation
[00:51:54] 這是一個以前做的這樣的東西
[00:51:58] 但是你可以試著去去看
[00:52:00] 想象他的問題
[00:52:02] 因為他最大問題是在拆解那個SVD
[00:52:05] 那SVD的運算複雜度是相當的高
[00:52:09] 其實你現在就vibe coding
[00:52:11] 或是你直接呼叫python的SVD這樣直接做
[00:52:15] 你就發現做一個十萬維
[00:52:17] 十萬維的電腦就卡在那就做不出來這樣子
[00:52:21] 那你可以想象當我們在做一個大的語料庫的時候
[00:52:26] 我不太可能這樣做
[00:52:27] 因為那個根本拆不出來
[00:52:30] 雖然他有一些逼近的方法
[00:52:32] 成本還是相當的高
[00:52:34] 而且他會有個問題
[00:52:36] 他沒辦法incremental去update
[00:52:38] 就是當我多了
[00:52:41] 這個十萬篇文章做完之後
[00:52:44] 當我有一篇新的語料
[00:52:46] 我新的語料可能是講不同domain的
[00:52:48] 以前都沒看過的
[00:52:49] 我要放進去
[00:52:50] 我要重做
[00:52:51] 我沒辦法incremental去做
[00:52:53] 他這個就必須整個core-grants-metrics-update之後
[00:52:56] 再整個重算
[00:52:59] 所以其實有時候一篇paper出來之後
[00:53:02] 後面就會有人去做他的
[00:53:04] 所謂這個我怎麼去update
[00:53:07] 怎麼去做incremental的這個增加修剪
[00:53:11] 或是要把一些概念拿掉
[00:53:13] 這種他延伸都會是這個樣子
[00:53:16] 但是用SVD來做其實很難做這件事情
[00:53:18] 好
[00:53:20] 所以後面當然
[00:53:22] 那我們就用學的用算的
[00:53:25] 能夠算多少就算多少
[00:53:27] 不要叫他硬做這麼大的矩陣這樣子
[00:53:31] 所以後面就有這種比較probability的想法
[00:53:34] 其實比較像是language的model的想法
[00:53:38] 就出來了這樣子
[00:53:40] OK我想我們休息一下好了
[00:53:43] 我先看一下slide
[00:53:45] 剛剛好像有個問題
[00:53:47] 我們休息10分鐘再回來
[00:53:48] 我們不期待什麼東西
## 8. 寫作規則
(這是 `_筆記SOP.md` 第 3.1、4、5、6 節的濃縮版。兩者衝突時以 SOP 為準。)
讀者:碩士生,兩門課期末是英文考試。要只看筆記就能學會,講得比老師好懂。畫面要簡潔。
**概念優先(2026-09-26 主理人)**:主理人只想懂概念,不想補數學、不想看程式碼和座標圖。兩門課的考試也都是問答題、不考算式(AI W1 1:16:52;NLP W3 1:47:41、2:48:36)。所以:
- 每段預設看得到的只有:白話摘要(2–4 句)+**一句生活比喻**(例:模擬退火像投資理財,年輕時敢冒險、越老越保守)+「考試可能怎麼問」一句。
- 數學推導、公式、手算、程式碼、座標圖,全部收進標題寫「(進階,可跳過)」的摺疊,例如「它到底怎麼運作?(進階,可跳過)」。每段最多一個進階摺疊,不要寫長篇計算。
- 演算法要能「用文字說出步驟」(考試可能要你描述),這一點放在預設看得到的地方,不用數字。
- **重心比例**:白話理論與概念模式(它在解決什麼問題、核心想法、跟別的方法差在哪、優缺點、生活比喻)占主要篇幅;數學與程式細節只用一兩句帶過,細節收進進階摺疊。
**圖文並茂(2026-09-26 主理人:不要只有文字)**:
- 每章至少 2–3 個圖,放在**預設看得到**的地方,每個圖前後各用一兩句白話說明「這張圖在看什麼」。
- 流程、步驟、因果、比較 → 用 mermaid 流程圖(```mermaid,flowchart LR 或 TD;節點文字用中文、加雙引號;一張圖不超過 10 個節點)。
- 投影片上的示意圖、架構圖 → 用 [[IMG: …]] 放投影片圖。
- 仍守「每個 ## 段落最多一種視覺元素」。
### 輸出兩個檔
1. `chNN.md`(Notion 寫法,不含頁面標題),結構固定:
- 第一行:章節包第 1 節那行,原樣照抄。
- `## 重點`:三點中文,每點一到兩句。
- `## Exam-ready`:3–10 行英文,**從章節包的投影片文字逐字抄**,每行 `- **Term**: "原句"(Ch3 p.14)`。老師有明確證據才在行尾加 `【老師強調】(h:mm:ss)`。
**每一行下面一定要有一行縮排的中文解釋**(主理人英文不好,看不懂的英文等於沒用):
```
- **Hill climbing**: "It keeps track of one current state and on each iteration moves to the neighboring state with highest value."(Ch4 p.5)
- 中文:爬山法只記住「現在這一個狀態」,每一輪都移到分數最高的鄰居。白話:一直往比較高的地方走一步。
```
中文要先把句子意思講清楚,再補一句白話;難的英文單字括號附中文(例:neighboring state(鄰近狀態))。
- 章節包第 2 節的每一段:`## [h:mm:ss](連結) 標題`(照抄),下面 2–4 句白話摘要,其餘全部收進摺疊:
```
問句(例:用生活例子講,BFS 在做什麼?)
內容
```
摺疊種類(需要才放):用生活例子講?/它到底怎麼運作?/要先懂什麼?(老師假設你會的數學或概念,短版教學)/老師原話是什麼?(「原話」(h:mm:ss),只放重要的,最多 5 句)。
- 「它到底怎麼運作?」要用一組小數字把這段的演算法**真的跑 1–3 步**(例:算出梯度、更新一次、比較兩個 α),不是只示範定義的加減乘除。全章盡量沿用同一組數字,讓前一段的答案能在下一段被驗證。
- 每段正文要回答讀者最可能卡住的一個「為什麼」。投影片公式方向跟題目相反、或投影片說「解不出來」時,用一兩句講出原因,自己補的標(我補充)。
- 投影片句子停在公式前(公式在圖裡)時:Exam-ready 在粗體詞條上補公式、引號內保持原句;正文寫出同一條式子。公式圖看章節包第 6 節列出的 PNG。
- `## Self-check`:2–4 題英文考題,答案收摺疊。**至少一題考老師強調的內容**;不出「老師和投影片哪裡不同」這類不會考的題目。每題格式:
```
Q1. English question?(中文:中文題目)
**Answer**: English answer.
中文:把答案完整講一遍(不是只翻一句),讓看不懂英文的人也知道要怎麼答。
```
- **最後一行**:章節包第 1b 節那行(下一章連結),原樣照抄。讓讀完的人直接點下一章。
- 不要把章節包或這份規則裡的指示句寫進筆記(例如「寫筆記時照投影片寫」「已改正 ASR 錯字」)。
- 長度 8,000–14,000 字元。
2. `chNN.concepts.json`:JSON 陣列,4–12 個考試可能問的術語,每個物件:
`name`(英文)、`zh`、`type`(概念/演算法/公式/人物事件/前置知識/行政)、`signal`("老師說會考"/"老師強調"/"核心(我判斷)"/"")、`evidence`(有 signal 前兩種時必填:原句+時間)、`definition_en`(投影片原句;沒有就註明 (textbook)/(lecture)/(my wording))、`plain`(一句中文)、`a4`(≤150 字元英文,可夾極短中文;期末拼貼用的小方塊)、`time`、`slides`、`prereq`(英文名陣列)。
### 風格鐵律
- 不用 emoji 或裝飾符號(✓✗★⚠ 都不要;→ 可以)。不用 callout。不用 `$`。時間不要用 code 樣式。
- 每個 `##` 段落最多一種視覺元素:一張圖、或一個表格、或一個 mermaid。
- 摺疊標題是問句,前面不加符號。
- 圖片最多 3 張,只放文字取代不了的圖。放法:單獨一行 `[[IMG: | 中文圖說]]`,PNG 用 `slides_to_png.py <圖片資料夾> <頁> --dpi=110` 產生。
- 考試訊號只在老師明確說時標。老師只說「不用背」「不講」就寫「注意:……」。
- 老師口誤或跟投影片不同:照投影片寫,加「注意:老師口頭說的是……」。
- 引用老師的話時,ASR 錯字改成正確的字。
### 沒有投影片時
不要憑記憶逐字重現課本段落或數值表。英文定義用自己的話寫、句尾標 (my wording);Exam-ready 每行標「(自擬,投影片待補)」。例子只用老師講的。
### 寫完之後(只做一次)
跑檢查:
`C:\Users\user\.cache\meeting-record\venv\Scripts\python.exe C:\Users\user\.claude\scripts\check_note.py --transcript <逐字稿> --slides <投影片 txt …> --start <起> --end <訖> --vid <影片 ID>`
- STYLE/VISUAL/TIME/FORMAT:全部改掉。
- QUOTE:確認是不是你改正了 ASR 錯字(是就保留),不是就改成原文或拿掉引號。
- ENGLISH:確認是不是投影片斷行造成的(是就保留),不是就改成投影片原句。
**省額度守則**:章節包裡已經有你需要的全部資料。不要再去讀整份逐字稿、整份投影片、segments.json 或手冊。一次寫好整個檔(Write 一次),檢查後集中修改。