前回の失敗の反省から、今度は日本語の学習モデルdaigo/bert-base-japanese-sentimentを使ってネガ・ポジ判定をやってみました。材料は5チャンネルから「【邦画】最近、日本映画は面白いよな?Part2」をスクレイピングしてきました。
transformersのpipelineを使って、トークナイザーと学習済みモデルをつないで一つの分類器を作ることができます。つまり前処理を意識しなくても、モデルの中で自動的にやってくれます。いやぁ便利な世の中になったもんです。
書いたコードは、たったのこれだけ。材料のテキストを読み込む→モデルの読み込み→モデルを回す
結果は
ネガティブ 98
ポジティブ 402
となりました。ネガ・ポジの判定のほかにそれぞれのスコア(どれだけ自信をもってネガ・ポジを判定したか)もでます。
スコアをヒストグラムにしてみました。
ポジティブは80%以上の自信をもって判定したものが多いのに対して、ネガティブは自信のないものが多いようです。
結果をcsvに落として目で確認してみると、結構間違っています。
例えば、
「 コナンの映画版は面白いと思ってる?脚本担当してる人達はみんな、実写映画やドラマの脚本も書いてる人ばかりだけど、その人達の他の作品もコナン以外はクソとか? 」
これをポジティブと判定しています。
信頼性という意味では低いのかもしれない。あるいは5ちゃんのような書き方の文ではうまく機能しないのかもしれません。
5ちゃんでネガポジやるならば、前処理で名詞、動詞、形容詞だけ抽出して、辞書ベースのosetiに判定させたほうが精度的には高いかな、という印象を受けました。