感情分析エンジンをアップデートしました。GoogleChromeの拡張機能も同時に更新しております。

感情分析エンジン自体はほぼ毎日手を入れて調整しているのですが、修正⇒即公開という形をとると気づかないところでうっかりひどいバグを仕込んでしまうといったことになりかねないので、自分のところの環境でしばらく運用して大丈夫そうなら公開という流れにしています。なので今後も月1~2回くらいのペースで更新をする感じになります。

さて、更新のお知らせだけだと寂しいので、感情分析の中身について軽くお話でも。

ちなみに、開発者は○○統計とか××アルゴリズムとか全然知らないので、経験のみに基づく純度100%の自己流で感情分析エンジンを開発しています。なので、技術的に何かの参考になるという話ではありませぬのでその点はご了承ください。ただの開発裏話的なものです。

感情分析結果の○○動画とかの基準

コレのことです。

感情分析結果

これをどうやって算出しているのかというところですが、ベースは「爆笑の感情が全コメントの○%を超えていたら『腹筋返せ』」といった単純なものですが、そこにいくつかの隠し味を付け加えています。

総コメント数によって判定基準を調整

全1000件のコメントの内500件が批判コメントとなると、それはもう世界大戦並みの大炎上状態なわけですが、これが全10件のコメントの内5件が批判コメントという状況だと「たまたま最初に見た数人がことごとくその動画にイラっときた」といった不運が重なれば発生する可能性は十分あります。

このように同じ50%でも数字からくる印象と実際の状況との間に大きな差があるので、単純に割合で出すのはダメだな、となりました。

そこで、コメント800以上なら批判10%で炎上扱い、500以上なら15%、100以上なら20%、それ未満は25%といった感じで総コメント数によって判定のボーダーラインを変えるような形にしてみました。

基本的にはこの2段階の判定によって、割と実際の状況に近い判定結果を得られるようになったような気がします。

個々のコメントの判定結果に隠しパラメータを付加

すごく泣けました。8888888888

このコメントは「泣けた」という感動要素と「888888888」という称賛要素を併せ持っています。作り直す前の感情分析エンジンではこの内の1つしか判定材料としていなかったのですが、今回の感情分析エンジンは「泣けた」の方をメインの感情に、「888888888」の方を隠しパラメータとして感情の割合を算出する時に多少影響を与えるようにしています。

なお、今回は「泣けた」の方がメインの感情に選ばれましたが、前の方にあるからというわけではなく、それぞれの出現した位置や感情の優先順位なども加味されて決定しています。

ただ、あくまでも隠しパラメータなので判定結果に大きな影響を与えるほどではないです。ぶっちゃけなくても変わらないというか・・・

同一人物によって大量に投稿されたコメントは除外

これも新エンジンから実装された機能になります。

1000件のコメントの内200件が同一人物による投稿だった場合、その動画においてのその人の影響力は20%にも達します。仮にこの人がアンチな人で暴言ばかり投稿していた場合、その他の人がいくら称賛しようともひどい判定結果になってしまいます。

「そんなに大量のコメントを一気に投稿するヤツなんているのかよ」思うかもしれませんが、事前調査(同じユーザーIDによる100件以上のコメント)の結果、歌詞職人でない普通のコメントをしている人でも流れ星程度の確率では見かけたような気がします。

補足となりますが、ユーザーIDはもちろんニコニコ動画側で暗号化されているものなので、我々のような外部の人間からは同じ人が大量にコメントを投稿しているのは分かっても、その人が「誰」なのかは分からないようになっています。その点はご心配なく。

実際に画面を流れるコメントの多くが暴言なのだから除外せずに含めるべきとも考えられますが、1人NGにしただけでその動画の評判がガラッと変わる状況は、コメントからその動画の評判を判定するという趣旨から考えてちょっと違うかな、と思いまして判定用の数字を算出する際にはそのユーザーID除外することにしました。

ただ、その副作用で歌詞職人がこのフィルターに引っかかってしまっているのを現状多く見かけるので、これについてはどうにかしたいな~などとボンヤリと考えてたりします。


今回の裏話はこんなところで。

アップデートのお知らせとともにこんな感じで役に立たないネタでも提供していこうと思いますのでよろしくお願いします。