63’s blog

都内のSEのブログです(*‘ω‘ *)技術は好きですが仕事は嫌いです。

Tfidfvectorizerの簡単な使い方(tf idf)

入門 自然言語処理


tfidfvectorizerとは機械学習で有名なsk-learnライブラリに入っているクラスです(python)

これの簡単な使い方をまとめておきます。

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vect = TfidfVectorizer()
X_tfidf = tfidf_vect.fit_transform(corpus)

基本はこれです。corpusというリストに文章を格納する形になります。
例えば、

corpus=["This is a dog.","Hello World!","This is a cat."]

めっちゃ適当でごめんなさい笑
このように各文章が格納されている形になっています。


次にそれぞれのtfidf値を見つけていきます。

X_tfidf.toarray()

これを使うことで各単語のtfidf値がわかります。
また、各単語を確認したいときには

tfidf_vect.get_feature_names()

これを使います。これで基本的にtfidf値が算出できます。


次にTfidfvectorizerの代表的なパラメータの確認をしていきます。


○max_features
tfidf値を表示する単語数を指定します。tfidf値が高い順にとっていきます。

○min_df(①0~1,②整数)
各単語において①使用されている文章の割合、または②使用されている文章数がパラメータ以下の単語を排除します。あまりにも使用されていない単語は排除するという考えです。

○max_df
min_dfの逆です。あまりにも出現している単語は排除します。

○sublinear_tf(=True,False)
idf値に1を足すかどうかです。


このtfidfvectorizerはすぐに値を出すのにはかなり便利ではありますが、
あんまり良くないところもあります(´;ω;`)

①tfidf値が1を超えるときでもtfidf値を1として算出する
②numpyを使用しているので、メモリを食う→早く算出したいのなら便利だけど、データ数が多いと死ぬ(´;ω;`)


多少の弱点はあれど、簡単なニュースぐらいだったらかなり楽に解析できます(^O^)
ちなみに弱点②に関しては計算速度は下がりますが、メモリが食うことが問題であるなら自分でプログラムを組んだ方が解決できました。