# 章節包:自然語言處理(NLP)W4(10/1)第 01 章「BM25 與 N-gram 模型」
影片 0:00:00–0:14:58,YouTube ID 7kgOuhuIjvY,逐字稿 C:\D槽\TAICA課程\自然語言處理\第四周1151001\W4_自然語言處理_高宏宇.逐字稿.txt。Notion 章節頁 https://app.notion.com/p/3ecfc631b030815a8015e146c3d4d717(頁 ID 3ecfc631b030815a8015e146c3d4d717),頁面標題「01 BM25 與 N-gram 模型(0:00–0:14)」。
## 1. 第一行(直接照抄,不要改)
[自然語言處理](https://app.notion.com/p/3e6fc631b03081b4a9e8f91f3411f61f) › [W4(10/1)](https://app.notion.com/p/3ecfc631b03081b8aa2cf4a97467ed41) › 01|影片 [0:00:00–0:14:58](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=0s)|投影片 W1_NLP_brief p.53;W2_Word p.17–19|上一章 無|下一章 [02 稀疏向量與 PPMI(0:14–0:30)](https://app.notion.com/p/3ecfc631b03081daa362fba68ecb5a0c)
## 1b. 最後一行(直接照抄,放在 Self-check 後面,當全頁最後一行)
讀完了嗎?下一章:[02 稀疏向量與 PPMI(0:14–0:30)](https://app.notion.com/p/3ecfc631b03081daa362fba68ecb5a0c)|回到週頁:[W4(10/1)](https://app.notion.com/p/3ecfc631b03081b8aa2cf4a97467ed41)
## 2. 各段標題(照順序;每段一個 ## 標題,直接照抄連結)
- `## [0:00:27](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=27s) 開場與本週安排` 老師講什麼:今天把 W2 投影片講完,只上一半的時間;下半場改看助教預錄的 PyTorch 教學,大約一個半小時。
- `## [0:03:37](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=217s) BM25:在向量空間算相似度` 老師講什麼:有同學問到 BM25,老師回頭補講:它在 TF-IDF 的稀疏向量空間裡算 query 和文件的相似度,實際上只算 query 裡出現的詞,前半部就是 IDF。
- `## [0:06:05](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=365s) BM25 的參數 k1 與 b` 老師講什麼:詞頻從 1 次變 2 次,和從 100 次變 101 次,意義不一樣。k1 控制詞頻成長有多敏感,b 搭配平均文件長度做長度正規化。實務上直接用預設值,把 BM25 當 baseline。
- `## [0:09:32](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=572s) 回到 W2:困惑度與 bigram` 老師講什麼:先回顧上次講的困惑度(perplexity);以前用機率切 N-gram 來做語言模型,bigram 假設下一個字只跟前一個字有關(Markov assumption)。
- `## [0:12:04](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=724s) Markov 假設的延伸` 老師講什麼:N 越長記得越多,但計算越貴。Hidden Markov Model 把前面累積的資訊放進 hidden state,是從 Markov 假設延伸出來的。
- `## [0:12:35](https://www.youtube.com/watch?v=7kgOuhuIjvY&t=755s) N-gram 的缺點` 老師講什麼:N 拉長會讓計算量暴增,還有資料稀疏(data sparsity):只出現一次的組合,機率偏差很大。片段太短又會丟掉字的順序,也處理不了同義字、沒看過的字和新的領域。
## 3. 老師強調/會考/不考的地方(原句已驗證;寫進筆記時 ASR 錯字要改正)
- (0:03:48) [強調] 「這個其實還蠻重要的。而且現在還是一直有在用。」 → BM25 雖然舊但重要,至今仍常用(老師特地回頭補講)
## 3b. 數學段候選(程式抓的,只是提示;寫「跳過提示」行用)
0 段候選(門檻 3.0 字/30 秒)
## 4. 這章摘要與重要度
回頭補講 BM25 是改良版的 TF-IDF,再回到 W2 講 bigram、Markov 假設,以及 N-gram 語言模型的缺點。(核心)
## 5. 整堂課的提醒(ASR 錯字、老師口誤、投影片缺公式等;只用跟這章有關的)
- 這支只有約 1 小時 20 分(老師 1:18:56 下課),下半場改看助教預錄的 PyTorch 教學影片(約一個半小時),筆記在第 06–09 章,章名前面有「PyTorch:」,影片時間是那支影片自己的時間。
- PyTorch 教學是 2024 年錄的舊影片,片中提到的作業說法(例如建議用 teacher forcing、之後要用 Hugging Face)不代表今年,今年作業以今年公告為準。
- 課表寫的是「Text Classification, NB, NN」,但實際上還在講 W2_Word 投影片(p.17–47)的語言模型和詞向量;Naive Bayes 只在 0:55:59 拿來對比「統計」和「模型學習」。
- 開頭 0:00:27–0:02:24 有網路和回音問題,0:03:55–0:04:32 在調整直播畫面,內容沒有缺。
- 逐字稿有語音辨識重複行(0:27:41–0:29:20 幾乎每句重複兩次、0:39:37 一句重複四次),不影響理解。
- 全片沒有下課休息,一路講完(0:00:01–1:26:08)。
- 逐字稿 0:01:32–0:01:53 有語音辨識重複句與亂碼(同一句重複五次、CUDA 版本被辨識成 ientes/analytical sci-fi/evangelical sci-fi),內容只是「別直接 pip install,到官網選版本」。
- 0:35:46 老師說「這是新的嗎」,接著改用口述講 Google Bomb。p.31 的文字檔裡已經有「Google Bomb/Data Poisoning」,可能是 10/1 更新版才加的,直播畫面也許還是舊版。不確定。
- p.33–38 的 word2vec 細節,老師是用回顧的方式講的,沒有逐頁翻:p.34 共現矩陣、p.38 SGD 那頁沒有明確講到;0:47:21 的 A、B、C softmax 計算例子,對應的是 p.35 還是 p.36(只有圖),不確定。
- 老師好幾次把模型輸出的「機率」說成 perplexity(例如 0:45:48、0:48:31),應該是口誤,寫筆記時要寫成 probability,不要寫成困惑度。
- 老師 1:08:44 已經宣布下課,接著又講了約 5 分鐘 activation function(p.46–47),1:13:47 才真正收尾,所以第 05 章沒有在 1:08:44 切開。1:13:27 說的「這一段的敘述」應該是指 p.47 的 softmax、sigmoid、tanh、ReLU 表格,只用一句帶過。p.48(In text viewpoint)沒講,下週應該從 p.48 開始。
- 第 04 章長約 13.5 分鐘,比建議的 15 分鐘短一點;它講 contextual embedding,跟第 05 章的 NN 基礎主題不同,所以沒有合併。
- [PyTorch 影片,第 06–09 章] 投影片 p.7 寫模型是 y = ax²+b,助教口頭說成「y等於ax加b」(0:04:08);投影片寫「four data points」但只列三個點 (-1,1)、(1,2)、(2,3),助教口頭念的點也對不上(0:04:36 說 -1 對 1、-1 對 2、-2 對 3)。寫筆記以投影片的 y = ax²+b 和三個點為準。
- [PyTorch 影片,第 06–09 章] 逐字稿有大量語音辨識錯字,寫手要自己還原:T度=梯度、correct function=collate function、translation=truncation、badge size=batch size、relude/Renew=ReLU、MN backward=MmBackward、nodegrade=no_grad、width.backward=with torch.no_grad()、nonpy=NumPy、viewed=view、birth=BERT、復迴圈=for 迴圈、增刮號=中括號、高雄宇=高宏宇;0:23:00 的「3e」應是 stride (3, 1)、0:22:02 的「13」是 (1, 3)。
- [PyTorch 影片,第 06–09 章] 助教把 BERT 稱為「auto encoder」(1:21:5x 起),對應投影片 p.60–61 的「Transformer Auto-encoder」,指的是編碼器式 Transformer,不是一般說的自編碼器;寫筆記時要說清楚,避免混淆。
- [PyTorch 影片,第 06–09 章] 第 2 章只有約 14 分鐘,略低於 15 分鐘下限;因為「模組」是獨立概念,而第 3 章(自動微分+訓練迴圈)已約 25 分鐘,沒有再合併。若主 session 想更細,第 3 章可在 0:51:20 切成「自動微分」與「損失函數、優化器與線性迴歸」兩章(各約 11、13.5 分鐘)。
- [PyTorch 影片,第 06–09 章] 投影片檔放在 2026 資料夾,影片是 2024 年錄的;對照下來頁序與講解內容一致(p.62 是結尾的笑話頁,沒有內容),但不確定 2026 版投影片是否和 2024 錄影時的版本完全相同。
- [PyTorch 影片,第 06–09 章] emphasis 只放了助教明講作業相關或重複強調的地方;另外兩處助教有說「注意」或「建議」但跟作業無關,沒列進去:0:53:00「不要用訓練的資料來測試」、0:24:47「儘量用矩陣運算的方式來運算」(兩句都已過 quote_check)。
- [寫手注意,第 06–09 章] 這四章是助教的程式教學,但主理人不看程式碼、考試不考寫程式:預設看得到的內容寫「這個元件在做什麼、為什麼需要它」+生活比喻(例:optimizer 像導航決定下一步往哪走);程式碼最多一小段,放進「(進階,可跳過)」摺疊。Exam-ready 只放投影片上的英文概念句(例如 tensor、autograd、loss、optimizer 的說明),不放程式碼行;投影片沒有完整英文句時用短的英文定義並標 (my wording)。Self-check 問「為什麼/比較」,不問語法。助教不是老師,不標【老師強調】,要標就寫【助教強調】+時間。
## 6. 投影片文字(這章範圍)
**這幾頁的公式或內容只在圖裡(文字檔抓不到),寫 Exam-ready 與公式前先用 Read 看這幾張圖:**
- W2_Word p.17 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w4\img\brief_W2_Word_p017.png
--- W1_NLP_brief p.53 ---
BM25 (Best Matching 25)
Okapi BM25 (1980s)
◦A ranking function used by search engines to rank matching documents according to their
relevance to a given query.
BM11, BM15
k1, b are free parameters
generally k1=2, b=0.75
Alternative (improved) TF-IDF
𝑇𝐹𝐵𝑀25 ≈𝑓∗(𝑘1+1)
𝑓+ 𝑘1
f from 1 to 2 v.s. f from 100 to 101
--- W2_Word p.17 ---
Perplexity meaning
A Measure of Uncertainty: Perplexity quantifies the level of uncertainty or unpredictability that
a model experiences when making predictions.
An Average Branching Factor: Perplexity can be viewed as an "average branching factor" of
possible choices at each step in the sequence.
Quantification of Model Performance: In language modeling, perplexity reflects how well the
model understands the rules and structure of the language.
◦A lower perplexity indicates better language comprehension and prediction ability, signifying the
model's efficiency in capturing language patterns.
Compression Efficiency Indicator: Perplexity can also be seen as a measure of how well the
model compresses the test data.
◦Lower perplexity means that the model predicts with higher probabilities, reducing the uncertainty and
effectively compressing the information.
17
Can we use perplexity to evaluate whether text is generated by AI or not?
--- W2_Word p.18 ---
N-gram Language Models
Bigram model
Approximates the probability of a word given all the previous words
by using only
the conditional probability of the preceding word
.
The assumption that the probability of a word depends only on the previous word is called a
Markov assumption.
18
i.e., Instead of computing the probability
Bigram model approximates it with the probability
Word Embeddings and Language Modeling
--- W2_Word p.19 ---
Shortcomings of N-gram LMs
Limited context
◦N-gram models are unable to capture longer-distance (>>N) language
dependencies.
Data sparsity (High time/space complexity)
◦As the N value increases, the number of parameters to store and compute
grows exponentially.
Ignoring word order / context information
◦N-gram models assume independence between words, neglecting the influence
of word order on semantics.
Low flexibility
N-gram language models struggle with synonyms and have limited ability
to adapt to varying conditions. (e.g. dialogue).
19
Rare/Unseen
words?
New contexts or
domains?
https://books.google.com/ngrams/info
Word Embeddings and Language Modeling
## 7. 逐字稿(0:00:00 前後各多 1 分鐘,原始行)
[00:00:27] 有些網路的問題,不過我們就開始上課,這個echo很大,不是有電,但是echo很大。
[00:01:54] 今天我們會把W2的頭影片講完。
[00:02:24] 我們今天的下半場會是TA Lab課,但是因為TA Lab課的教材是比較技術性的,而且大概沒什麼改變。
[00:02:41] 所以我們之前就是用預錄的方式。
[00:02:45] 所以我們今天大概會上一半的時間。
[00:02:49] 然後剩下一半的時間就是讓大家回去看TA Lab課的第一段。
[00:02:56] 其實是介紹這些從前面PyTorch到整個,有點像帶領一下、勸一下NN的過程。
[00:03:06] 這個當然對如果有一些人已經有機器學習的經驗,或是已經都在玩這些東西的,他可能會覺得很簡單。
[00:03:16] 不過anyway,你就是看一下。
[00:03:19] 這是我們自己需要的部分。
[00:03:22] 那第一段的那個PyTorch的Tutorial大概是一個半小時。
[00:03:27] 這個影片已經放上去了。
[00:03:30] 那我們今天大概就是會接著把W2的頭影片講完,這樣子。
[00:03:37] 好,我先在這一張頭影片。
[00:03:40] 這一張之前有同學問BM25了。
[00:03:44] 雖然這個東西是蠻舊的東西。
[00:03:46] 不過因為其實還蠻長的。
[00:03:48] 這個其實還蠻重要的。
[00:03:50] 而且現在還是一直有在用。
[00:03:55] 什麼問題?
[00:03:57] 直播。
[00:04:04] 對,為什麼這個?
[00:04:07] 應該是畫面機器。
[00:04:09] 這個嗎?
[00:04:28] OK,好。
[00:04:32] 好,那我就繼續了。
[00:04:34] 這個公式其實當初我並沒有細講。
[00:04:39] 但是這一個精神就是說。
[00:04:41] 因為我們知道這個Sparse Matrix。
[00:04:44] 然後用IDF來表示一個Document。
[00:04:47] 然後我們把Query跟Document都用這種方式來描述。
[00:04:52] 然後算向量的相似度這樣子。
[00:04:55] 所以當初我們一個重點就是說BM25其實它就是在這樣的一個Space Model裡面去算Query跟Document的相似度。
[00:05:07] 這個公式其實也是TFIDF之間的關係。
[00:05:09] 那我並沒有細講。
[00:05:15] 不過可能有一個概念可以再提一下。
[00:05:20] 大家其實再細看這個公式。
[00:05:22] 就可以發現前面是這個IDF的式子。
[00:05:29] 這個Q其實基本上是跟Query有關的term。
[00:05:33] 因為它其實算內積的時候。
[00:05:36] 它其實只算跟Query有出現。
[00:05:38] 所以基本上它其實就算在這個Document有出現這個Query這個term的frequency。
[00:05:45] 所以這個F function其實是frequency的一個概念而已。
[00:05:49] 所以你先不要看後面這些。
[00:05:51] 其實你看了這個F你就大概知道說它其實就是在算Query有出現的term的這個TFIDF的這樣的一個成績。
[00:06:02] 就是內積的這樣子。
[00:06:04] OK。
[00:06:05] 那BM25之所以它會有一些參數可以調整。
[00:06:10] 重點就是在於是說。
[00:06:12] 因為你們知道TFIDF它其實TF就算次數。
[00:06:17] 那算次數這種東西其實對於大的文章小的文章是非常的權重是非常不一的。
[00:06:25] 比如說一篇文章只有寫五個字。
[00:06:27] 然後另外一篇文章寫五萬個字。
[00:06:29] 那五萬個字出現的frequency一定就相當的高。
[00:06:33] 所以我們之前也有提到一些。
[00:06:34] 正規化的機制。
[00:06:37] 那在BM25裡面它這樣的一個公式它其實是想要去。
[00:06:43] 利用一些參數來控制說它對於frequency的增加的敏感度。
[00:06:50] 所以其實這個這個AVGDL其實是所有document的平均的size。
[00:07:02] 所以這個只是一個constants。
[00:07:04] 就是有點像是比重說你現在這篇文章跟整個document size的大小的一個ratio。
[00:07:13] 那這個也是一個調整的。
[00:07:15] 不過它基本的量你大概可以用這個公式來看。
[00:07:18] 它其實它的TF就是靠這個K的這個值去做一點調整。
[00:07:24] 這K的值的調整你會發現說。
[00:07:28] 我這個turn frequency其實會對於比如說我是一個短文章。
[00:07:33] 我這個頻率從一次到兩次。
[00:07:36] 或者是從100次到101次。
[00:07:40] 因為都是多一次。
[00:07:42] 但是多一次在這個公式裡面呢。
[00:07:44] 它其實它成長的幅度是不一樣的。
[00:07:47] 成長幅度是不一樣的。
[00:07:49] 所以它可以用這個K呢。
[00:07:51] 其實是K1標準上是K1。
[00:07:53] 但是我當初頭裡面寫K啦。
[00:07:55] 不過就把它補上K1。
[00:07:57] 不過它這只是一個index。
[00:08:00] 那。
[00:08:01] 那它就用這個K來調整說。
[00:08:03] 好吧。
[00:08:04] 那我現在要讓這個turn frequency的成長的敏感度到什麼地步。
[00:08:10] 所以你自己可以畫這個曲線。
[00:08:12] 就是說如果我K1帶2。
[00:08:15] 或是帶20。
[00:08:17] 它這個turn frequency。
[00:08:19] 就是你本來的這個low frequency呢。
[00:08:21] 會轉換到真正的BM25 turn frequency的一個ratio是什麼這樣子。
[00:08:27] 所以之所以可以。
[00:08:30] 它會比一般的TFIDF好。
[00:08:32] 就是說它有對一個這樣的東西做Normalization。
[00:08:35] 當然另外一個參數是B啦。
[00:08:37] 那這個就是另外一個調整的機制這樣子。
[00:08:41] 那另外當然IDF它也有。
[00:08:43] 它也不是一個正規的IDF。
[00:08:45] 它其實也有做一些。
[00:08:47] 其實跟我們前面講的那個一樣。
[00:08:49] 就是它有一個Normalization的機制這樣子。
[00:08:51] 所以我才會摘要是說OK好。
[00:08:55] 它就是一個改良版的TFIDF。
[00:08:57] 所以其實你大概就有這種精神。
[00:09:00] 那。
[00:09:01] 如果你在用BM25的時候。
[00:09:03] 基本上你也不會設這些參數。
[00:09:05] 就是D4就是這樣。
[00:09:07] 當然你覺得。
[00:09:08] 我的BM25好像跑的不是很好。
[00:09:10] 那也許你可以試著改這個東西。
[00:09:13] 不過通常現在也不太會去改。
[00:09:15] 因為它有點像是一個Base Line。
[00:09:20] 或者是說。
[00:09:21] 你居然你講的BM25。
[00:09:23] 那它就大家都知道它的行為跟參數的設定就是這樣子。
[00:09:27] 所以這大概是BM25的一個衝了。
[00:09:29] OK。
[00:09:31] 好。
[00:09:32] 那我們就跳回。
[00:09:45] 其實我們的W2的投影片跟W1其實。
[00:09:49] 其實本來是接在一起的。
[00:09:51] 它只是說。
[00:09:52] 這投影片實在太長。
[00:09:54] 就把它切掉這樣子。
[00:10:03] 這個OK嗎?
[00:10:12] 感覺我們這系統Temperature蠻高的這樣。
[00:10:16] 每次都不太一樣。
[00:10:18] 上次。
[00:10:21] 我們有提到這個Facility的。
[00:10:24] 的問題。
[00:10:26] 就是在計算這個東西。
[00:10:28] 是用來。
[00:10:30] 度量一個Language Model的。
[00:10:32] 對於你的Data Set Alignment的過程。
[00:10:35] 的一個標準。
[00:10:37] 那當然這個東西其實它可以用來度量很多東西。
[00:10:40] 這其實是。
[00:10:42] 我們上次有提到的部分。
[00:10:44] 那。
[00:10:45] 那以前在做Language Model這件事情。
[00:10:50] 因為基本上不是用模型去Change的。
[00:10:52] 所以基本上我們會說。
[00:10:54] 我們就用機率的概念。
[00:10:56] 把這樣的東西切成N-Grant的。
[00:10:58] 假設去做。
[00:11:00] 那。
[00:11:02] 之前我們列一個公式。
[00:11:04] 那發現說。
[00:11:05] 這個Grant太長的時候。
[00:11:07] 我算這個Probability其實有點困難。
[00:11:10] 所以一開始呢。
[00:11:11] 我們可能會先採用所謂的Bigrant Model。
[00:11:14] 就是。
[00:11:15] 下一個字。
[00:11:16] 這個字。
[00:11:17] 它只會跟前一個字出現機率有關。
[00:11:20] 就是一個Bigrant Model。
[00:11:22] 就是兩兩之間的關係。
[00:11:24] OK。
[00:11:25] 所以基本上用Bigrant Model。
[00:11:27] 我們就不用去計算說。
[00:11:29] 哇。
[00:11:30] 這個T-H-E在這一串字的後面。
[00:11:33] 出現了Probability。
[00:11:34] 這樣子。
[00:11:35] OK。
[00:11:36] 那。
[00:11:37] 這樣的東西其實。
[00:11:38] 是一個很簡單的概念。
[00:11:40] 但是它。
[00:11:41] 呃。
[00:11:42] 表現就會。
[00:11:44] 就會。
[00:11:45] 呃。
[00:11:46] 不太一樣啦。
[00:11:47] 就是跟我們之前在用簡單的方式。
[00:11:49] 在計算的時候就不太一樣。
[00:11:51] 但是當然你會覺得是說。
[00:11:53] 誒。
[00:11:54] 我當然是Grant越長越好。
[00:11:56] 記憶力越高。
[00:11:57] 這樣。
[00:11:58] 越能夠Catch。
[00:11:59] 這樣的東西。
[00:12:00] 但是它的計算複雜度就。
[00:12:02] 就很高。
[00:12:03] 這樣子。
[00:12:04] OK。
[00:12:05] 那。
[00:12:06] 這樣的東西。
[00:12:07] 其實也跟我們之前有提到。
[00:12:08] 那個Mockup的。
[00:12:09] 的。
[00:12:10] 它做的東西。
[00:12:11] 其實。
[00:12:12] 也是Based on這樣的精神。
[00:12:13] 其實它就雖然是看前一個字。
[00:12:15] 但是。
[00:12:16] 它會在那個前一個字的。
[00:12:18] 的。
[00:12:19] Accumulate的東西。
[00:12:21] 會進入一個。
[00:12:22] 一個Hidden State。
[00:12:23] 所以從Mockup Assumption演變出來的。
[00:12:27] 比如說。
[00:12:28] 這個Hidden Markov Model。
[00:12:30] 它其實有一些這樣的概念的延伸。
[00:12:33] 這樣。
[00:12:34] 好。
[00:12:35] 那當然。
[00:12:36] 我們如果切N-Grant來做。
[00:12:38] 比如說我給你一個。
[00:12:39] 一個Deja-Vue。
[00:12:40] 然後你誒。
[00:12:41] 好吧。
[00:12:42] 那我們就自己切N-Grant。
[00:12:43] 自己做一個Language Model。
[00:12:44] 我們不要自己Change這個。
[00:12:46] 大語言模型。
[00:12:47] 我們從語料庫裡面。
[00:12:49] 自己去做這個N-Grant Model。
[00:12:51] 其實它會有很多的問題。
[00:12:52] 當然。
[00:12:53] 我們現在還沒有用Change的方式。
[00:12:55] 我們就是算Premobility的方式。
[00:12:57] 它其實。
[00:12:59] 問題就在於說。
[00:13:00] 誒。
[00:13:01] 那我要。
[00:13:02] 我要更精確的時候。
[00:13:03] 我會。
[00:13:05] 我會去。
[00:13:06] 拉長我的Context。
[00:13:08] 我的。
[00:13:09] 我的N就會拉大。
[00:13:10] 但N拉大的時候。
[00:13:11] 其實。
[00:13:12] 這個。
[00:13:13] 計算複雜度很高。
[00:13:15] 然後呢。
[00:13:16] 最大問題通常是來自於這個Data Sparsity。
[00:13:18] 就是說。
[00:13:19] 你要所有的字。
[00:13:21] 之間的。
[00:13:22] 共同出現的機率。
[00:13:23] 或是說。
[00:13:24] 你要能夠知道說。
[00:13:25] 我講了這句話。
[00:13:27] 後面會跟著所有種的可能。
[00:13:29] 這件事情。
[00:13:30] 你要收集非常多的語料。
[00:13:32] 所以依照你的。
[00:13:33] 語料的大小。
[00:13:34] 通常你沒辦法。
[00:13:35] Catch到所有的。
[00:13:37] 所有的Concept。
[00:13:38] 所以你的Data的。
[00:13:39] 吸收度是很高的。
[00:13:41] 那吸收度很高。
[00:13:43] 會有一個問題。
[00:13:44] 就是我們在算。
[00:13:45] 條件機率的時候。
[00:13:46] 它搞不好就發生一次。
[00:13:48] 誒。就是你語料庫中。
[00:13:50] 就出現一次這樣子。
[00:13:52] 那出現一次。
[00:13:53] 你在算這個機率。
[00:13:54] 其實這個。
[00:13:55] 那個。
[00:13:56] BIOS會相當的高。
[00:13:59] 那另外一個就是說。
[00:14:01] 我如果不要拉長。
[00:14:03] 我的片段變短的時候。
[00:14:05] 片段變短比較好做。
[00:14:07] 但是。
[00:14:08] 短的時候。
[00:14:09] 我的。
[00:14:10] 這個。
[00:14:11] 字的順序的這種。
[00:14:13] 這種特性就不見了。
[00:14:14] 這樣子。
[00:14:15] 那當然。
[00:14:16] 用這種硬算的方式。
[00:14:18] 不是硬算。
[00:14:19] 就是這種。
[00:14:20] 直接。
[00:14:21] 直接。
[00:14:22] 字跟字之間的關聯。
[00:14:23] 它其實就少了一些。
[00:14:24] 比如說。
[00:14:25] 像。
[00:14:26] 像同一字啊。
[00:14:27] 這種。
[00:14:28] 這種概念的東西的延伸。
[00:14:29] 它其實彈性度就很低。
[00:14:30] 這樣子。
[00:14:31] 那所以上。
[00:14:32] 如果你用這種。
[00:14:33] 統計的方式。
[00:14:34] 去切圓。
[00:14:35] 在算的時候。
[00:14:36] 其實你會遇到一些。
[00:14:37] 比如說。
[00:14:38] 你沒看過的字。
[00:14:39] 或是很少出現的字。
[00:14:41] 其實就剛才提到。
[00:14:42] 這些Spacity的問題。
[00:14:43] 其實你都很難去計算。
[00:14:45] 那或者說。
[00:14:47] 換一個Domain。
[00:14:48] 就是。
[00:14:49] 完全不懂的。
[00:14:50] 詞彙。
[00:14:51] 或者是。
[00:14:52] 看得懂的詞彙。
[00:14:53] 但是。
[00:14:54] 它的解釋。
[00:14:55] 是不太一樣的時候。
[00:14:56] 這個其實都會有。
[00:14:57] 很大的問題。
[00:14:58] 所以。
[00:14:59] 以前的做法。
[00:15:00] 當然就是。
[00:15:01] 好。
[00:15:02] 那我們就是。
[00:15:03] 描述完。
[00:15:04] 這樣的一個。
[00:15:05] 向量之後。
[00:15:06] 其實。
[00:15:07] 我們能不能去學。
[00:15:08] 更。
[00:15:09] 更。
[00:15:10] 複雜一點。
[00:15:11] 更具有。
[00:15:12] Semantic。
[00:15:13] 含義的東西。
[00:15:14] 而不是。
[00:15:15] 直接來。
[00:15:16] 算。
[00:15:17] 這樣的。
[00:15:18] 語言的模式。
[00:15:19] 那我這邊呢。
[00:15:20] 再。
[00:15:21] 再把。
[00:15:22] 前面講。
[00:15:23] TFIDF。
[00:15:24] SPARTS FACTOR。
[00:15:25] 放在這裡。
[00:15:26] 其實主要是。
[00:15:27] 為了要代出。
[00:15:28] 後面的這種。
[00:15:29] Dense Factor的概念。
[00:15:30] 那在這邊。
[00:15:31] 當然SPARTS FACTOR。
[00:15:32] 我們其實會。
[00:15:33] 前面就提到。
[00:15:34] TFIDF。
[00:15:35] 那其實以。
[00:15:36] 以。
[00:15:37] 字的。
[00:15:38] 之間的。
[00:15:39] 貢獻性來講。
[00:15:40] 其實以前有算。
[00:15:41] 所謂的。
[00:15:42] PMI的。
[00:15:43] 這樣的概念。
[00:15:44] 就算一個。
[00:15:45] 條件機率。
[00:15:46] 共同。
[00:15:47] 出現的。
[00:15:48] 機率的。
[00:15:49] 很常拿來做的。
[00:15:50] 我們其實等一下。
[00:15:51] 可以用一個小例子。
[00:15:52] 來看一下。
[00:15:53] 用。
[00:15:54] 這個PPMI。
[00:15:55] 怎麼做一個。
[00:15:56] Vector。
[00:15:57] 一個Turn的。
[00:15:58] Vector的表示。
## 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 節那行,原樣照抄。
- 第二行起(有數學段才寫):**跳過提示**,每段一行,讓主理人看影片時知道從哪跳到哪。用章節包第 3b 節的候選當提示,對照第 7 節逐字稿確認(只標老師連續講公式、推導、矩陣、微積分、機率計算、程式細節超過約 1 分鐘的段落;概念講解和比喻不算):
`跳過提示:(1:31:02–1:35:40) 老師在推導梯度公式,聽不懂可以直接跳到 [1:35:40](YouTube 連結),接著講「步長 α 怎麼選」。`
- `## 重點`:三點中文,每點一到兩句。
- `## 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)
- 中文:爬山法只記住「現在這一個狀態」,每一輪都移到分數最高的鄰居。白話:一直往比較高的地方走一步。
```
中文要先把句子意思講清楚,再補一句白話;最後用「英文(中文)」列出這句裡 1–3 個難字,例:sparse(稀疏)、distinct terms(不重複的字)。
**一行只放一句投影片原句**。同一頁有多句要考就拆成多行,每行各接一行中文;不要用分號串三句以上,不要把計算量 O(...) 塞進去。
- 章節包第 2 節的每一段:`## [h:mm:ss](連結) 標題`(照抄),下面 2–4 句白話摘要,其餘全部收進摺疊:
```
問句(例:用生活例子講,BFS 在做什麼?)
內容
```
摺疊種類(需要才放):用生活例子講?/它到底怎麼運作?/要先懂什麼?(老師假設你會的數學或概念,短版教學)/老師原話是什麼?(「原話」(h:mm:ss),只放重要的,最多 5 句)。
- 「它到底怎麼運作?」要用一組小數字把這段的演算法**真的跑 1–3 步**(例:算出梯度、更新一次、比較兩個 α),不是只示範定義的加減乘除。全章盡量沿用同一組數字,讓前一段的答案能在下一段被驗證。
- 每段正文要回答讀者最可能卡住的一個「為什麼」。投影片公式方向跟題目相反、或投影片說「解不出來」時,用一兩句講出原因,自己補的標(我補充)。
- 投影片句子停在公式前(公式在圖裡)時:Exam-ready 在粗體詞條上補公式、引號內保持原句;正文寫出同一條式子。公式圖看章節包第 6 節列出的 PNG。
- `## Self-check`:2–4 題英文考題,答案收摺疊。**至少一題考老師強調的內容**;只出 explain/why/compare 這類問答題,**不出要代數字計算的題目**(考試不考算式);不出「老師和投影片哪裡不同」這類不會考的題目。每題格式:
```
Q1. English question?(中文:中文題目)
**Answer**: English answer.
中文:把答案完整講一遍(不是只翻一句),讓看不懂英文的人也知道要怎麼答。
```
- **最後一行**:章節包第 1b 節那行(下一章連結),原樣照抄。讓讀完的人直接點下一章。
- 不要把章節包或這份規則裡的指示句寫進筆記(例如「寫筆記時照投影片寫」「已改正 ASR 錯字」)。
- 長度:全文不超過 16,000 字元(跟 check_note.py 同一個數字)。**不要為了壓字數反覆刪改**(實測一章最多花 12 輪在刪字);超過時只刪進階摺疊裡的第二組算例,比喻、比較表、圖說、「老師說不用背」的提醒都不刪。
- 預設看得到的正文不放計算量 O(...)、代號對照(例如 SMART 字母)、課本出處考據,一律移進進階摺疊。
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 一次),檢查後集中修改。