テキスト分析の大通り#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