作成した学習モデルでスパムの判定
実行結果
hanamichi-sukusuku.hatenablog.com
このプログラムでは上記で作成した学習モデルを用いて自身で作成したテキストのスパム判定を行っている。
三連引用符
この"""で囲まれているのは三連引用符と言って、この"""や'''で囲まれ定義した文字列は、文字列の中で行われた改行は、文字としての改行として扱われる。
test_text1の場合、
"会社から支給されているiPhoneの調子が悪いのです。\n修理に出すので、しばらくはアプリのテストができません。"
このように記述した場合と同義になる。
ファイルやモデルの準備
変数dataには[ラベルデータ, 単語頻出のデータ, 単語辞書]という形でデータが格納されている。なのでword_dic = data[2]では単語辞書を変数に格納している。
各テキストを関数に渡し、スパムか非スパムかの判定を行う
check_spam()関数、テキストがスパムかどうか判定する
単語辞書と同じ要素数の配列を用意。これにより受け取ったテキストを辞書からIDに変換し、そのIDの出現回数をカウントすることができる。
s.split("\n")で各単語の情報のまとまりで区切られた配列を作成。
line.split("\t")[3]で情報のまとまりを配列に変換し、原型を取得している。
上記の画像はs.split("\n") の中身を出力したものである。
if org in word_dic:ではその単語の原型が辞書に含まれている時、0で初期化した配列から辞書のIDと同じものの値を1足す。変数countは総回数を数え、最後に作成した配列zwからcountを割ることで単語の出現頻度のデータを作成している。
mode.predict([zw])[0]で結果を予測し、配列として取得されるのでインデックス番号を指定することで値のみを取得する。
label_names["OK", "SPAM"]と定義しているので予測結果が0ならスパムではない、1ならスパムということになる。