Chatbot と beam search

seq2seq で decoder から出力するときに beam search の方が出現確率が高いモノを選べるので結果が良くなるはず。beam search の詳細は karino2氏の解説。beam search 自体はシンプルで理解しやすいアルゴリズムなのだけど、Tensorflow のグラフでこれを書くのは非常に難易度が高い。使っている seq2seq library には loop_function という引数があってこれで一つ前の input を横取りしてあれこれできる。ということでずっとコードリーディングしてたんだがそれでも難しい。ということで試行錯誤しているうちに他の人が実装しているのを見つけてようやく動いた。 beam search のほうが結果が良いのかいまいち分からない。

>おはよう
normal:おはようございます
beam
0 おはよう ござい ます
1 お は あり
2 お は あり です 〜 ♪

>こんにちは
normal:はい(˘ω˘)
beam
0 はい ( ˘ ω ˘ )
1 はい ( ˘ ω ˘ ) スヤァ
2 はい ( ˙ㅿ˙ 。 .
3 はい ♡
4 はい ( ´ ω 。
5 はい 、 さ www
6 はい ( 笑

>ばいばいー
わろきちってんじゃんwww
normal:beam
0 がち やし ま ー ん
1 いや ま ー !
2 わろ ぶ や !
3 ほら
4 ネタ やし ぶ
5 ど ま ー
6 がち やし ま ーー
7 いつの間に ま ー
8 す
9 いつの間に ぶ
10 いつの間に やし ぶ うち
11 やらかし た ❤
12 現実 やし
13 ほんま やし ぶ ()
14 や ま ー

>(月曜日から)逃げちゃ駄目だ……!
normal;えぇこれは、、、
beam
0 なんで 進捗 は これ じゃ ねぇ ・ ・ ω !
1 え ぇ これ は 光 は 、 !
2 え ぇ これ は 嫌 )
3 なんで 進捗 おっ け ( ω !
4 なんで 進捗 は これ じゃ ぞ 〜

> 子供たちにつられて苦手なミニオンズ…(´・ω・`)w
normal:気をしてねー(˘ω˘)
beam
0 気 を し て ( ˘ つ ω -(´∀`; )
1 気 を すん な ( ˙ ˘ )
2 仕事 を すん や ( ˙ ω -(´∀`; )
3 気 を し て ねー 。 ( ^ ー ` ・ )
4 気 を し てる やろ ( ˙ ˘ ω ˘ ・) !
5 気 を し てる やろ ( ˙ ˘ ω ˘ ω ・ )
6 気 を し てる の だ よ )

> 中華そば醤油をいただきました💕お、おいしい〜😍大盛いけたかも?
normal: 追加ですよねwww
beam
0 追加 し まし た ☺
1 追加 です よ ☺ 
2 追加 です よ ね www