Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

機械学習 × グラフデータベース × チャットで「組織内のカベ」を取り払え!【Developers Boost】

【A-10】カベを壊せ!「機械学習」×「グラフデータベース」×「チャット」で繋ぐヒューマンリレーションシップ!!

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2019/01/16 11:00

 「他部署の中で、誰がどの技術に詳しいのかわからない」「これまで話したことのない○○さんは、いったい何に興味を持っているのだろう」――企業では、こうした「コミュニケーションの断絶」が頻繁に起きる。この課題を解決するため、株式会社ドリーム・アーツは「人と人との新たな関係性」を生み出すためのチャットBOTを開発。同社の一ノ瀬翔吾氏が、翔泳社主催の若手エンジニア向けカンファレンス「Developers Boost(デブスト)~U30エンジニアの登竜門~」で、チャットBOT実現までの道のりと、そのカギとなった3つの要素を語った。

株式会社ドリーム・アーツ プロダクトデザイン本部 hibikiグループ MMT制作委員会(Mastodon Meetup at Tokyo) 一ノ瀬翔吾氏
株式会社ドリーム・アーツ プロダクトデザイン本部 hibikiグループ MMT制作委員会(Mastodon Meetup at Tokyo)
一ノ瀬翔吾氏

「特定のキーワードについて知っている人」を投稿履歴から抽出

 ドリーム・アーツ社が開発したチャットBOTは、チャットサービス「知話輪(Chiwawa)」上で動作する。

 その仕様はこうだ。例えば、「Vue.jsについて知りたい」と思った場合、チャットBOTに対して「Vue.jsに詳しい人を教えて」とメッセージを送る。すると、チャットBOTが「Vue.jsに詳しそうな人」かつ「メッセージ投稿者が過去にあまり関わったことのない人」をレコメンデーションしてくれるのだ。

チャットBOT実現のために使用された技術。
チャットBOT実現のために使用された技術。

 「チャット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における文書をチャットの投稿履歴データに置き換えることで、あるキーワードを投稿したことのある人、つまりキーワードについて知っている人を抽出できると考えたのです。この仕組みを用いて、学習済みモデルを作成しました」

業務のチャット化が、コミュニケーション履歴の活用を容易にした

 2つ目のステップでは、チャットBOTに投稿されたメッセージをもとにユーザーのレコメンデーションを行う。チャットBOTに対してメッセージが送られると、その情報が知話輪のサーバーへ伝わり、Webhookを経由してFlaskサーバーに伝達される。

 Flaskサーバー上ではPythonスクリプトが実行され、学習済みモデルからレコメンデーション対象となるユーザーを取得していく。この際、ユーザー情報だけではなく、入力したキーワードに対するユーザー情報とのベクトル類似度やコサイン類似度なども取得するという。

 取得した情報を用いて、次はグラフデータベースにアクセスする。これは、学習済みのモデルから取得したユーザー情報と、メッセージ投稿者とのリレーションを計算するためだ。

 プログラムからグラフデータベースを操作する際には、Gremlinというグラフ・トラバース言語を使う。Gremlinはさまざまなグラフデータベースで共通して採用されている言語のため、他のデータベースに移行しても同じクエリが使える。

 また、Gremlinの記法は非常に直感的であるため、データ操作が簡単にできるのも大きなメリットだ。Gremlinによってグラフデータベースにアクセスすることで、ユーザー同士のコミュニケーションの多寡を確認していく。

 本プロジェクトでは、メンションのつけ方などをもとに、チャット上でのコミュニケーションパターンを4種類に分類した。パターンごとに重みづけを行い、コミュニケーションの回数とかけ合わせて計算。そのうえで、計算結果の低い人を「これまであまり関わったことのない人」と判定したという。

 この関係スコアと、チャットBOTに投稿されたメッセージとの類似スコアを使いて、「レコメンデーションすべきユーザー」の算出を行った。

「チャットBOTをより進化させるため、今後はこれら3つの課題を改善していきたい」と一ノ瀬氏は語る。
「チャットBOTをより進化させるため、今後はこれら3つの課題を改善していきたい」と一ノ瀬氏は語る。

 最後に、一ノ瀬氏は本セッションをこう総括した。

 「業務がチャットベースに変わったことで、メールによるコミュニケーションの時代と比べてコミュニケーション履歴の分析・活用が現実的になりました。機械学習やクラウド技術の発達も、それを後押ししています。世の中にすでにあるものを組み合わせるだけで、大きな成果を出せるようになりました。今後は、新たな価値を生み出すため、『既存のものをどう組み合わせるか?』といったアイデアがより重要になってくると考えています」

お問い合わせ

 株式会社ドリーム・アーツ

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5