文字正規化技巧

Python 的 Natural Language Processing(NLP)

Fouad Trad

Machine Learning Engineer

文字正規化

  • 正規化將詞彙轉為標準格式
  • 用於文本分類、搜尋、情緒分析
  • 將探討的技巧:
    • 轉小寫
    • 詞幹提取(Stemming)
    • 詞形還原(Lemmatization)

圖片顯示三個人用不同說法表達喜歡看導演功力佳的電影:「I enjoy watching movies with great direction!」、「I enjoyed watching movies that are well-directed.」、「Movies with excellent direction are something I enjoy.」

Python 的 Natural Language Processing(NLP)

轉小寫

  • 若不做正規化,這些詞會被視為不同的標記
  • 會誤導模型並擴大詞彙表大小
text  = """Data scientists and data 
engineers need DATA"""
lower_text = text.lower()

print(lower_text)
data scientists and data 
engineers need data

圖片顯示一個人對 'data'、'Data' 與 'DATA' 感到困惑。

Python 的 Natural Language Processing(NLP)

轉小寫的適用性

適用情境

依賴關鍵字分析的任務

圖片顯示一個人在文本中搜尋關鍵字。

Python 的 Natural Language Processing(NLP)

轉小寫的適用性

適用情境

依賴關鍵字分析的任務

圖片顯示一個人在文本中搜尋關鍵字。

不適用情境

需區分大小寫才有意義的任務

圖片顯示一群人代表「us」與美國國旗代表「US」。

Python 的 Natural Language Processing(NLP)

詞幹提取(Stemming)

  • 透過去掉字尾,將詞彙縮成詞幹
    • running → run
    • reading → read
  • 有助把相似變形歸為一類
  • 可能產生非字典詞
    • organization → organizat

Stem_logo.png

Python 的 Natural Language Processing(NLP)

程式中的詞幹提取

from nltk.stem import PorterStemmer

stemmer = PorterStemmer()
tokens = ['running', 'bats', 'organizations', 'reading']
stemmed = [stemmer.stem(word) for word in tokens]
print(stemmed)
['run', 'bat', 'organizat', 'read']
Python 的 Natural Language Processing(NLP)

詞形還原(Lemmatization)

  • 將詞彙化為基礎詞形
  • 確保結果為有效單字
    • organizations → organization
  • 當文法正確性很重要時適用
  • 比詞幹提取慢,但更精準

lemmalogo.png

Python 的 Natural Language Processing(NLP)

程式中的詞形還原

from nltk.stem import WordNetLemmatizer

nltk.download('wordnet')
lemmatizer = WordNetLemmatizer()
tokens = ['running', 'bats', 'organizations', 'reading']
lemmatized = [lemmatizer.lemmatize(word) for word in tokens]
print(lemmatized)
['running', 'bat', 'organization', 'reading']
Python 的 Natural Language Processing(NLP)

詞幹提取

  • 較快
  • 可能產生非字典詞
  • 需要速度時使用

圖片顯示一個人用電鋸砍樹。

詞形還原

  • 較慢
  • 較精準
  • 需要文法精確時使用

圖片顯示一個人細修樹枝以保留結構。

Python 的 Natural Language Processing(NLP)

一起來練習吧!

Python 的 Natural Language Processing(NLP)

Preparing Video For Download...