Jubatusでラーメンレビューの点数推測 - キー追加
レビュー本文だけでなく、別の要素を学習キーとして追加すれば、推測の精度が上がるのでは?と思い、以下のパターンで再検証してみた。
- ユーザID + レビュー本文
- スープ種別 * レビュー本文
ユーザIDを追加することで、同一人物のスコア付与の癖から特徴を抽出できないか、またスープ種別を追加することで、スープによる採点の特徴を抽出できないか試すことにした。
(例えば、豚骨醤油スープのラーメンにおいては、「こってり」や「濃厚」はポジティブに思われやすいし、逆に淡麗系の塩などでは、「あっさり」がポジティブに思われる、などの特徴があるのではと推測した)
Jubatus起動時に設定するファイルは前回のまま。
(本当はユーザIDとスープ種別のtypeを変えるほうがよりいいんだろうけど、面倒なので一旦これで)
同じデータを元に、
- ユーザID + レビュー本文
- スープ種別 * レビュー本文
を学習させる jubash スクリプトファイルをawkで生成。
同様に、推測対象の classify を使ったスクリプトファイルに、ユーザIDあるいはスープ種別のキーを追加して実行してみた。
レビュー対象 | 実際の点数 | レビュー本文のみ | レビュー本文+ユーザID | レビュー本文+スープ分類 |
ジャージャー麺 | 70 | 70, 60, 55 | 65, 70, 80 | 70, 80, 65 |
ラーメン | 70 | 70, 60, 0 | 70, 55, 45 | 70, 55, 80 |
皆楽みそラーメン | 80 | 70, 65, 60 | 70, 65, 75 | 70, 65, 80 |
五目そば | 65 | 75. 70, 65 | 70, 65, 60 | 65, 70, 60 |
まぜそば | 75 | 80, 60, 70 | 75, 80, 60 | 75, 80, 85 |
結果を見てみると、スープ種別の追加によって、以前より精度が改善されたような気がしないでもない。
まあ、自分の採点5件だけなので、これだけで判断するのもどうかとは思うが、こういう形でチューニングしていくのかなー。
あとは、レビュー本文からのノイズ(ラーメンの味の評価に関係しないテキスト)をどうやって、自動的に除去すればいいのかなー。ラーメンデータベースユーザの中には、レビュー本文を日記帳と勘違いしているユーザもいるしなあw【毒】
さて、次のテーマは何にしようかな。
ユーザのクラスタリングってどう?みたいなコメントがあったので、ユーザの採点傾向から、似たようなユーザのクラスタリングというのは、如何にも機械学習らしいし、面白そうでもある。