studylog/北の雲

chainer/python/nlp

RNNでのテキスト生成

最近RNNを使ってのテキスト生成で遊んでます。
色んなやり方があるのでメモ。呼び名は適当に命名しています。
○はRNNに与える単語で、?が予想して出力する単語。

1.順生成

○○○○○○?

最も一般的。文章の時間軸に沿って単語を予測する。

2.逆生成

?○○○○○○○

文章を逆向きに読ませて前の単語を予測する。

3.両生成

???○○○???

与えた文字列から前と後ろの両方向に予測していくパターン。順生成と逆生成の2つのモデルを用いる。
予測する順番を数字で表すと、

...8642○○○1357....
となる。

4.穴埋め

○?????○

離れた文字列を与えて、内側の単語列を予測する。
「今日 ? ? ? 暑い」を与えたら、「今日 は 本当 に 暑い」 のように生成したい。
1~3と違って計算量が爆発的に大きくなる感じで厄介。まだ未実装。
また、「今日 (?) 暑い」のように中の単語数を固定にしないパターンも作りたい。

5.穴埋め2

○????○○????○○????○


おわり。