読者です 読者をやめる 読者になる 読者になる

LSTMでどのキャラクターのセリフか判別する

Qiita に投稿しました。
qiita.com

Keras の LSTM で「数学ガール」に出てくるセリフを誰のセリフか判別しました。
数学ガール/フェルマーの最終定理 (数学ガールシリーズ 2) | 結城 浩 |本 | 通販 | Amazon
モデルの中身は以下の記事(映画レビューのポジティブ/ネガティブ分類)です。
Sequence Classification with LSTM Recurrent Neural Networks in Python with Keras - Machine Learning Mastery

所感

  • 今回のモデルでセリフの話者を正しく判定できなかったのは以下です(セリフは「数学ガール」からの引用です)。
    A:僕、B:ミルカさん、C:テトラちゃん、D:ユーリ
    f:id:cookie-box:20170504220718p:plain:w700
    • 「あたし」が出てきたらテトラちゃんのセリフだとわかってほしいような。
  • モデルの構造もハイパーパラメータも自由度がありすぎてどうするといいのかよくわかりませんでした。
    • ただ、「数学ガール」に出てくるセリフの話者を判別するのに必要な特徴量ベクトルの次元(LSTMの出力の次元)は映画レビューと違って100もない気がします(?)。例えば人間的な感覚では「女っぽさ」「先生っぽさ」「後輩っぽさ」の3次元くらいで判別できそう。「先生っぽさ」だけ強ければ「僕」、「女っぽさ」と「後輩っぽさ」が強ければ「テトラちゃん」とか…。ただ、LSTMの出力の次元をそこまで極端に減らすとかえって精度が悪くなりました。
    • 元モデルは英語の単語列に対するもので、今回は日本語の形態素列に対するものですが、畳み込みのフィルターサイズやマックスプーリングのプールサイズは変更するとかえって悪くなるようでした。
  • セリフの話者が判別できると何がうれしいの? → 特にないです。
  • 全キャラクターのセリフが100個以上収集できるまで、数学ガールを読み返しながらタイプしていたのですが、テトラちゃんが一番無口でボトルネックでした…。いや、テトラちゃんが無口というより、他の3人がしゃべるしゃべる…。