掲示板から「有益な投稿」を検出するニューラルネットワーク

元論文:Predicting Helpful Post in Open-Ended Discussion Forums: A Neural Architecture

多くのSNSにおいて、有益な投稿をレコメンドする機能は、ユーザーを維持するうえで重要な機能です。この論文では、自由討論型の掲示板でユーザーの役に立ちそうな投稿を検出する手法について提案しています。自由討論型掲示板の特性をしっかりと観察し、それに適したモデルを組み立てるというものです。また、提案されたニューラルネットワークモデルも非常にシンプルで、理解しやすいものとなっているので、ビジネスに機械学習を取り入れる際のモデルケースとして、理解したい論文です。

自由討論型の掲示板の特徴

自由討論型掲示板とは

StackOverflowやYahoo知恵袋などの、スレッドを開始する投稿者が質問をする形式の掲示板とは異なり、redditや5ちゃんねるのように自由な話題でユーザー同士が議論するような形式の掲示板を自由討論型掲示板と呼びます。自由討論型の掲示板にも以下の例のように悩みや相談が投稿されることがあり、それに対して解決方法などが議論されることが多くあります。

例えば、以下ではスレッドを作った投稿者が「背中が痛いのだが、腎臓の病気ではないか」という悩みを投稿しています。それに対して、他のユーザーが自由にコメントを投稿します。

こうしたコメントの中には有益な投稿が含まれており、これを検出することで後からスレッドを見たユーザーが容易に悩みや質問の回答をレコメンドするなどの機能に役立てることができます。

(筆者翻訳)
original: 昨日作業中に屈んでから立ち上がったときにピシッときたんだけど、腎臓の病気だろうか。
1: 同じようなことがあって医者にかかったけど、筋肉が原因だから治療すると良いと言っていたよ。
2: 一般的に腎臓の痛みは恒常的なものなので、動いて痛みが変わるところから察するに問題はないと思います😀
3: もし動いた後にしか起きていないなら、筋肉が攣っている可能性が高そうだけど。

役に立つ投稿の質の違い

質問型掲示板や自由討論型掲示板などでは「有益な投稿」の質が異なるとされています。例えば、質問型掲示板であるStackOverflowや自由討論型掲示板であるredditには、それぞれユーザーが投稿に対して「役に立った」かどうかを投票形式で評価する機能があります。これら各コメントの投票数を見ることで、ユーザーがどのコメントが有益であると感じたかを計測することができます。

以下の図はStackOverflowとReddit双方の掲示板のスレッドにおいて、ユーザーが有益と判断した投稿上位5つの獲得票割合を示しています。グラフより、StackOverFlowに比べてRedditは表がばらついていることがわかります。質問型掲示板においては質問に対する回答が一つに決まっていることが多いため、一つのコメントが多く得票します。

一方で自由討論型掲示板では様々な意見が飛び交う話題が多く、ユーザーによって有益と感じるコメントが多様であるために得票がばらつく傾向にあります。このことから、自由討論型の掲示板では質問型掲示板とは異なるアプローチで有益な投稿を検出した方が良いと考えれます。

提案手法

「関係性」と「新奇性」が高い投稿が役に立つ

質問型掲示板では役に立つ投稿が一つに決まることが多いため、質問とコメントを見るだけで「そのコメントが有益かどうか」を判断することができます。

一方で自由討論型の掲示板では、質問が曖昧であったり、そもそも質問や悩みに関する話題ではないなど、質問型掲示板とは毛色が大きく異なります。例えばニュースや日常的なぼやきなどに関するスレッドでは、「スレッドの流れにおいて、面白いコメント」が有益と判断されることもあります。

そのため、自由討論型掲示板においてはスレッドの話題の流れなども有益な投稿の検出に必要となります。この論文では、あるコメントがスレッドにおいて有益であるかを判断するためには「最初の投稿との関係性」と「コメント内容の新奇性」を考慮することが重要であると指摘しています。

ニューラルネットワークの組み立て

