Tech Sketch Bucket of Technical Chips by TIS Inc.

機械学習を使って対話システムを作ってみた

Pocket

はじめに

最近はチャットボットが何かと流行っています。このような機械と自然言語で対話するシステムというのは昔から多くの人に期待されていました。
今回はそんな期待に応えるべく?機械学習を使って対話システムを作ってみました。

リポジトリはこちらです:
HotPepperGourmetDialogue

作成物の概要

今回作成したのは対話を通じてレストラン検索を行うシステムです。イメージとしては以下のような対話を行います。"U"とついているのがユーザ発話、"S"がシステム発話です。

発話
U:スペイン料理店を探して。
S:スペイン料理店ですね。場所はどの辺りですか?
U:新宿周辺
S:新宿のスペイン料理店ですね。予算の上限はどのくらいですか?
U:4000円くらい
S:4000円ですね。それではこのお店はどうでしょうか?
S:(店を出す)

このような対話を通じて、レストランの検索に必要な情報をユーザから取得し、レストラン検索を行います。
今回、レストラン検索にはHotPepperグルメサーチAPIを利用させていただきました。ありがとうございます。

Chainerを用いて音声からの感情識別を行ってみました

Pocket

Chainerを用いて音声からの感情識別を実践

音声からの感情抽出

Pepper

対話機能
我々は現在Pepperを用いた対話アプリケーションの開発を行っております。
対話において重要な要素は感情を理解することが挙げられます。感情を理解することでユーザーが怒っていれば余計なことを話さず、悲しんでいれば慰める。そんなアプリケーションの実現が可能となります。
しかし従来の対話アプリケーションにおいてユーザーの感情を理解する機能は実装されておらず、質問に答えるだけの単純な機能が主流でした。

感情理解
Pepperには標準機能で感情を理解する機能がありますが、中身がブラックボックス化されています。そのため我々は独自に感情を識別する機能の実装を行いました。
対話で得られる情報は表情、音声、言語情報などと多岐に渡ります。今回は音声に着目しました。理由として、海外の人より日本人は感情が分かりづらいと言われています。日本人に対して感情を理解し対応するには表情の画像データよりも音声データを用いる方が有用に働くと考え、音声からの感情識別を機械学習の分野で話題のChainerを用いて実装しました。

トピックモデルを利用したアプリケーションの作成

Pocket

最近、「機械学習」や「自然言語処理」、といったキーワードを聞くことが多くなってきていると思います。

反面、すごそうだけどなんだか難しいもの、というイメージもあるのではないかと思います。そこで、今回は「自然言語処理」の一種であるトピックモデルを取り上げ、その仕組みを紹介するとともに、その実装方法について解説していきたいと思います。

(「機械学習」の方については、以前開催した勉強会の資料がありますので、興味があればそちらもご参照ください。)