ステミングとレンマ化

Pythonで学ぶSentiment Analysis

Violeta Misheva

Data Scientist

ステミングとは?

ステミングは、語幹が実在語でなくても、単語を語幹に変換する処理です。

staying, stays, stayed ----> stay
house, houses, housing ----> hous

Pythonで学ぶSentiment Analysis

レンマ化とは?

レンマ化はステミングに似ていますが、言語として有効な語(基本形)にまで縮約します。

stay, stays, staying, stayed ----> stay
house, houses, housing ----> house
Pythonで学ぶSentiment Analysis

ステミング vs. レンマ化

ステミング

  • 単語の語幹を生成
  • 計算が高速・効率的

レンマ化

  • 実在する語を生成
  • ステミングより遅く、品詞に依存する場合あり
Pythonで学ぶSentiment Analysis

文字列のステミング

from nltk.stem import PorterStemmer

porter = PorterStemmer()
porter.stem('wonderful')
'wonder'
Pythonで学ぶSentiment Analysis

多言語のステマー

Snowball Stemmer: Danish, Dutch, English, Finnish, French, German, Hungarian,Italian, Norwegian, Portuguese, Romanian, Russian, Spanish, Swedish

from nltk.stem.snowball import SnowballStemmer

DutchStemmer = SnowballStemmer("dutch")
DutchStemmer.stem("beginnen")
'begin'
Pythonで学ぶSentiment Analysis

文をステミングするには?

porter.stem('Today is a wonderful day!')
'today is a wonderful day!'
tokens = word_tokenize('Today is a wonderful day!')
stemmed_tokens = [porter.stem(token) for token in tokens]
stemmed_tokens
['today', 'is', 'a', 'wonder', 'day', '!']
Pythonで学ぶSentiment Analysis

文字列のレンマ化

from nltk.stem import WordNetLemmatizer

WNlemmatizer = WordNetLemmatizer()
WNlemmatizer.lemmatize('wonderful', pos='a')
'wonderful'
Pythonで学ぶSentiment Analysis

練習しましょう!

Pythonで学ぶSentiment Analysis

Preparing Video For Download...