上記の観察内容より、「最初の投稿との関係性」と「コメント内容の新奇性」を考慮したニューラルネットワークを組み立てることで、自由討論型掲示板における有益なコメントの検出ができると考えれます。

ニューラルネットワークを組み立てる上で、まずは入力と出力を考えることが重要です。

今回の問題では

(1)スレッドにおける最初の投稿と(2)スレッドにつけられたコメントの二つを入力として、そのコメントがスレッドにおいて有益であるかを出力するニューラルネットワークを構築します。さらに本論文で提案した「コメントの新奇性」を考慮するために(3)コメントの直前に投稿されたコメントも入力として加えます。

これら三つの入力から「関係性」と「新奇性」を考慮した識別モデルを作成します。論文にて提案されているモデルのアウトラインは、以下の図の通りとなっています。青色の部分が「関係性」について計算する部分、オレンジ色の部分が「新奇性」について計算する部分となっており、非常に直感的でシンプルな設計となっています。

図から分かる通り、「関係性」を(1)スレッドの最初の投稿と、(2)スレッドに投稿されたコメントから計算しています。また、「新規性」は(2)コメントと、(3)そのコメントの直前k個の投稿を用いて計算しています。最初の投稿や各コメントはGRUを用いたテキストエンコーダによってベクトルに変換されます。

さらに(3)直前のkコメントは、変換されたベクトルをさらにシークエンスエンコーダに入力することで、コメントの流れを考慮したベクトルに変換しています。

図にある「X」は要素積という計算を表しており、論文内では類似度を計算する処理と主張されています。すなわち、関係性は「質問とコメント」、新奇性は「コメントと直前のコメント」がそれぞれどの程度似ているかをベクトルとして表現することで、有益性の判断基準として用います。計算された関係性と新奇性を表すベクトルを変換することで、最終的な「有益度」を計算します。

評価

Redditでの評価

Redditの投稿から作成されたデータセットを用いて提案手法の評価がされています。Reddit_10+、Reddit_3+はそれぞれ、Redditで投稿数が10件以上、3件以上のスレッドを用いたデータセットです。各コメントにユーザーが投票した有益度に閾値を設け、「役に立つ・立たない」の2値分類問題として評価を行なっています。

ベースラインにはBiLSTMや注意機構を用いいたLSTMモデルなど、シンプルなニューラルネットワークを用いています。提案手法(Our Model)のうち、Relevance-basedとNovelty-basedはそれぞれ関係性と新奇性に関する計算を行う部分のみを用いて予測を行うモデルです。どちらのデータセットのF1スコアを見ても、提案手法が既存手法を大きく上回ることが確認できます。さらに、関係性と新奇性の両方を考慮することでスコアが大きく改善することも確認できます。

文脈を多く見るほど新奇性をうまく捉えられる

新奇性を計算する際に、あるコメントの直前のk個のコメントをモデルへ入力しています。ここに入力するコメントの数が、モデルにどのような影響を与えるのかという確認もされています。以下のグラフにて、横軸は入力する直前のコメントの数を表しており、縦軸がモデルの性能を表しています。グラフより、多くのコメントを文脈として考慮することで新奇性をうまく捉えられることが示されています。

このように、単純にスコアでの比較をするだけでなく、「どの要素がどの程度モデルの性能に影響を与えるのか」をつぶさに調べ提示することは、モデルを説明する際の説得力をあげる上でとても重要です。

まとめ

本論文では、自由討論型の掲示板での有益な投稿の検出手法について提案されています。この問題が重要であることや、質問型掲示板と異なる性質を持っているため取り組む意義があることなどが丁寧に主張されています。さらに問題について、その性質をしっかりと観察し、適したモデルを提案することで問題の解決を目指しています。この一連の流れは、ビジネスにおける機械学習を用いた課題解決の良いモデルケースとなります。

さらに提案されたモデルは非常にシンプルでわかりやすく、直感的なものとなっています。また提案手法について数値での評価だけでなく、様々な視点から考察している点も説得力をあげる上で重要です。ビジネスシーンに機械学習を取り入れる際に活用できる論文ではないでしょうか。

この記事をシェアする