# 章節包:自然語言處理(NLP)W3(9/24)第 06 章「N-gram 語言模型」 影片 2:12:42–2:33:51,YouTube ID g0QE6O17BWE。Notion 章節頁 https://app.notion.com/p/3e6fc631b03081588140d7f6a95e5bb4(頁 ID 3e6fc631b03081588140d7f6a95e5bb4),頁面標題「06 N-gram 語言模型(2:12–2:33)」。 ## 1. 第一行(直接照抄,不要改) [自然語言處理](https://app.notion.com/p/3e6fc631b03081b4a9e8f91f3411f61f) › [W3(9/24)](https://app.notion.com/p/3e6fc631b03081ff9776f36fab3e6e50) › 06|影片 [2:12:42–2:33:51](https://www.youtube.com/watch?v=g0QE6O17BWE&t=7962s)|投影片 W2_Word embeddings and Language Modeling (RNN)_v2 p.1–14|上一章 [05 作業一說明(1:46–2:02)](https://app.notion.com/p/3e6fc631b03081e59d87d1d5fa01e936)|下一章 [07 語言模型定義與困惑度(2:33–2:51)](https://app.notion.com/p/3e6fc631b03081b4b99acb876fd0bb2d) ## 1b. 最後一行(直接照抄,放在 Self-check 後面,當全頁最後一行) 讀完了嗎?下一章:[07 語言模型定義與困惑度(2:33–2:51)](https://app.notion.com/p/3e6fc631b03081b4b99acb876fd0bb2d)|回到週頁:[W3(9/24)](https://app.notion.com/p/3e6fc631b03081ff9776f36fab3e6e50) ## 2. 各段標題(照順序;每段一個 ## 標題,直接照抄連結) - `## [2:12:42](https://www.youtube.com/watch?v=g0QE6O17BWE&t=7962s) 接到 W2:先想為什麼需要` 老師講什麼:Slido 上的繳交問題交給助教回。W2 延續語言模型,之後會講 RNN、LSTM。老師提醒:先想清楚當時遇到什麼問題,以及這個方法為什麼能解決它。 - `## [2:14:25](https://www.youtube.com/watch?v=g0QE6O17BWE&t=8065s) 真實場域沒有 SOP` 老師講什麼:現在大家的起手式是先丟給 LLM 試。以前的做法是人工標註資料再訓練模型,但實際上常常沒有訓練資料,要自己設計不用標註的訓練方式,就像 word2vec 那樣。 - `## [2:16:39](https://www.youtube.com/watch?v=g0QE6O17BWE&t=8199s) 語言模型:根據前文猜下一個字` 老師講什麼:問答、寫文章、聊天都要生成句子,所以需要語言模型。Google 搜尋建議(來自 query log)就是例子。拿周杰倫歌詞自己算機率也可以,但語料太少,算不出好的分布。 - `## [2:18:31](https://www.youtube.com/watch?v=g0QE6O17BWE&t=8311s) N-gram 與 Google n-gram 資料集` 老師講什麼:n-gram 是連續 n 個字組成的片段(unigram、bigram、trigram)。Google 釋出的 n-gram 資料集讓做檢索的人如獲至寶,可以拿來做斷詞。一篇文章可以從 1-gram 到 n-gram 全部掃一遍,當作索引。 - `## [2:21:01](https://www.youtube.com/watch?v=g0QE6O17BWE&t=8461s) 語言指紋:J.K. Rowling 的筆名` 老師講什麼:J.K. Rowling 用筆名 Robert Galbraith 出書。研究者比對四字元片段的分布、常用字頻率、字長分布、常一起出現的字對,發現兩本書的風格一致。 - `## [2:24:09](https://www.youtube.com/watch?v=g0QE6O17BWE&t=8649s) 用統計抓 AI 寫的文章靠得住嗎` 老師講什麼:國科會和 ICML 都在討論怎麼抓 AI 寫的審查意見。GPTZero 這類工具是算 perplexity,但改幾個字、故意打錯字就能騙過。Turnitin 的 AI 偵測準確率不是百分之百,很難拿來認定你用了 AI。 - `## [2:27:25](https://www.youtube.com/watch?v=g0QE6O17BWE&t=8845s) Bigram 計數表與加一平滑` 老師講什麼:教科書例子:數 I want、want to 這類 bigram 出現幾次。只要有一個機率是 0,整句連乘就變 0,所以全部加 1 做 smoothing(平滑)。老師用「四個作業分數相乘,一次沒交就歸零」來比喻。 - `## [2:30:08](https://www.youtube.com/watch?v=g0QE6O17BWE&t=9008s) 條件機率連乘:從 bigram 到 n-gram` 老師講什麼:用 chain rule(連鎖律)把 i want to eat 每一步的條件機率乘起來。n 越大,每種組合出現的次數越少,統計越不可靠,所以簡化成只看前一個字的 bigram。 ## 3. 老師強調/會考/不考的地方(原句已驗證;寫進筆記時 ASR 錯字要改正) (無) ## 4. 這章摘要與重要度 換到 W2 投影片,說明為什麼需要語言模型,再用 n-gram、語言指紋、bigram 計數表和平滑,講怎麼從語料算出一句話的機率。(核心) ## 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 看這幾張圖:** - W2_Word p.3 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\brief_W2_Word_p003.png - W2_Word p.4 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\brief_W2_Word_p004.png - W2_Word p.5 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\brief_W2_Word_p005.png - W2_Word p.8 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\brief_W2_Word_p008.png - W2_Word p.9 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\brief_W2_Word_p009.png - W2_Word p.10 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\brief_W2_Word_p010.png - W2_Word p.11 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\brief_W2_Word_p011.png - W2_Word p.12 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\brief_W2_Word_p012.png - W2_Word p.14 → C:\D槽\TAICA課程\_work\notes-v2\nlp-w3\img\brief_W2_Word_p014.png --- W2_Word p.1 --- Natural Language Processing Word Embeddings and Language Modeling --- W2_Word p.2 --- GAI Motivation (for NLP tasks) Supervised learning ◦Text classification ◦QA system ◦… Issues ◦Lack of training data ◦Limitation of domain knowledge 2 Think about your learning strategies ! --- W2_Word p.3 --- Natural Language Generation The commonest way to generate sentences is by writing the words down, one after another. e.g. Please turn your homework … The next could be ? 3 in ? over ? --- W2_Word p.4 --- 語言模型 (Language Model) 4 Claude Shannon 1916 – 2001 Andrey Markov 1856 - 1922 [1913] The chance of a letter appearing depends on the letter before it. [1951] Prediction and Entropy of Printed English --- W2_Word p.5 --- Language Model 5 [IMAGE-ONLY] --- W2_Word p.6 --- 6 童年的紙飛機 現在終於飛回我 手裡 天青色等煙雨 而我在 等妳 怎麼這樣子 雨還沒停妳就撐 傘要走 妳說這一句 很有夏天的感覺 我用幾行字形容妳是我 的誰 為妳翹課的那一天 花落的 那一天 消失的下雨天 --- W2_Word p.7 --- 7 童年的紙飛機 現在終於飛回我 手裡 天青色等煙雨 而 在等 怎麼這樣子 雨還沒停妳 就撐 傘要走 說這一句 很有夏天的 感覺 用幾行字形容 翹課的那一天 花落 消失的下 天 為 是 的誰 P (b | a) P (c | ab) . . . P (説| 妳) = 1/4 P (説| 沒停妳) = 0 --- W2_Word p.8 --- N-grams An n-gram is a sequence of n words: e.g. Please turn your homework … 1-gram (unigram): "please", "turn", "your", or "homework" 2-gram (bigram): "please turn", "turn your", or "your homework" 3-gram (trigram): "please turn your", or "turn your homework" ... 8 Word Embeddings and Language Modeling --- W2_Word p.9 --- linguistic signature JK Rowling vs. Robert Galbraith Harry Potter vs. The Cuckoo’s Calling Text Analysis Software: Patrick Juola's JGAAP Stylometric Analysis: Sequences of four-character strings (four-grams), which are strong indicators of authorship. The frequency of the most common words. The distribution of word lengths. Pairs of words that frequently appeared together. 9 https://www.scientificamerican.com/article/how-a-computer-program-helped-show-jk-rowling-write-a-cuckoos-calling/ --- W2_Word p.10 --- N-gram Language Models We can use a naïve statistic method to model the language 10 Word Embeddings and Language Modeling I want to eat lunch. I want to eat Chinese food. I don't want to spend time cooking ... In a bi-gram model we have to count the occurrences of each bi- gram. e.g. C(I want) = 2 C(want to) = 3 C(spend time) = 1 ... --- W2_Word p.11 --- N-gram Language Models An example of bi-gram LM. Draw a table of bigram counts for eight of the words in all of the sentences 11 Word Embeddings and Language Modeling I want to eat Chinese food launch speed I 5 827 0 9 0 0 0 2 want 2 0 608 1 6 6 5 1 to 2 0 4 686 2 0 6 211 eat 0 0 2 0 16 2 42 0 Chinese 1 0 0 0 0 82 1 0 food 15 0 15 0 1 4 0 0 launch 2 0 0 0 0 1 0 0 speed 1 0 1 0 0 0 0 0 --- W2_Word p.12 --- N-gram Language Models Apply add-k smoothing (k=1): 12 Word Embeddings and Language Modeling Compute Probability (relative frequency): I want to eat Chinese food launch speed I 6 828 1 10 1 1 1 3 want 3 1 609 2 7 7 6 2 to 3 1 5 687 3 1 7 212 eat 1 1 3 1 17 3 43 1 Chinese 2 1 1 1 1 83 2 1 food 16 1 16 1 2 5 1 1 launch 3 1 1 1 1 2 1 1 speed 2 1 2 1 1 1 1 1 I want to eat Chinese food launch speed I 0.0015 0.21 0.00025 0.0025 0.00025 0.00025 0.00025 0.0075 want 0.0013 0.00042 0.26 0.0084 0.0029 0.0029 0.0025 0.0015 to 0.00078 0.00026 0.0013 0.18 0.00078 0.00026 0.0018 0.055 eat 0.00046 0.00046 0.0014 0.00046 0.0078 0.0014 0.02 0.00046 Chinese 0.0012 0.00062 0.00062 0.00062 0.00062 0.052 0.0012 0.00062 food 0.0063 0.00039 0.0063 0.00039 0.00079 0.002 0.00039 0.00039 launch 0.0017 0.0056 0.00056 0.0056 0.00056 0.0011 0.0056 0.00056 speed 0.0012 0.0058 0.0012 0.0058 0.0058 0.0058 0.0058 0.0058 --- W2_Word p.13 --- Probability of a Sequence Let's begin with the task of computing the probability e.g., Compute the probability of the word "the" given the history "its water is so transparent that". 13 Word Embeddings and Language Modeling w: the word to be generated​ h: some history C: the times the pattern show up in the dataset --- W2_Word p.14 --- Probability of a Sequence Compute probabilities of entire sequences like in N-gram model(Chain Rule of Probabilities) 14 Word Embeddings and Language Modeling e.g., Bi-gram model ## 7. 逐字稿(2:12:42 前後各多 1 分鐘,原始行) [02:12:42] 我們繼續上課 [02:12:43] 那slido有人問一些作業的絞交跟格式跟能不能做一些修改的問題 [02:12:49] 那 [02:12:49] 這部分細節我可能就請助教再回一下 [02:12:52] 因為 [02:12:53] 我們就有一個規範這樣子 [02:12:54] 那 [02:12:56] 對 [02:12:57] 我們會同意一下 [02:12:58] 就怎麼去 [02:12:59] 絞交這樣子 [02:13:01] 好 [02:13:03] 那我們來看一下 [02:13:05] 這個W2的部分的投影片 [02:13:07] 那其實是有點延續我們Language Model接下來的東西 [02:13:11] 然後 [02:13:12] 我們會帶一下說這個 [02:13:16] 用訓練的方式 [02:13:18] 我們看W2Vector是一個很簡單的一個2 layer的一個NN嘛 [02:13:23] 那我們能不能有聰明一點的模型 [02:13:25] 像大家所知啊STM的東西 [02:13:28] 他們當時的想法到底是什麼 [02:13:32] 好 [02:13:33] 那其實這前面的開場比較像是還是讓大家自己要先反思一下做這件事情 [02:13:39] 就是 [02:13:41] 不要太 [02:13:42] follow這種本來教科書上的想法說我們現在要 [02:13:47] 要train模型 [02:13:49] 要用這種比較 [02:13:51] sequential的model [02:13:53] 所以要用RNL STM [02:13:55] 你就要 [02:13:56] 就 [02:13:58] 知道 [02:13:59] 他是這樣做但是你可能要先知道為什麼 [02:14:02] 這時候到底是發生什麼事為什麼需要這個 [02:14:06] 然後為什麼 [02:14:08] 這個方法是可以解決這個問題的 [02:14:11] 我覺得 [02:14:11] 多往這樣的回去想像 [02:14:14] 你比較可以知道這個 [02:14:16] 這個問題跟solution之間的matching [02:14:20] 好 [02:14:21] 那 [02:14:23] OK [02:14:25] 前面這一頁講的我覺得比較像是說 [02:14:28] 當你 [02:14:29] 你未來學到這些AI 學到這些技術的時候其實你 [02:14:33] 面對一個真實的 [02:14:34] 場域 [02:14:36] 其實你並沒有人告訴你SOP [02:14:38] 沒有人告訴你說這時候要怎麼樣 [02:14:40] 雖然現在好像也 [02:14:41] 幾乎 [02:14:43] 大家的起手式SOP都 [02:14:45] 都蠻接近的反正就是 [02:14:47] 就是LM先做一波這樣子 [02:14:49] 就先 [02:14:50] 丟進去呼叫一下或是API跑一下 [02:14:53] 看他到底做的好不好這樣子能夠用agent的方式做就做 [02:14:58] 做掉這樣子 [02:15:00] 現在要自己finetune [02:15:02] 或是說做LoRA或是 [02:15:04] 做什麼reg [02:15:06] 我覺得比例有點降低了慢慢減少 [02:15:09] 因為現在的pondation model越來越強 [02:15:13] 不過可能 [02:15:14] 有些問題 [02:15:15] 你要思考一下說 [02:15:18] 我 [02:15:19] 我是一個 [02:15:21] 有supervised [02:15:22] 額外supervised data [02:15:24] 還是怎麼樣 [02:15:26] 我這樣的應用以前這樣的應用 [02:15:29] 做問答的 [02:15:30] 做新聞分類的 [02:15:32] 或是做 [02:15:33] 使用者的 [02:15:34] 意圖的分類的 [02:15:36] 我其實100以前的做法就是標註 [02:15:39] 用人類的知識標註一些資料然後硬券模型瞭解這些標註的資料 [02:15:45] 只要你的訓練資料跟未來資料的分佈是一樣的話 [02:15:50] 那就OK解決掉問題 [02:15:52] 但是 [02:15:53] 常常就是 [02:15:54] 不太一樣 [02:15:55] 或是說你trend模型不是這麼align到你的 [02:15:59] trending的data這樣子 [02:16:02] OK [02:16:03] 那 [02:16:04] �但是我們現在面對到的就是 [02:16:06] 那其實我們可能會更常遇到的是沒有 [02:16:10] 沒有trendingdata [02:16:11] 就像我前面trend那個 [02:16:13] 這個embedding一樣 [02:16:14] 其實是沒有trendingdata的 [02:16:15] 你就要自己想像 [02:16:17] 我的unsupervised的trending要怎麼做 [02:16:20] 我要自己設計trendingdata還是 [02:16:22] 用 [02:16:23] 什麼樣不同的任務 [02:16:25] 來訓練這個模型 [02:16:26] 會 [02:16:27] 別的任務這樣子 [02:16:30] 所以這個跟學習跟你自己在解決問題的測試 [02:16:34] 這個也會有點關係的 [02:16:36] 那我想 [02:16:39] 我們這邊 [02:16:40] 這一章其實前面會從language model開始帶 [02:16:43] 所以才會說跟 [02:16:45] 第一章的後面overlap是有的這樣子 [02:16:49] 那 [02:16:50] 其實你要想說 [02:16:51] 我們剛才講那些算那些機率啊 [02:16:54] 算那些東西 [02:16:55] 到底他的 [02:16:56] 他當時的 [02:16:57] 痛點是什麼 [02:16:58] 為什麼要去算那些property [02:17:01] 所以有點像是說如果我要做一個 [02:17:04] 問答 [02:17:05] 就是一句話後面接著一句話 [02:17:08] 或者是要叫電腦自己去寫出一個文章 [02:17:12] 或是要跟我聊天 [02:17:14] 那他不就是有一個input要輸出一個output嗎 [02:17:18] 就是我是 [02:17:20] 要能夠去生成 [02:17:22] 這個句子的東西 [02:17:24] 所以 [02:17:24] 這個language model的想法這種property的想法才會在那個時候就 [02:17:29] 大家覺得 [02:17:30] 應該要做這些事情 [02:17:31] NLP應該要做這樣的事情 [02:17:34] 這個圖就是我們 [02:17:35] 今天前面有講到的 [02:17:36] 就是有用到的部分 [02:17:38] language model我想 [02:17:40] 這個 [02:17:41] 這是 [02:17:42] 簡單的例子 [02:17:43] 就是query log [02:17:44] 就是前面的 [02:17:46] 前面的字詞不一樣後面 [02:17:49] 產生的東西的排序就不同這樣子 [02:17:53] 雖然Google的這個資料其實是來自於query log [02:17:57] 不見得是俗而語調 [02:17:59] 但是其實也很接近這樣子 [02:18:02] 當然 [02:18:03] 這個前面我們算那個語言模型算property的 [02:18:08] 其實你可以自己做 [02:18:09] 你可以自己拿這個這是周杰倫的歌詞來做 [02:18:12] 然後可以算property [02:18:15] 但是 [02:18:16] 語料庫沒那麼多 [02:18:18] 如果你只拿單一的歌曲的語料來做的時候其實 [02:18:22] 很難算出一些 [02:18:23] 很好的分佈這樣子 [02:18:26] 基本上他就是follow language model的想法在做這樣一件事情 [02:18:31] 那比較 [02:18:32] 從以前的角度來看 [02:18:33] 從我們 [02:18:35] 我有大量語料庫的角度 [02:18:37] 我在算這些東西的時候 [02:18:39] 以前我們會用所謂的n-gram的方式 [02:18:42] 那n-gram其實你常看到這個n-gram其實就是 [02:18:46] 我有 [02:18:47] n個字所形成的 [02:18:50] 一個片段 [02:18:51] 那 [02:18:52] 這個東西以前在做 [02:18:54] IR或是在做簡單的NLP其實 [02:18:57] 其實大家都會 [02:18:58] 標準這個好你是用1-gram [02:19:00] 5-gram [02:19:00] 3-gram [02:19:01] 或者說你真的做到n-gram [02:19:03] 其實不太會做到n-gram [02:19:06] 除非是這個 [02:19:07] 這個像Google [02:19:08] 當初他們在做搜尋引擎的時候其實是基本上是n-gram的index [02:19:13] 然後他們也release一個 [02:19:16] 其實當初Google有release一個n-gram的dataset [02:19:19] 這個dataset一release出來這個當初做資訊檢索的如獲至寶 [02:19:24] 因為他其實就是從 [02:19:26] 語料庫裡面去 [02:19:27] 切出那個 [02:19:29] 比如說四字詞的這樣的一個 [02:19:32] 統計分佈 [02:19:33] 有了統計分佈其實你拿那個來做斷字系統 [02:19:37] 就非常好用 [02:19:39] 因為 [02:19:40] 出現頻率很高就是應該要在一起 [02:19:45] 那這個名詞就是1-gram [02:19:47] 或是叫uni-gram [02:19:48] 它就是單字詞 [02:19:50] 就這個bi-gram tri-gram這樣子 [02:19:53] OK [02:19:54] 那 [02:19:55] 如果一篇文章 [02:19:56] 我說我們是用n-gram來 [02:19:59] 做index [02:20:00] 或是說 [02:20:01] 我們是用n-gram來 [02:20:02] 表示這篇文章 [02:20:03] 其實它的概念 [02:20:06] 是從 [02:20:06] 1 [02:20:07] 到 [02:20:08] 長度為n [02:20:09] 就是文章 [02:20:10] 100個字 [02:20:11] 那這個n就是100這樣子 [02:20:13] 所以它會 [02:20:15] sliding window是1的 [02:20:17] scan一遍有這麼多token [02:20:19] 2的 [02:20:20] 再scan一遍也有這麼多不同的字這樣子 [02:20:23] 所以你可以想像這個n-gram一出來之後那個我的片段我這些 [02:20:27] 這些gram會非常的多樣這樣子 [02:20:29] 當然有一些會重複沒錯 [02:20:31] 尤其是一些常見的字會重複 [02:20:33] 但是就是用這種方式來表示 [02:20:36] 因為我們根本不知道使用者想找的是 [02:20:39] 什麼樣的表示 [02:20:40] 就是 [02:20:42] 這個 [02:20:42] 有些很長的概念但是有些很短它也有代表同樣的意義 [02:20:48] OK [02:20:49] 因為這樣的pattern [02:20:51] 這樣的組合 [02:20:52] 其實它都有它的 [02:20:54] 特殊的意義就像我前面講那個莎士比亞的pattern一樣 [02:20:59] 無限猴的例子 [02:21:01] 那我這邊在用這個例子 [02:21:03] 這是一個 [02:21:04] 叫做linguistic signature [02:21:08] 就是 [02:21:08] 語言學上的這種 [02:21:11] 特徵或者是簽名的概念 [02:21:14] 這個是 [02:21:15] 當做一個故事啊這個這應該大家都認識吧 [02:21:18] 寫哈利波特的作者 [02:21:20] J.K Rowling [02:21:22] 那 [02:21:22] 這個人 [02:21:24] 有誰知道這個人是誰 [02:21:31] 對我們應該要 [02:21:33] 鼓勵線上的我們要做一個問答這樣子 [02:21:36] 然後立刻 [02:21:37] 不過你們大家立刻 [02:21:38] 搜尋一下Google就知道了 [02:21:39] 這個其實是一個假的虛名 [02:21:44] 就是J.K Rowling當初他自己偽造的一個另外一個作者 [02:21:48] 另外一個筆名這樣子 [02:21:51] 那 [02:21:52] 就是 [02:21:54] 就是這樣啊這個 [02:21:55] 他其實非常厲害J.K Rowling [02:21:58] 得了很多獎 [02:21:59] 他寫了哈利波特這樣 [02:22:02] 後來他覺得 [02:22:04] 大家都把他 [02:22:06] 捧得太高這樣子所以他覺得這個 [02:22:09] 已經沒有什麼挑戰的意義 [02:22:10] 所以他就 [02:22:11] 另外再用這個筆名 [02:22:13] 自己去投稿 [02:22:15] 寫了一個 [02:22:16] 小說 [02:22:17] 去投稿這樣子 [02:22:19] 然後瞬間這個 [02:22:21] 這個譯文界炸裂 [02:22:23] 哇這個人非常厲害啊這個年輕的這個作家 [02:22:27] 寫這個 [02:22:29] 這個文筆之好這樣這樣然後就得了什麼獎 [02:22:33] 然後 [02:22:36] 然後後來呢 [02:22:37] 其實這個故事可能要再看一下 [02:22:39] 有點忘記是他自己承認 [02:22:41] J.K Rowling自己承認說那個就是我這樣子 [02:22:44] 還是說因為後來就有人去分析啊因為大家覺得說怎麼可能那麼厲害這樣 [02:22:50] 就像你突然會發現說 [02:22:51] 某一個 [02:22:52] 某一個網路也不知道是誰的突然寫了一大堆的natural paper這樣子 [02:22:57] 他也不知道是來自哪個學校 [02:22:59] 就覺得很怪這樣不太可能會發生這種事 [02:23:02] 所以就會有人去分析說啊那這個人到底 [02:23:05] 是什麼就做了 [02:23:07] 去去 [02:23:09] 這個這個是一個學者啊就做了一個用這個軟體去分析 [02:23:13] 整個的 [02:23:14] 就是拿這兩本小說 [02:23:17] 去分析各種各式各樣子 [02:23:19] 包含是說 [02:23:20] 四字詞的分佈 [02:23:22] 然後還有整個最常用的字的頻率 [02:23:26] 然後這個forens啊就是 [02:23:29] 習慣用哪些字的這樣的一個長度的分佈啊 [02:23:33] 然後跟pairwise的出現的頻率之類的 [02:23:37] 哦 [02:23:39] 然後就用這個分佈發現這兩本小說 [02:23:43] 相似度相當的高 [02:23:45] 相當的高 [02:23:46] 所以 [02:23:47] 所以 [02:23:48] 後來就 [02:23:49] 就 [02:23:49] 就很浪費這樣子 [02:23:51] 當然我不知道是他自己 [02:23:52] 自己先承認還是這個人先抓他出來這樣子 [02:23:56] 但是 [02:23:57] 其實他也沒做什麼錯事啊 [02:23:58] 只是說 [02:23:59] 他去 [02:24:01] 這個已經有點像現在很資深的教授但是他也去參加那個年輕教授的獎項那種感覺這樣子 [02:24:07] 就是有點那個降維打擊的感覺這樣子 [02:24:09] 但是 [02:24:10] 但是 [02:24:11] 你可以發現就是說其實可以用統計上語法 [02:24:15] 語法學上的統計的東西 [02:24:17] 就可以 [02:24:18] 知道一個人的風格 [02:24:20] 這個跟其實昨天 [02:24:22] 在國科會討論是說 [02:24:24] 我們要不要用AI來抓這個 [02:24:28] 國科會計劃 [02:24:29] 撰稿的東西 [02:24:30] 或者是說拿AI來detect [02:24:32] 審國科會計劃人的 [02:24:35] 評論是不是用AI寫的 [02:24:37] 這件事當然其實在 [02:24:39] 在 [02:24:40] 現在的paper review的 [02:24:42] 整個society都已經非常吵得非常嚴重 [02:24:46] 因為像 [02:24:47] 像 [02:24:47] 這個今年ICML就有抓那個paper review是用AI做的 [02:24:53] 那個 [02:24:53] 那個 [02:24:54] 懲罰很重 [02:24:55] 直接你的paper都被累卷 [02:24:58] 那這件事當然其實 [02:24:59] 很難去避免 [02:25:00] 說實在的因為現在paper實在太多要review要看那麼多的東西不太容易 [02:25:05] 大家都還是會用AI輔助 [02:25:07] 但是我想大多數人 [02:25:09] 可能都還是會自己去消化一下那些內容 [02:25:12] 只是說有些人在寫paper或者是審paper的時候可能都用AI [02:25:17] 那 [02:25:18] 現在其實也有一些工具 [02:25:20] 之後我們可能會提到 [02:25:21] 像什麼 [02:25:22] 什麼GPT ISO或者是什麼東西 [02:25:25] 他就會告訴你說 [02:25:26] 這個東西pattern出來之後 [02:25:29] 其實他跟 [02:25:30] 他其實用模型去算 [02:25:32] 模型去算說用模型去看這篇文章 [02:25:35] 他的perplexity是多少 [02:25:36] 這是最 [02:25:37] 最陽春的辯論 [02:25:39] 這個方式這樣子 [02:25:40] 他就可以知道說這個跟這個GPT寫出來的很像風格很像這樣子 [02:25:46] 那其實呢 [02:25:47] 這個只要你研究過大語言模型就知道說這個太容易了我就改幾個字 [02:25:53] 甚至有學生很厲害就是 [02:25:55] 故意寫一個錯字這樣子 [02:25:57] 因為他知道AI不會寫錯字 [02:26:00] 他故意寫一個type這樣子 [02:26:01] 然後老師看到type就說這是你自己寫的 [02:26:04] 只有那個type是自己寫的 [02:26:06] 其他都是AI寫的這樣子 [02:26:09] 他只要用這種方式他就可以破壞這整個分佈 [02:26:13] 那這樣整個算出來的機率或是所謂的perplexity [02:26:16] 就會拉高 [02:26:18] 拉高之後人家就會覺得這不是AI做的這樣子 [02:26:21] 所以像 [02:26:23] 像各位如果寫論文都會用 [02:26:25] 圖書館的turn in去 [02:26:27] 去檢查那個 [02:26:28] 重複的比例 [02:26:31] 那turn in現在有提供AI的功能這樣子 [02:26:34] 就是讓你去判斷你的論文是不是AI寫這樣子 [02:26:37] 好像一年要 [02:26:39] 賣學校 [02:26:40] 好幾十萬 [02:26:41] 這樣子 [02:26:41] 我就覺得 [02:26:43] 不賴 [02:26:44] 就是根本做不到這樣子 [02:26:45] 你隨便給個數字 [02:26:47] 而且老師說 [02:26:48] 就算他真的很準他也沒有辦法百分之百去判斷 [02:26:52] 這件事情 [02:26:54] 只要他有 [02:26:54] 落差 [02:26:55] 只要他的準確率不是百分之百 [02:26:57] 我們就很難用這個數字去駕馭說 [02:27:00] 你是用AI寫的 [02:27:02] 他等下 [02:27:03] 真的錯殺了怎麼辦 [02:27:05] 所以那一塊其實現在其實是 [02:27:08] 不見得是 [02:27:09] 會被拿來當成一個評估的一個機制 [02:27:13] 不過其實你可以發現這是很久以前的 [02:27:15] 這個其實當初用這種簡單的統計 [02:27:17] 就可以判斷說這個作者 [02:27:20] 他的風格 [02:27:21] 其實是一致的 [02:27:25] 那我們剛才看到這些公式算條件機率 [02:27:28] 算code 這些東西 [02:27:30] 其實你大概可以算算 [02:27:31] 這種你只要有一個語料庫進來 [02:27:34] 你就可以去算這些東西 [02:27:36] 去算這些 probability [02:27:38] 這是一個 [02:27:39] 我記得是什麼 [02:27:40] 就是我們教科書上的例子 [02:27:42] 他就是有一個語料庫 [02:27:43] 這個語料庫應該是找不到 [02:27:45] 他就去算說 [02:27:46] 這個Bigrand count [02:27:49] Bigrand count [02:27:50] 就是 [02:27:52] 一起 [02:27:53] 有點像co-occurrence的關係 [02:27:55] 所以I後面跟want [02:27:58] 然後這個want後面跟to [02:28:00] 這個量很多這樣子 [02:28:02] 但這個字要我覺得 [02:28:03] 不是a balance [02:28:04] 就是這個count出來的這個字 [02:28:08] 那你說如果我要自己算這些字 [02:28:10] 那這些東西怎麼做 [02:28:11] 就是得自己 [02:28:12] biblicoding一下 [02:28:13] 然後 [02:28:14] 叫 [02:28:15] Agent [02:28:16] 自己去抓個一萬篇文章算一算 [02:28:18] 你就可以做這樣的例子出來 [02:28:21] 然後呢通常會做一些事情 [02:28:23] 算做條件機率的話會做這件事情 [02:28:26] 會做smooth行 [02:28:27] 就是說 [02:28:28] 因為 [02:28:28] 機率其實不管你是 [02:28:30] 你是Bigrand或是Unigrand [02:28:33] 其實機率都是相乘 [02:28:36] 機率都是相乘 [02:28:38] 你如果前面機率很高然後突然有 [02:28:40] 有一個 [02:28:41] 像這種0的 [02:28:42] 像這種0的 [02:28:43] 那這0代表什麼 [02:28:45] 0代表是說 [02:28:46] to [02:28:47] 在你的語料庫裡面 [02:28:48] to後面不會跟want [02:28:50] 就是非常肯定的告訴模型說 [02:28:54] to後面 [02:28:55] 不會出現want [02:28:56] 他就會告訴你機率是0 [02:29:00] 所以你不管前面機率再高 [02:29:02] 算一算 算到這邊 0 [02:29:04] 那 [02:29:05] 機率相乘就是0這樣子 [02:29:06] 所以 [02:29:07] 通常不會這樣做 [02:29:08] 除非你說 [02:29:10] 我已經看完人類所有的文獻 [02:29:12] 他就是不會相比 [02:29:14] 這樣所以在這裡 [02:29:15] 但因為我們通常語料不會很多嘛 [02:29:18] 所以我們要避免這種files [02:29:20] 所以我們會加一些這種 [02:29:22] 這種noise [02:29:23] 或是小小的noise [02:29:24] 最簡單就是加1 [02:29:26] 就把所有a大家都會出現過一次 [02:29:28] 加1在機率的計算上你會發現normalize之後 [02:29:32] 他會有一點子但是值很小 [02:29:35] 值很小 [02:29:36] 值很小的好處是 [02:29:38] 雖然乘起來 [02:29:39] 會整個下降沒錯 [02:29:40] 但是他不會變成0 [02:29:42] 不會變成0就有機會了 [02:29:44] 就有機會了 [02:29:45] 比如說 [02:29:48] 我說我們這學習四個作業 [02:29:51] 我們的期末分數是四個作業相乘這樣子 [02:29:54] 然後取logan normalize [02:29:56] 那你說那我有一次沒交 最後就是0 [02:29:59] 對不對 [02:29:59] 那如果用相加就不會有這個問題 [02:30:02] 不過anyway [02:30:03] 機率的做法我們常常會做一點這樣子的動作 [02:30:08] 好 [02:30:09] 這是 [02:30:10] 算出來的probability [02:30:11] 其實你可以再更延伸一點 [02:30:13] 你可以再去說 [02:30:14] 那我 [02:30:16] 算出這些co-occurrence的關係的時候 [02:30:19] 我們在 [02:30:20] W1的後面頭一面不是告訴你說那我就可以算這種Bigrant的 [02:30:24] language model就是 [02:30:26] 我去算這一句 [02:30:27] 這個字加這個字 [02:30:29] 再這個字再這個字 [02:30:30] 然後我就可以把這個條件機率把它乘在一起 [02:30:33] 就是i want to eat什麼 [02:30:35] 然後我就可以把這個i後面接1的機率多少 [02:30:39] want後面接2的機率是多少 [02:30:40] 那我就可以一路的去算下來去算出 [02:30:44] 最後它的輸出 [02:30:45] 的probability是什麼 [02:30:48] 你就可以去做這樣的事情 [02:30:50] 那就是條件機率的計算 [02:30:52] 那這個 [02:30:53] 就是很基本 [02:30:55] 所以 [02:30:55] 當你想做 [02:30:57] 這句話 [02:30:58] 後面 [02:30:59] lat [02:31:00] 後面會跟著 [02:31:02] 的一個probability [02:31:03] 那你就去算這個count [02:31:05] 在你的語料庫這個出現次數 [02:31:08] 後面 [02:31:09] 接著這個lat [02:31:10] 後面接著的count [02:31:12] 你這樣一除 [02:31:13] 就可以算出這個probability [02:31:16] 當然你也可以把它拆解 [02:31:18] 你也可以把它拆解 [02:31:19] 因為 [02:31:20] 你在算這個時候 [02:31:21] 你的語料庫 [02:31:23] 沒有出現 [02:31:23] 或只出現一次的時候 [02:31:25] 就沒辦法算 [02:31:26] 所以你可以把它拆解 [02:31:28] 說我就是兩兩 [02:31:30] 然後去預測 [02:31:31] 下一個字 [02:31:34] 所以它會 [02:31:35] 跟 [02:31:35] 就我們剛才 [02:31:36] 前面 [02:31:37] 第一張 [02:31:38] 舉的那個例子 [02:31:39] 我就可以兩兩然後去看 [02:31:41] 最後我這樣預測這個字之前 [02:31:45] 到底我累積下來的這個兩兩的probability到底長什麼樣子 [02:31:50] 我就可以再去predict [02:31:51] 我下一個字的probability [02:31:54] 但是基本概念 [02:31:55] 所以 [02:31:56] 你大概可以想像說 [02:31:57] 那我的語料庫如果 [02:31:59] 不夠 [02:32:00] 或者是沒看過字的時候 [02:32:03] 我需要做一些怎麼樣調整 [02:32:05] 這個以前在做這種 [02:32:06] probability-based的時候的作法 [02:32:09] 都要探討的部分 [02:32:13] OK [02:32:14] 這個 [02:32:15] 這個就是 [02:32:15] 剛才講的如果是一個 [02:32:17] 這樣的我只看 [02:32:20] 字跟字 [02:32:21] 單一的關係的時候 [02:32:23] 我先看第一個字的probability [02:32:25] 然後第二個字呢 [02:32:26] 第一個字發生之後 [02:32:28] 第二個字的probability [02:32:30] 接下來 [02:32:31] 它這邊更復雜 [02:32:32] 我就是從 [02:32:33] 第一個字第二個字發生之後 [02:32:35] 第三個字發生probability [02:32:37] 那你可以把這個公式展開了 [02:32:39] 那分母就是 [02:32:41] 兩個字 [02:32:42] 然後分子就是三個字 [02:32:43] 所以 [02:32:44] 你的Corpus裡面有統計這n grand count的時候 [02:32:48] 你就可以算所有的東西 [02:32:50] 但是你會發現 [02:32:51] 你這個東西其實它的 [02:32:53] 它出現次數就越少 [02:32:55] 因為那麼多字 [02:32:56] 那就可能只出現一兩次的時候 [02:32:59] 你這個 [02:33:00] 的 [02:33:01] 影響到前面的東西 [02:33:02] 要 [02:33:03] 看要怎麼去調整這樣 [02:33:05] 但不同的 [02:33:06] 文獻的分佈其實你會做不同的調整 [02:33:09] 這是n grand的model [02:33:11] 做這樣的事情 [02:33:12] 但是如果簡化一點 [02:33:14] 不要這麼麻煩 [02:33:15] 這個實在太難搞 [02:33:17] 那我們就做bigrand的model [02:33:19] bigrand就是我現在這個字呢 [02:33:21] 只會跟前一個字有關 [02:33:23] 所以我在算probability的時候 [02:33:25] 只看前一個字是什麼 [02:33:26] 前一個字是什麼 [02:33:28] 那你說這個 [02:33:29] 這個應該 [02:33:31] 不work [02:33:31] 但是以前就是這樣 [02:33:33] 這樣就很厲害這樣子 [02:33:35] 更不用想去做這些事情 [02:33:37] 不是它不好算 [02:33:39] 因為你 [02:33:39] 根本沒辦法統計這些 [02:33:41] 這個東西其實是 [02:33:43] 很有bias的probability [02:33:44] 因為你的corpus很少這樣子 [02:33:50] 好 [02:33:51] 那這邊就比較一個formal的定義 [02:33:53] 就是雖然大家都提到有大語的模型 [02:33:56] 那language model在教科書上 [02:33:59] 這是一個很古老的turn [02:34:01] 其實我們以前 [02:34:02] 尤其是如果你是 [02:34:05] 不是你是 [02:34:06] 老師是從這個 [02:34:08] 做搜尋語行開始進入NLP的這個年代 [02:34:10] 其實也算是半入期 [02:34:12] 因為以前做NLP的人其實 [02:34:14] 跟做搜尋的NLP的人是 [02:34:17] 想法手法是不太一樣 [02:34:19] 那不見得會用language model [02:34:22] 就是以前 [02:34:24] 如果NLP是用language model來做的時候就覺得 [02:34:27] 腦袋就浮現幾個字 [02:34:29] 它是做比較理論的這樣子 [02:34:31] 因為就要算一堆的機率 [02:34:33] 就要在那邊計率 [02:34:34] 玩來玩去這樣子 [02:34:36] 當然paper是比較好寫的 [02:34:39] 教科書上的講法就是這樣子的 [02:34:42] 就是 [02:34:43] 我有一個model [02:34:45] 就是一個架構 [02:34:46] 一個可 [02:34:48] 重現 [02:34:48] 可度量 [02:34:50] 可計算的方式 ## 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 一次),檢查後集中修改。