文章をTF-IDFのデータベースに変換
このプログラムではlivedoorニュースコーパスを利用する。
スポーツ、IT、映画、ライフの4つに分けたデータベースを生成する。
実行結果
genre.pickleというファイルにTF-IDFに文章を変換したデータを格納し保存する。
tfidfモジュール内で生成した単語辞書、テキストをIDで表現したデータ、全文章での単語の出現頻度のデータも保存。
ファイル読み込み
read_files()関数に事前にlivedoorニュースコーパスからtextディレクトリに作成しておいたそれぞれのファイルのパスとラベルにする値を渡す。
glob.glob()でファイルの中身のテキストファイル名を全て取得。
os.path.basename()では引数に渡したパスからファイル名を取得してくれる。LICENSE.txtの場合はcontinue。
tfidf.add_file()は自作したモジュールから関数を使用している。
hanamichi-sukusuku.hatenablog.com
上記のリンクでモジュールを作成している。
tfidf.add_file()
引数で受け取ったパスのファイルを読み取り用で開き、read()で読み込む。
add_text()ではテキストをIDリストに変換してくれる。
tfidf.add_file()関数を実行すると単語辞書、テキストをIDで表記したデータを生成してくれる。
モジュールの詳細は上記リンク。
y.append()でラベルデータ作成。
TF-IDFベクトルデータをxに格納
tfidf.calc_files()ではTF-IDFの手法で文章中に出現した単語の出現頻度を重要も考慮した形でのデータに変換し呼び出し元に返す。同時に関数で全テキストデータでの単語の出現頻度のデータも生成している。
このxの中身を確認すると
TF-IDFでの単語の重要度を考慮した形でのデータになっている。
データの保存
pickle.dump()でラベルデータ、TF-IDFベクトルに変換したテキストデータをtextディレクトリにgenre.pickleという名前のファイルを作成し保存。
tfidf.save_dic()では引数に指定したパスに単語辞書、テキストをIDで表現したデータ、全文章での単語の出現頻度のデータ(一つのファイルで複数回同じ単語が出現しても足し合わせない。一度でも複数でもその単語をキーとする値は1)を保存する。