Upgrade to Pro — share decks privately, control downloads, hide ads and more …

台詞を一行も書かずに作る全自動アイドルBotの検討 / Full automated idol's bot

shuukei.imas_cg
December 16, 2017

台詞を一行も書かずに作る全自動アイドルBotの検討 / Full automated idol's bot

2次創作SSの会話シーンを対話コーパスとみなして文書の類似度計算を行い用例ベースの雑談対話を行ってみた

shuukei.imas_cg

December 16, 2017
Tweet

More Decks by shuukei.imas_cg

Other Decks in Research

Transcript

  1. 自己紹介  たくみP  担当アイドル: 喜多日菜子  Twitter: @shuukei_imas_cg 

    @[email protected]  運営しているサイト・サービス https://www.shuukei.info/  モバマス-Pixiv集計所  シンデレラガールズ/ミリオンライブ!/SideM台詞判定  喜多日菜子LINE BOT  デレマスユニット推薦 2017/12/16 2
  2. 宣伝:喜多日菜子LINE BOT  二次創作としてのアイドルの LINE BOT  https://www.shuukei.info/hinako_linebot/  LINEアカウント

    @xqw2205g  任意のテキスト、一部のスタンプ に返事を返す  画像や位置情報にもちょっと反応  ルールベースの対話システム  構成  GAE(SE)/Python  Datastore/Taskqueue  MeCab(自宅サーバで動作)  mecab-ipadic-Neologd  自作の呼称辞書 2017/12/16 4
  3. (ルールベースの)Bot制作の課題  台詞を書くのがとても大変  原則、すべて手書き  テンプレート回答 + 単語反応 

    合計約1800台詞/約41000文字  作中台詞を流用/アレンジする場合も、発話の シチュエーションを個別に判断する必要がある  ライターの生産力がBotの表現力に比例  スケールしない 2017/12/16 5
  4. 何が問題か?  そもそも公式台詞の数が限られる  喜多日菜子の場合で約830(被り除外時750)  もっとも台詞の多いアイドルでも900前後?  アニメ作中の台詞を入れても2000はないのでは 

    公式台詞とBotの会話ではシチュエーションが異なる  Botが置かれた状況に対応する台詞群ではない  「対話システムへのユーザ発話のかなり(4割?)が システムのパーソナリティに関する質問」  「好きな色は?」  「何歳?」  「◯◯のことどう思ってる?」 2017/12/16 6
  5. そこで……  「公式にこだわらなければよい」 ピコーン!  エ◯◯ァント速報  SS◯とめ◯庫  SS

    森◯◯こ!  ◯ixiv  >>> 2次創作SSをコーパスとして使う <<< 2017/12/16 7
  6. SSの会話シーンを対話例とみなす  対話したいアイドル(ここでは渋谷凛)の発話の1行前が 本人以外の “◯◯「(台詞)」” の書式であれば(1行前発話) 、それらの組を対話例とみなす  ここでは1行目と2行目を組とする 

    Botへの入力から、類似する「1行前発話」を検索し、 対応するアイドル発話を返答とする  1行も台詞を書かずにBotが作れる!!!!!(かもしれない) 2017/12/16 8 1: P「おはよう凛」 2: 凛「おはよう、プロデューサー」 3: 凛「また事務所に泊まったの? シャツよれよれだよ」 4: P「ああ、書類仕事が詰まっててな……今日こそは帰るよ」
  7. 基本的な考え方  Botへの入力「調子はどうだ」  対話例から「類似する1行前発話」の候補を探す  1行前対話に対応する「アイドル発話」をアイドル からの返答とする  返答「調子?

    いつも通りだよ」 2017/12/16 9 1行前発話 類似度 アイドル発話 どうだ? 調子は 0.8169 調子? いつも通りだよ 凛はどうだ 0.7521 探偵とかはちょっと… 学校はどうだ? 0.6721 前よりは騒がしいかな。仕事のこ ととかはよく聞かれるよ 調子はどうだ? 凛ガチャ 0.6605 プロデューサー! 調子は 0.6343 上々かな
  8. SSまとめサイトをスクレイピング  あるサイトのあるカテゴリ記事をローカルに保存 後、 Beautiful Soupでテキストだけ取り出す  ls *.html |

    wc → 9407(作)  (htmlから本文部分のみを取り出す)  ll –h input.txt → 220MB 平均24KB/1作  アイドルごとの発言数  grep ^卯月「 input.txt | wc → 38323  grep ^凛「 input.txt | wc → 89829  grep ^未央「 input.txt | wc → 49556  grep ^まゆ「 input.txt | wc → 46866  最もデータが豊富な渋谷凛を対象に、71861組の 対話例を抽出 2017/12/16 10
  9. 単語の分散表現とは  Word2Vecという手法により算出できる  「似ている文脈で出現する単語は似ている」という 仮説(分布仮説)をもとにした手法  「ペット と して

    ◯◯ を 飼って います」  この◯◯に入るのは?  猫、犬、文鳥、インコ… ありえそう  鉛筆、スピーカー、本… まずありえない  入れ替えても違和感がない単語は相互に「近い」  単語を100~300次元程度の実数値ベクトルで表す  単語の類似度を算出したり、単語ベクトル同士の 足し算、引き算が行える 2017/12/16 12
  10. W2Vによる単語類似度の例 2017/12/16 13 「卯月」 凛 0.767464160919 美穂 0.749663591385 智絵里 0.743887543678

    未央 0.727633714676 凜 0.693039000034 美波 0.685341060162 藍子 0.656149566174 かな子 0.633596539497 「アイドル」 として 0.736169874668 芸能界 0.697949171066 担当 0.697604298592 声優 0.678931057453 活動 0.678488969803 活躍 0.678458154202 売れっ子 0.678387641907 プロデュース 0.676900863647 「着る」 服 0.831807136536 着 0.820072233677 水着 0.805855154991 衣装 0.79497730732 着せる 0.787458062172 メイド服 0.785279810429 着せ 0.777207732201 私服 0.77459526062 「お仕事」 仕事 0.679117977619 予定 0.663984596729 忙しい 0.653930127621 今日 0.645768225193 レッスン 0.637667179108 打ち合わせ 0.635817289352 撮影 0.634669542313 明日 0.633666813374
  11. 手法の(超大雑把な)解説  BOW  ある単語が「あるかないか」の1/0で文書ごとに高次元の 疎なベクトルを作り、コサイン類似度などで距離を測る  Doc2Vec(D2V)  文書中の単語の分散表現に、文書IDを加えて学習し

    「文書のベクトル」を作り、そのベクトル間距離で測る  Word Mover’s Distance(WMD)  文書中の対応する単語の距離(W2Vモデルを使う)の和が 最も小さくなる組み合わせを「近い」とみなす 2017/12/16 14 Kusner, Matt J., et al. “From word embeddings to document distances.” Proceedings of the 32nd International Conference on Machine Learning (ICML 2015). 2015.
  12. 実際にやってみる 1  入力「おはよう」 に対する上位3位の出力 2017/12/16 15 留美: おはよう (1.0)

    凛: あっ妖怪婚姻届 ------- のあ: おはよう (1.0) 凛: それで、その…… さっき、何て言いま した? ------- モバP: おはよう (1.0) 凛: あ、おはよ、プ ロデューサー BOW P: おはよう (0.685705959797) 凛: まだ夢だぁ。 んープロデューサー スリスリ ------- P: おはよう、諸 君! (0.679561257362) 凛: あ、あんたが私 のプロデューサー? ------- 留美: おはよう (0.676575243473) 凛: あっ妖怪婚姻届 D2V モバP: おはよう (1.0) 凛: あ、おはよ、プ ロデューサー ------- 留美: おはよう (1.0) 凛: あっ妖怪婚姻届 ------- P: おはよう (1.0) 凛: まだ夢だぁ。 んープロデューサー スリスリ WMD
  13. 実際にやってみる 2  入力「今日は疲れた」 2017/12/16 16 美穂: 今日は楽しかっ たね (0.670820355415)

    凛: 美穂が根に持つタ イプって分かっただけ でも収穫かも ------- P: けど今日は疲れた ろ? (0.612372398376) 凛: ううん。大丈夫 ------- 千早: 今日はよろしく お願いします (0.577350258827) 凛: こ、こちらこそよ ろしくお願いします! BOW P: お疲れ (0.686476528645) 凛: あ。プロデュー サー… ------- ??: お疲れ (0.676505923271) 凛: あっ、お疲れ様 です ------- P: お疲れ (0.670417308807) 凛: おまたせ D2V 美穂: 今日は楽しかっ たね (0.682206236666) 凛: 美穂が根に持つタ イプって分かっただけ でも収穫かも ------- 美希: 疲れたのー (0.675898013256) 凛: お、お疲れ様です ------- 奈緒: つ、疲れた (0.660910506703) 凛: このぐらいで負け てられないよ ------- WMD
  14. 実際にやってみる 3  入力「だめ。全部食べて」 2017/12/16 17 P: 全部食べていい からな (0.547722518444)

    凛: いいの? もとは プロデューサーので しょ? ------- P: じゃ食べさせて やるよ。ほら (0.474341660738) 凛: あ、あ~ん ------- P: だめ (0.447213590145) 凛: けち BOW P: 全部食べていい からな (0.662432849407) 凛: いいの? もとは プロデューサーので しょ? ------- 未央: 全部だよ全部 (0.547326266766) 凛: よくわかったね ------- P: ああ。全部使い 切った (0.547210037708) 凛: 時計…… D2V P: 全部食べていい からな (0.64713487041) 凛: いいの? もとは プロデューサーので しょ? ------- 加蓮: 私も食べて なーい (0.599808299494) 凛: 私もだよ ------- P: ああ。全部使い 切った (0.594570372939) 凛: 時計…… WMD
  15. 実際にやってみる 4  入力「パンツの色は?」 2017/12/16 18 海未: 貰うのは? (0.670820355415) 凛:

    お母さんに選んで 貰うような感じだよ ------- 卯月: こういうのは? (0.670820355415) 凛: それはさらに無理 ------- P: は?誰の? (0.670820355415) 凛: 多分………………加蓮 BOW 文香: 色で…? (0.519123733044) 凛: うん。黄色なら 『慎ましい喜び』、青 なら『用心深さ』とか ------- モバP: 蒼い凛のパンツ はブルー。プリンセス ブルーに似合う下着の 色はやっぱりブルー … ぐはっ!! (0.515592396259) 凛: この変態!変態! 変態!変態! ------- 智絵里: 私はバージニ アのピンク色のだよ (0.50354808569) 凛: 箱がピンク色 だ・・・あんまりタバ コっぽくないね D2V モバP: 下着も蒼いの? (0.699795362387) 凛: ちょっと、いきな りセクハラ発言するの 止めてよ ------- P: 違うというのは? (0.667214182945) 凛: う、うるさいよ! 馬鹿っ! ------- 僕: プレゼントは受け 取るの? (0.661847991559) 凛: 受け取るよ。 WMD
  16. 課題  手法ごとに特性が違い、一概にどれがいいとは言えない  BOWは手堅いがあまり意味のない形態素に引っ張られるこ とがある  D2Vは動作が確率的なので毎回違う結果が出る  WMDはめちゃくちゃ遅い

     今回の条件下で上位10件の候補を出力するのに50秒  Core i7-6700 + intel MKLでビルドしたnumpy, scipy  「1行前発話」は話者・文脈を考慮しない  「妖怪婚姻届」問題 2017/12/16 19
  17. 改善案  WMDの高速化  Word Centroid Distanceという近似的手法もあるらしい  「1行前発話」をPからのものに限定する 

    ただし、データが減少する(71861組から13899組へ)  使用する特徴の取捨選択  形態素の品詞の取捨選択、ストップワード、原型化など  出力候補を別の機械学習でリランキングするなど  さらに別の手法  Seq2Seqとか 2017/12/16 20