詞幹提取 是什麼?
Stemming:詞幹提取 的完整解釋
詞幹提取是自然語言處理中將單詞簡化為其詞幹或詞根形式的過程,通常通過刪除後綴來實現。
容易混淆
詞幹提取 vs 詞形還原 詞幹提取:偏向 把文字整理成模型可用的單位 詞形還原:偏向 詞形還原,偏向字典基本形 最關鍵的區別:詞幹提取看的是「把文字整理成模型可用的單位」,詞形還原看的是「詞形還原,偏向字典基本形」。
詞幹提取 vs 分詞 詞幹提取:偏向 把文字整理成模型可用的單位 分詞:偏向 把文字切開的前置步驟 最關鍵的區別:詞幹提取看的是「把文字整理成模型可用的單位」,分詞看的是「把文字切開的前置步驟」。
記住這句就好
先切文字,再談語意。
實際案例
案例:客服信件先做詞幹或子詞切分 再送進分類模型,比直接硬吃原文更穩
案例:長篇會議紀錄先做摘要 管理者不用看完整文章,也能抓到重點
算法與應用
先把詞、子詞或詞幹整理好,模型才有穩定輸入 文字表示方法不同,後面的分類和搜尋效果會差很多 常見任務是分類、摘要、翻譯和關鍵詞萃取
詞幹提取與詞形還原的差別
這兩個常被放在一起講,也最常被搞混。兩者都是把單字變回基本形式,但做法與結果完全不同。
| 項目 | 詞幹提取(Stemming) | 詞形還原(Lemmatization) |
|---|---|---|
| 做法 | 依規則砍字尾 | 查字典並判斷詞性 |
| 結果 | 可能不是真的單字 | 一定是字典裡的單字 |
| 速度 | 快 | 慢 |
| 需要詞性標註嗎 | 不需要 | 需要 |
實際比較幾個例子:
| 原字 | Stemming | Lemmatization |
|---|---|---|
| studies | studi | study |
| better | better | good |
| running | run | run |
| was | wa | be |
| caring | care 或 car(依演算法而異) | care |
第一列與第二列說明了關鍵差別。詞幹提取只是機械地砍字尾,所以 studies 變成不存在的 studi;詞形還原查字典,所以 better 能還原成 good。
最後一列點出詞幹提取的風險:不同演算法對同一個字可能給出不同結果,Porter 演算法把 caring 處理成 care,某些較激進的演算法會處理成 car,那就跟「汽車」撞在一起了。這種把不該合併的字合併掉的錯誤叫過度提取(over-stemming)。
什麼時候該用哪一個
搜尋與檢索用詞幹提取。 速度快,而且搜尋只需要查詢詞與文件詞被砍成同一個形式就能配對,那個形式是不是真的單字並不重要。Elasticsearch 與 BM25 的預設流程用的都是詞幹提取。
需要語意分析用詞形還原。 情感分析、資訊抽取、需要人看得懂中間結果的場合,都該用詞形還原。
中文兩個都不需要。 中文沒有詞形變化,該做的是斷詞(word segmentation)。這是中英文預處理流程最大的差異之一。
用大型語言模型時通常兩個都不用。 現代的子詞切分(BPE、SentencePiece)本來就會把 running 拆成 run 加 ##ing,模型自己能處理形態變化。詞幹提取與詞形還原現在主要用在傳統的關鍵字檢索管線裡,那條路徑仍然沒有被取代(見 BM25)。
情境判斷
Q1(直覺題): 你要把一堆客服留言分成抱怨、詢問和稱讚,應該先做什麼? → 先把文字切成模型能處理的單位,再做分類。
Q2(判斷題): 遇到超長中文句子和很多新詞時,還能沿用同一種切法嗎? → 看情況,切分方式要跟語言和任務一起調,不然效果可能會掉。
相關術語
常見問題
這類方法一定要先分詞嗎?
不一定,但大多數流程都需要某種切分或標記,否則模型很難穩定處理文字。
它和單純看詞頻有什麼不同?
它不只看出現次數,也會看字詞組合、子詞或上下文,能更接近語意。
什麼時候最容易出錯?
遇到新詞、長詞、專有名詞或多語混雜文本時,切分和表示方式最容易影響結果。