Twitterを用いた非タスク指向型対話システムの発話生成

自然言語処理 twitter 自然言語生成

Introduction

非タスクの対話システムっていうのは普通のチャット

手で作ったルールベース方式のは、古くは

Jabberwacky は、 応答事例のデータベースを大きく持っておき、

  1. ユーザーの発言の入力
  2. 類似の検索
  3. それの応答をDBから引っ張ってくる
  4. そのまんま応答とする

とする。「質の高い対話ログ」を大量に持っておくことが必要

最近で言うと、Twitter上のやりとりを用いる手法がごまんと提案されている
e.g. http://www.isi.imi.i.u-tokyo.ac.jp/publication/2012/IPSJ2012_bessho.pdf

この論文は、では質の高い発話文をいかに獲得するか、について述べる
受け答えじゃなくて、
何か話題語が入力された時に、それについての何でもない発言をさせたい

質の高さ

  1. ある話題語に関する発言であること
  2. 日本語として適切で意味が通じること
  3. その発言単体で意図が理解できること
  4. 発言が時間や空間に制限されていないこと

特に四番目を鑑みるに、 著者らは Jabberwacky への利用を考えていることがわかる。

タスク

先の4の質の高さ、に当てはまるかどうかの 正解データ、不正解データを作って、 分類器を作る

コーパス

Twitterからの文であって 話題語を含み、単語が5以上30未満で、@を含まない

フィルタリング

次のルール全てに当てはまるものを、正解とする

ルールA

話題語と他の名詞が連続しないこと

これはたぶん、別に複合語を示していて話題語とは関係がない
(ex. (アメリカ, アメリカザリガニ))

ルールB

人名、代名詞が含まれないこと

ルールC

先頭の単語が助詞、助動詞、接続詞ではないこと

ルールD

末尾の2単語が

となってるものは何かおかしいからダメ。

ただし、

はセーフらしいです

ルールE

文末以外に 助詞-助動詞 が含まれないこと

これは句読点がおかしい

ルールF

時間、数値を含まないこと

ルールG

比較対象の不十分な比較を含まないこと

/(ほう|方)が/ にマッチして、 /より.*(ほう|方)が/ にマッチしないものは削除する

文の点数

以上のルールでも不正解なのに正解とされるものを除外するために、 点数付けを行う。

助詞以外の単語の点数

助詞以外の単語 \(w\) について、

\(w\) の点数を

\(f(w) = \frac{n_1}{N_1} / \frac{n_0}{N_0}\)

とする。つまんない設定だ。

0より大きい実数であって、正解に多く見られるものは、\(1.0\) を超える

ただし、稀な語 (訓練事例中で頻度が\(m\)未満; \(m=5\)) は無視して 点数を与えない。

助詞の点数

助詞の前後の1語ずつをとった 3-gram \(x\) を見る。 ここで BOSとEOSを考慮する。

この点数 \(f(x)\) は先と同じ式で出す。

文の点数

\(\prod \max(\alpha, f(x))\)

where \(\alpha = 1.4\)

文の点数がある閾値 \(\theta\) (\(\theta = 1.0\)) 以下のものは除外して不正解とする

語尾の整形

最強にどうでもいい話

対話システムだから優しい口調にしたい

Result

普通に良い