# 接手卡:自然語言處理(115-1 清大 TAICA) 最後更新:2026-10-01(W4 筆記完成) ## 2026-10-01 狀態(先讀這段) - 流程以 `C:\D槽\TAICA課程\_筆記SOP.md`(v2.4)為準;下面「現在做到哪」「下一步」是舊資訊,W1–W4 都已完成。 - W4(10/1)有兩支影片:老師正課(約 1:20)+助教 PyTorch 教學(2024 錄影,約 1:26)。9 章,週頁 https://app.notion.com/p/3ecfc631b03081b8aa2cf4a97467ed41 - 老師 10/1 把投影片改回沒有 `_v2` 的檔名;舊 `_v2` 檔已從 git 歷史救回原位(W2、W3 設定還指著它們)。 - 下一堂從 `W2_Word embeddings and Language Modeling (RNN).pdf` p.48(FFN、RNN)接。作業一約 10/15 交。 ## ⚠️ 2026-09-25 筆記改版 v2(先讀這段) - **Notion 筆記全部重做成新結構**:學習主頁 → 課程 → 週 → 章節,外加兩門課共用的「概念資料庫」。 - NLP 的**新課程頁**:`3e6fc631-b030-81b4-a9e8-f91f3411f61f`(週次導覽 W1–W3 目前都是「⏳ 重建中」)。 - 下面「固定位置」表裡的**舊課程頁與舊 W1/W2 筆記**已整棵搬進「📦 封存」(`3e6fc631-b030-81ef-8963-e93938b69f54`),**沒有刪**,只當漏看檢查表。 - 做法、模板、每週步驟:照 `人工智慧導論\_接手卡.md` 的「筆記 v2:每週怎麼做」。樣品是 AI W1。 - 概念資料庫的「週」欄用 `NLP-W1` 這種寫法(不是 `W1`)。 - 本檔最下面的「📖 術語卡標準」**已被 v2 取代**,新筆記不要再做舊式術語卡。 - 狀態(2026-09-26):NLP W1–W3 新版**還沒做**,等主理人看完 AI W1 樣品的回饋。 ## 現在做到哪 | 週次 | 影片 | 逐字稿 | Notion 筆記 | |---|---|---|---| | W1(9/10) | ✅ `第一周1150910/videoplayback.mp4` | ✅ `videoplayback.逐字稿.txt` | ✅ 完成(含 5 張 Mermaid 流程圖) | | W2(9/17) | ✅ `第二周1150917/…Week 2.m4a` | ✅ 4,181 行 | ✅ 完成(含時間戳對照表 90 列) | | W3(9/24) | 🔄 下載中 | ⬜ | ⬜ | ## 下一步 W3 的網址已拿到:`https://youtube.com/live/g0QE6O17BWE`(171 分鐘)。 **目前卡在下載**(YouTube 解析這支特別慢)。下載完 → 轉單聲道 → 跑逐字稿 → 寫筆記。 跑逐字稿的指令(約 15 分鐘): ```bash cd "C:/D槽/TAICA課程/自然語言處理/第二周1150917" "C:/Users/user/.cache/meeting-record/venv/Scripts/python.exe" -u \ "C:/Users/user/.claude/scripts/transcribe_class.py" \ "W2_自然語言處理_高宏宇.m4a" ``` > 腳本原本放在 session 暫存資料夾,重開機會消失。 > 若不存在,重新建立:見下方「轉文字腳本」。 > > 2026-09-17 改版:詞彙提示改成按課程切換,腳本會從音檔路徑自動判斷 > (路徑含「自然語言處理」→ nlp、含「人工智慧導論」→ ai、都不含 → generic)。 > 要強制指定加 `--course=nlp`。舊版備份在 `transcribe_class.py.bak`。 跑完後寫筆記,掛在 Notion 課程主頁底下。 ## 固定位置 | 東西 | 位置 | |---|---| | Notion 課程主頁 | https://app.notion.com/p/3defc631b030811099abc599de73b686 | | Notion W1 筆記 | https://app.notion.com/p/3defc631b0308158b66ecc0d0f9f7840 | | Notion W2 筆記 | https://app.notion.com/p/3defc631b03081fab207fa9994c44a6f | | **作業一資料夾(2026-09-28 整理)** | `自然語言處理\HW1\`:`HW1_作業介紹.html`(給人看)、`HW1_Word_Analogy_規定.md`(給 AI 看)、`原始檔_2026\`(GitHub 複製品)、`助教說明影片\`(音檔+逐字稿) | | **作業一原始素材(正本)** | `NTHU_.../2026/Assignments/Assignment1/`(PDF 37 頁+main.ipynb+csv);`HW1\原始檔_2026\` 是 9/24 版的複製品,更新要看這裡 | | 課程 GitHub(已 clone) | `NTHU_Natural_Language_Processing/`,投影片在 `2026/Slides/` | | Python(含 faster-whisper、yt-dlp、pypdf) | `C:\Users\user\.cache\meeting-record\venv\Scripts\python.exe` | | 課程 Slido | https://app.sli.do/event/oBajtdC5ZobNokWieGtjAg | ## 每週固定流程 1. 使用者給 YouTube 網址(課程 GitHub README 也會列) 2. `yt-dlp` 下載音訊 → `ffmpeg -vn -ac 1 -ar 16000 -c:a aac -b:a 48k` 轉單聲道 (yt-dlp 的 `--postprocessor-args` 對已是 m4a 的來源不生效,要另外轉) 3. faster-whisper large-v3 on cuda 轉逐字稿(實測約 12 倍速:3 小時的課跑 15 分鐘) 4. 對照三種來源寫筆記:逐字稿 + `2026/Slides/` 的投影片 PDF + Slido 問答 5. 建 Notion 子頁,掛在課程主頁底下 ## 轉文字腳本 若 `C:\Users\user\.claude\scripts\transcribe_class.py` 不存在,內容重點: - faster-whisper `WhisperModel(name, device="cuda", compute_type="int8_float16")` - `COURSE_PROMPTS` 是 dict(key:nlp/ai/generic),`pick_prompt()` 依路徑或 `--course=` 選一個 - `model.transcribe(audio, language="zh", initial_prompt=, vad_filter=True, beam_size=5)` - 先呼叫 `os.add_dll_directory()` 加入 site-packages 底下的 `nvidia/cublas/bin`、`nvidia/cudnn/bin`,否則 CUDA 找不到 DLL - 輸出 `<音檔名>.逐字稿.txt`,每行 `[HH:MM:SS] 內容` ## 投影片對應(重要,別找錯檔) 老師的投影片檔名前面的 `W` **不等於上課週數**。實際對應: | 上課週 | 實際用的投影片 | 講到哪 | |---|---|---| | W1(9/10) | `Syllabus-115.pdf` 全部 + `W1_NLP_brief.pdf` 開場約 5 頁 | — | | W2(9/17) | **`W1_NLP_brief.pdf`**(95 頁) | **第 64 頁**(貓/狗/卡車那張圖) | | W3(9/24) | README 標 **`W2_Word embeddings...(RNN)_v2.pdf`**(62 頁);實際有沒有先講完 `W1_NLP_brief` p64–90 **要看逐字稿確認** | 預計 Bengio 2003 → LSA/LSI → word2vec | 老師明說**不會講 GloVe**(p91)。 `W2_Word embeddings and Language Modeling (RNN).pdf`(62 頁)**這堂完全沒用到**, 裡面的 N-gram、Perplexity、PPMI、FFN、RNN 之後才會上。 ## ⚠️ 投影片已改版(2026-09-24 確認) 老師把投影片換成 `_v2`,README 現在指向新檔。**但我比對過,頁數完全沒變**: | 投影片 | 舊 | 新(_v2) | 差異 | |---|---|---|---| | `W1_NLP_brief` | 95 頁 | 95 頁 | 只有 p66 標題多一個空格 | | `W2_Word embeddings...(RNN)` | 62 頁 | 62 頁 | 完全相同 | **所以 W1、W2 筆記裡標的頁碼不用改。** 以後再改版要重新比對一次。 ## 作業一(2026-09-24 公布) - **主題**:Word Analogy(`King is to Queen as Man is to Woman`) - **期限**:老師寫「三週內」→ **約 10/15**。⚠️ 確切日期要去 NTU COOL 看 - **配分**:程式 55%(七個 TODO)/報告 45% - **預訓練模型**:模板用 `glove-wiki-gigaword-100` - **交法**:`.ipynb` + `requirements.txt` 壓成 zip,檔名 `NLP_HW1_學校_學號.zip`,上傳 NTU COOL - **最大的雷**:`.ipynb` 裡**每個 cell 的輸出都要留著**,沒有就所有實驗與圖表的分數全失 - 詳細規定看 `自然語言處理\HW1\HW1_Word_Analogy_規定.md`(2026-09-28 從上一層搬進 `HW1\`,並補上說法衝突、失效連結、模板毛病) - 助教作業說明影片:`https://youtu.be/4nktsdfU24k`(24 分鐘,2026-09-23 上傳),逐字稿在 `HW1\助教說明影片\` - **2026-10-04 進行中:AI 示範實作+一條龍說明文件**,在 `HW1\示範實作\`。**接續前先讀 `HW1\示範實作\_接手卡.md`**(現況、下一步、踩過的坑都在那)。 ## 學期關鍵日期 - **第 14 週推算 2026/12/10(四)實體期中考**,25%,斷網手寫。暫定未定案,要盯公告。 - 作業共 4 次佔 75%。**W2 課堂上老師明講:第一個作業「下禮拜就出了」,即 9/24 前後。** 老師說可以先看 GitHub 上 2024/2025 的舊版(「作業不太改變」),但**難度會稍微調高**。 - GitHub 上現有的作業是 2025 舊版,不要先寫。 ## W3(2026-09-24)已處理完成 - **影片**:`youtube.com/live/g0QE6O17BWE`,全長 2:51:00 - **逐字稿**:`第三周1150924\W3_自然語言處理_高宏宇.逐字稿.txt`(4,047 行) - **Notion 筆記**:`W3 筆記|2026-09-24 語言模型、word2vec 拆開來看、作業一公布` (page id `3e5fc631-b030-81ba-80e2-efdcb7750bdb`,在 NLP 課程主頁底下) - **筆記結構**:跟 W1/W2/AI W1 一致 —— 開頭一張「🔍 回看影片對照表」(約 120 列, 影片時間 → 章節 → 一句話),每個標題都掛 `h:mm:ss`。 - **這堂的內容分界**:0:02:31 開始;投影片是 **W1_NLP_brief 的後半**, **2:13:05 才換到 W2_Word embeddings**。所以 W2 那份投影片只上到開頭幾頁。 ### 老師這堂明確講的考試資訊(重要) - **實體閉書考試**,時間**大約第 14 週**(2:49:17,老師說「我寫 mid-term 但其實比較在期末」, 會在兩週內確認)。 - **不考算式**(明講不會叫你寫 BM25 公式)。**考作業過程與 insight**(1:47:43、2:48:35)。 - ⚠️ 所以筆記刻意把老師的故事、比喻、感想都記下來 —— 那些才是他會考的。 ### 順手做掉的事 - `~/.claude/scripts/fix_transcript.py` 新增 **44 條**錯字修正(這堂新發現的)。 重點:`propriety/propensity/preparsity` 都是 **perplexity**;`幾率 → 機率`(43 處); `Glowback → GloVe`、`Fastest → FastText`、`SKIGRAND → Skip-gram`、`捐信 → Gensim`、 `Engram → n-gram`、`Bird/Burr/Burt → BERT`、`GBT → GPT`、`語調庫 → 語料庫`。 已重跑套用到 NLP W1/W2/W3 三份逐字稿(AI W1 無變動)。原始輸出留在 `.orig.txt`。 - ⚠️ 新增的條目裡 `Fastest`、`Bird`、`MTB`、`Engram`、`lacuna` 本身都是真的英文字, 是「這兩門課的語境下一定是錯字」才放的。**換課用要重新評估。** ### 跑腳本要用的 Python(不是系統的 python) ``` C:\Users\user\.cache\meeting-record\venv\Scripts\python.exe ``` `opencc` 和 `faster_whisper` 只裝在這個 venv,其他五套 Python 都沒有。 ## 📖 術語卡標準(2026-09-25 定案,四份筆記都已套用) 主理人的需求原話:「出現這種文字…你是不是可以幫我做一個解釋?例如說這個詞是什麼意思? 那影響了什麼事情?在這裡面做了什麼角色?什麼關鍵」 **格式(主理人選的)**:摺疊卡 + 頂部總表。 **密度(主理人選的)**:只標「老師沒解釋、或只出現在英文簡報上」的詞。老師自己講白的不重複。 ### 一、每份筆記開頭加一張「📖 本週術語總表」 放在「🔍 回看影片對照表」後面。三欄:詞|一句話|去哪一節看卡。 表格上面要寫一句「老師已經講白的(列出來)在各節的 callout 裡」,避免主理人以為漏了。 ### 二、術語出現的那一節,插一張摺疊卡 Notion enhanced markdown 寫法(**子內容不用自己縮排,Notion 會自動縮進摺疊裡**): ```
📖 這個詞是什麼?(括號裡寫為什麼要補這張卡) **是什麼**:… **影響了什麼**:… **在這裡的角色**:… **關鍵**:…
``` 四欄固定順序,缺一不可。可以在 details 裡面再包 `` 跟 ``,實測可行。 ★★ 標在 summary 開頭表示「很可能考、或跟作業直接有關」。 ### 三、實作注意事項(踩過的坑) - **update_content 的 old_str 要一字不差**,包含 callout 子行開頭的 tab。 打錯一個字(我把「卻」打成「却」)整批就失敗,而且是全部不寫入。 - **不要用表格中間的 `
` 當錨點**,會把表格切壞。要用表格最後一列的 `
`, 或用 callout 的最後一行 + `
`。錨點前先確認那真的是最後一列。 - Notion 會把 details 的子內容自動加一層 tab,callout 子內容再加一層。 所以**之後要改卡的內容,old_str 要記得補 tab**。 ### 四、已完成狀況 | 筆記 | 總表 | 卡數 | 最重要的一張 | |---|---|---|---| | NLP W1 | ✅ | 10 | **Encoder 與 Decoder**(BERT vs GPT 的全部差別,原本完全沒解釋) | | NLP W2 | ✅ | 6 | **attention**(整份用了七次,一次都沒解釋) | | NLP W3 | ✅ | 17 | **類神經網路的九個字**(老師明講「你可能要自己 catch」) | | AI W1 | ✅ | 8 | **AI/ML/DL/GenAI/Agentic AI 五層各自是什麼** | **還沒做**:AI W2(9/17)、AI W3(9/24)的筆記本身還沒建,逐字稿已備好。