詞幹提取 是什麼?

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(判斷題): 遇到超長中文句子和很多新詞時,還能沿用同一種切法嗎? → 看情況,切分方式要跟語言和任務一起調,不然效果可能會掉。

相關術語

常見問題

這類方法一定要先分詞嗎?

不一定,但大多數流程都需要某種切分或標記,否則模型很難穩定處理文字。

它和單純看詞頻有什麼不同?

它不只看出現次數,也會看字詞組合、子詞或上下文,能更接近語意。

什麼時候最容易出錯?

遇到新詞、長詞、專有名詞或多語混雜文本時,切分和表示方式最容易影響結果。