「特定のキーワードについて知っている人」を投稿履歴から抽出
ドリーム・アーツ社が開発したチャットBOTは、チャットサービス「知話輪(Chiwawa)」上で動作する。
その仕様はこうだ。例えば、「Vue.jsについて知りたい」と思った場合、チャットBOTに対して「Vue.jsに詳しい人を教えて」とメッセージを送る。すると、チャットBOTが「Vue.jsに詳しそうな人」かつ「メッセージ投稿者が過去にあまり関わったことのない人」をレコメンデーションしてくれるのだ。
「チャットBOTで使われている技術は6種類です。『知話輪』のアプリケーション、グラフデータベースのAzure Cosmos DB、Pythonスクリプト、機械学習で作成した学習済みモデル、知話輪のサーバー、Flaskサーバーとなっています」
チャットBOTの動作は2つのステップから構成されている。1つ目のステップでは、データを投入して学習済みモデルを作る。2つ目のステップでは、そのモデルをベースにユーザーのレコメンデーションを行っている。
まずは1つ目の、データを投入して学習済みモデルを作るステップについて解説したい。本アーキテクチャでは、グラフデータベースのAzure Cosmos DBにチャットの投稿履歴データを格納する。グラフデータベースとは、リレーションシップの格納とナビゲートを目的として構築されたデータベースである。Azure Cosmos DB以外にも、Neo4jやOrientDB、Amazon Neptuneなどがよく用いられる。
このデータベースに対し、メッセージ投稿者が持つ『関係性』の情報を投入していく。格納されるのは、ユーザーや所属するグループ、投稿されたメッセージ、タグ、リアクションなどである。
次に、機械学習によってデータの学習を行う。ベースの技術として用いられているのは、Doc2VecやWord2Vecといった機械学習の手法だ。
Doc2Vecは、文書をベクトルとして扱い他文書のベクトルとの比較を行うことで、似た文書を分類・取得できる仕組みだ。その内部で用いられているのがWord2Vecである。Word2Vecでは単語をベクトルとして扱う。ニューラルネットワークを用いて機械学習を行い、ある単語の周辺に別の単語が出る確率を学習させている。
「このプロジェクトでは、Doc2Vecを応用してUser2Vecという手法を生み出しました。Doc2Vecにおける文書をチャットの投稿履歴データに置き換えることで、あるキーワードを投稿したことのある人、つまりキーワードについて知っている人を抽出できると考えたのです。この仕組みを用いて、学習済みモデルを作成しました」