インターンシップ 自動リプライ機能を持ったtwitter botの作成

東京都立産業技術高等専門学校 ものづくり工学科 電子情報工学コース

実習先 Shannon Lab 株式会社

1. はじめに
 私はShannon Lab株式会社でインターンシップを行った。この会社はIT系のベンチャー企業であり、主に人工知能技術を用いたソフトウェアの開発を行っている。
 今回の実習では、「人工知能」という言葉からよく連想される、「人間との対話」を目的としたプログラムを作成した。具体的には、リプライが送られて来たら、それに対応するような回答を自動で返すtwitter botプログラムである。
人間との対話を行うには、人間同士の対話を真似することが一番容易である。そして、twitterでのツイートとそれに対するリプライは、人間同士の対話である。そのため、リプライを持つツイートとそれに対するリプライを用いて、人間同士の対話を真似すれば、人間との対話を行えるという考えの元、このプログラムを作成した。

2. 実習内容
 主な実習内容は、前述した通りのtwitter botプログラムの作成である。
 初日は、twitter botを作成する予定はなかったため、NTT docomoの雑談対話APIを用いた対話プログラムの作成を行った。
 二、三日目は、会社から渡されたプログラムの修正・改変等を行った。これらのプログラムは、twitterからリプライのあるツイートを取得してきて、ツイートとそれに対するリプライをデータベースに保存するというものと、入力された文に類似した文をデータベースから検索し、それに対する回答文を出力するというものであった。
これにより対話プログラムの根幹となる部分が完成した。
 四日目以降は、対話プログラムの改良を行った。
元のプログラムでは、文同士の距離がしきい値以下ならば類似しているという単純な判定方法をとっていた。そのため、ほぼ完全に一致した文でないと、類似した文だと認められなかった。例えば、「こんにちは、今日も良い天気ですね。こんな日は外で読書でもしたいですね。」のような長い文が入力された場合、これとほぼ一致したツイートが見つかる可能性は限りなく低く、このままだと回答を返すことが出来ないことになる。そのため、特に文同士の類似判定方法の改良と判定方法の追加を行った。
 最終日に、自分に送られてきたリプライの取得とそれに対する返答を行うプログラムを作成し、twitter botを作成した。

3. 結果と考察
 図1から図3に今回の実習で作成したtwitter bot(@ShannonLaBot)の対話例を示す。図2は、このアカウントがtwitter bot、つまり人間ではないと知らない人との対話を示したものである。
 図1の通り、自動リプライ機能を持ったbotを作成することができた。また、回答もある程度話題に沿った内容のものを返すことができた。また、図3より、このアカウントが人間だと勘違いされ、ある程度対話を継続できていることが分かる。これにより、当初の目的である「人間との対話」が達成されたと言えるだろう。
図2と図3の後半部分より、リプライによっては人間の回答としてはおかしな発言をしていることが分かる。今回使用したアルゴリズムの中に、文中の単語を用いて文同士の類似判定を行うものが存在する。図2と図3後半の部分は、そのアルゴリズム内で、文内の特徴的な単語に重みづけがされていなかったことが原因の内の一つだと考えられる。これに関しては、tf-idf法を用いることで解決できると思われる。
また、より人間らしい回答を返すようにするための他の改良方法としては、文同士の類似判定方法の改良や判定方法の追加などが考えられる。例えば、既存の類似度判定のしきい値の変更や、トライグラムなどの有名な文書比較方法の導入などである。
マルコフ連鎖やNTTの雑談対話APIを用いてそれらしい文を直接生成するなどの方法も考えられる。


図1: ShannonLaBot対話例(1)


図2: ShannonLaBot対話例(2)


図3: ShannonLaBot対話例(3)

4. まとめ
(a) インターンシップに参加した感想
 今回のインターンシップでは、Python言語の基礎から文書比較の方法まで多くのことを学べ、実際に企業に就職したかのような体験が出来たためとても満足している。
ただ一つ、twitter bot改良案のほとんどを実際に実装できないまま、インターンシップが終了してしまったことがとても残念に思われる。
(b) 後輩へのアドバイス
 Shannon Lab株式会社は、実際に企業に就職したかのような体験が出来るため、将来IT系企業に就職したいと思っている方に特にお勧めします。また、ShannonLaBotに興味を持った方にもお勧めします。
 実際にインターンシップに来る際は、Pythonについて予め少し調べておき、色々と自分で調べるくせをつけておくと良いと思われます。

ShannonLabot link

Comments are closed.