機械学習 × グラフデータベース × チャットで「組織内のカベ」を取り払え!【Developers Boost】
【A-10】カベを壊せ!「機械学習」×「グラフデータベース」×「チャット」で繋ぐヒューマンリレーションシップ!!
「他部署の中で、誰がどの技術に詳しいのかわからない」「これまで話したことのない○○さんは、いったい何に興味を持っているのだろう」――企業では、こうした「コミュニケーションの断絶」が頻繁に起きる。この課題を解決するため、株式会社ドリーム・アーツは「人と人との新たな関係性」を生み出すためのチャットBOTを開発。同社の一ノ瀬翔吾氏が、翔泳社主催の若手エンジニア向けカンファレンス「Developers Boost(デブスト)~U30エンジニアの登竜門~」で、チャットBOT実現までの道のりと、そのカギとなった3つの要素を語った。
一ノ瀬翔吾氏
「特定のキーワードについて知っている人」を投稿履歴から抽出
ドリーム・アーツ社が開発したチャット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における文書をチャットの投稿履歴データに置き換えることで、あるキーワードを投稿したことのある人、つまりキーワードについて知っている人を抽出できると考えたのです。この仕組みを用いて、学習済みモデルを作成しました」
この記事は参考になりましたか?
- 【Developers Boost】セッションレポート 連載記事一覧
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
