
3.2
前処理:共通する単語の出現回数を類似度として計測する
55
ステマーを利用した場合、ステミングを行った後のトークン化と正規化を、自分で行う必要がありま
す。ここではその代わりに、次のように
build_analyzer
を上書きすることで対応します。
>>>
import nltk.stem
>>>
english_stemmer = nltk.stem.SnowballStemmer('english')
>>>
class StemmedCountVectorizer(CountVectorizer):
...
def build_analyzer(self):
...
analyzer = super(StemmedCountVectorizer, self).build_analyzer()
...
return lambda doc: (english_stemmer.stem(w) for w in analyzer(doc))
>>>
vectorizer = StemmedCountVectorizer(min_df=1, stop_words='english')
ここでは、次の3つのことを行っています。
●
前処理の段階で、文書を小文字に変換します(これは親クラスで行われます)。
●
トークン化の段階で、全ての単語を抜き出します(これも親クラスで行われます)。
●
それぞれの単語をステム化された単語に変換します。
結果を見ると、imagesとimagingが同じ単語としてカウント