トークナイズとレンマ化

Pythonで学ぶNLPの特徴量エンジニアリング

Rounak Banik

Data Scientist

テキストの出所

  • ニュース記事
  • ツイート
  • コメント
Pythonで学ぶNLPの特徴量エンジニアリング

テキストを機械に優しく

  • Dogs, dog
  • reduction, REDUCING, Reduce
  • don't, do not
  • won't, will not
Pythonで学ぶNLPの特徴量エンジニアリング

前処理テクニック

  • 小文字化
  • 前後の空白を除去
  • 句読点を除去
  • ストップワードを除去
  • 短縮形を展開
  • 特殊文字(数字、絵文字など)を除去
Pythonで学ぶNLPの特徴量エンジニアリング

トークナイズ

"I have a dog. His name is Hachi."

トークン:

["I", "have", "a", "dog", ".", "His", "name", "is", "Hachi", "."]
"Don't do this."

トークン:

["Do", "n't", "do", "this", "."]
Pythonで学ぶNLPの特徴量エンジニアリング

spaCy によるトークナイズ

import spacy

# Load the en_core_web_sm model nlp = spacy.load('en_core_web_sm')
# Initiliaze string string = "Hello! I don't know what I'm doing here."
# Create a Doc object doc = nlp(string)
# Generate list of tokens tokens = [token.text for token in doc] print(tokens)
['Hello','!','I','do',"n't",'know','what','I',"'m",'doing','here','.']
Pythonで学ぶNLPの特徴量エンジニアリング

レンマ化

  • 単語を原形に変換
    • reducing, reduces, reduced, reductionreduce
    • am, are, isbe
    • n'tnot
    • 'vehave
Pythonで学ぶNLPの特徴量エンジニアリング

spaCy によるレンマ化

import spacy

# Load the en_core_web_sm model
nlp = spacy.load('en_core_web_sm')
# Initiliaze string
string = "Hello! I don't know what I'm doing here."
# Create a Doc object
doc = nlp(string)

# Generate list of lemmas lemmas = [token.lemma_ for token in doc] print(lemmas)
['hello','!','-PRON-','do','not','know','what','-PRON','be','do','here', '.']
Pythonで学ぶNLPの特徴量エンジニアリング

練習しましょう!

Pythonで学ぶNLPの特徴量エンジニアリング

Preparing Video For Download...