見出し画像

テキスト分析の大通り#13: ナイーブベイズテキスト分類、Scikit-learn、TF-IDF利用編

今回もScikit-learnでのナイーブベイズテキスト分類を行っていきます。前回はBOWを入力とした手順でしたが、今回はTF-IDFを入力とした手順を見ていきます。まずは処理スクリプト。

ほとんどの手順はBOWで実施した際と変わらないため、大きな流れは前回をご覧ください。違っている部分だけいくつか補足します。

まずライブラリとしてはCountVectorizerの代わりにTfidfVectorizerを用いています。
TfidfVectorizerの宣言と処理ですが、1件以上(min_df)、1文字以上(token_pattern)を含めるようにパラメーターを与えているところは変わらずです。そしてこれにプラスして、SQLでTF-IDFを作成する際に触れた通り、正規化とスムージングに関するオプション記載もここにて実施します。オプション4パターンの書き方は以下のようになります。

vectorizer = TfidfVectorizer(min_df=1, token_pattern='(?u)\b\w+\b', norm=None, smooth_idf=False)
vectorizer = TfidfVectorizer(min_df=1, token_pattern='(?u)\b\w+\b', norm=None)
vectorizer = TfidfVectorizer(min_df=1, token_pattern='(?u)\b\w+\b', smooth_idf=False)
vectorizer = TfidfVectorizer(min_df=1, token_pattern='(?u)\b\w+\b')

あとは学習、スコアリング、後処理をBOW同様に行っているので割愛します。作成されたスコアはノートブック内に記載されているので、以下にベクトル化した入力データのみつけておきます。スクリプト内でtrain_tfidf.csvとしているのが以下のファイルです。やたらと横に長いです。

以上、TF-IDFを入力とした場合でも正しく分類されたのを確認しました。

(TeradataやPython、およびPythonライブラリのインストールや環境構築、辞書登録、参考にしたページ等は以下にまとめています)

///

#analytics #tf -idf #ナイーブベイズ #text #nlp #データ #分析 #teradata #sql #python

いいなと思ったら応援しよう!