ブログではないです

ブログでなくはないです

The Ubuntu Dialogue Corpus: A Large Dataset for Research in Unstructure Multi-Turn Dialogue Systems [Lowe+, SIGDIAL'15]

http://www.sigdial.org/workshops/conference16/proceedings/pdf/SIGDIAL40.pdf

概要

Ubuntu forumのチャットルームの会話を使ってデータセットを作った&それを用いて応答選択タスクをやってみたという論文。 データセットは長めのターン数(平均7.7ターン)のデータセットであんまり無いタイプ。似たようなものに The Ubuntu Chat Corpus for Multiparticipant Chat Analysis [Uthus+, AAAI'13] があるがこっちは多人数間の会話そのままのコーパス、こっちは1対1の会話になっている部分を抜き出している。

データセットを作るにあたってinitial question/message (ある会話の始まりとなる発話)とmessage(それへの返信)を特定してそれが1対1になっている部分を切り出す必要がある。 手順としてはチャットルームの発言の後ろからmessageを探し,そこからそのmessageの3分以内の発話についてbackwardに辿っていく形を取るが,その際元々のデータは誰に向けて話しているのかが明示されていない事が問題になる。しかし慣例的に多くの場合文の冒頭にユーザ名を書いてメッセージを送る( user_name : message )ため、文の冒頭の単語を見てそれが一般的な単語 (GNU Aspell spell checking dictionary に登録されていない) であった場合にユーザ名と判断している。また,

また,
<RC> “dell: you can’t move the drives”
<RC> “this is the problem with RAID
のように後で発話を付け加える場合など,message形式になっていないものにも文脈を保つ上で重要なものが存在している一方、複数人で会話している場合は並行して違うユーザに向けた発話がmessage形式を取らずに行われる場合があるため取扱いが難しい。 そのためあるユーザが複数人に対してmessageを送っているかをチェックして、送っていない場合は途中の発話も繋げ,そうでない場合は弾いている。

応答選択モデルはコンテクスト(複数の発話を __EOU__ などの区切りトークンで繋げたもの。最長160単語まで)と応答をそれぞれ(TF-IDF, RNN, LSTM)でエンコードしたベクトルc, rを用いて{ \displaystyle p= \sigma (c^{\mathrm T} M r + b)} として応答の適切さを推定。[Wu+, Coling'16]のように発話1つをエンコードするネットワークとその系列をエンコードするネットワークのように分けることはしていない。まあLSTMが一番良い。