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

バカが取ったバイキングの皿を持ってきたよ!!

 バカが取ったバイキングの皿を持ってきたよ!!

This slide describe Twitter bot 'ujimaru', which says words like uzimaru.

7005db6f5317ddce16d09591f70ea32c?s=128

Hayato Tsukagoshi

June 01, 2020
Tweet

More Decks by Hayato Tsukagoshi

Other Decks in Programming

Transcript

  1. うじまる生誕LT会 
 バカが取ったバイキングの皿 を持って来たよ!!
 @hpp_ricecake


  2. うじまる生誕LT会 
 hpp
 Twitter : @hpp_ricecake
 GitHub : hppRC


  3. うじまる生誕LT会 
 作ったもの


  4. うじまる生誕LT会 
 うぢまるくん


  5. うじまる生誕LT会 


  6. うじまる生誕LT会 


  7. うじまる生誕LT会 
 実装内容


  8. うじまる生誕LT会 
 - Ujimaru Reformer (不採用) - Ujimaru Markov Model

    - Ujimaru Twitter Crawler - Ujimaru Twitter Client - Ujimaru API
  9. うじまる生誕LT会 
 Ujimaru Reformer


  10. うじまる生誕LT会 
 Ujimaru Reformer
 Reformer :
 NLP分野でSOTAな結果を出しまくったTransformerの高効率版
 
 - うじまるくんのツイートを収集、8000文ほどを元データに(ごめん)


    - Google Colaboratory で6時間ほど訓練
 - 著者実装を参考にTPU(はやいやつ)で
 - 訓練したモデルから文生成をする(予定だった)
 - 生成結果は次のページ

  11. うじまる生誕LT会 
 Ujimaru Reformer


  12. うじまる生誕LT会 
 Ujimaru Reformer
 反省点
 - データが少なすぎる(最低でも100,000文くらいは欲しい...)
 
 解決策
 -

    うじまるくんが1日4000ツイートくらいする
 - 日本語Wikiのデータを混ぜる(全然関係ないモデルに...)
 - データ数が少なくても大丈夫な言語モデルに変更する

  13. うじまる生誕LT会 
 Ujimaru Markov Model


  14. うじまる生誕LT会 
 Ujimaru Markov Model
 マルコフ連鎖 :
 以前に出現した系列を元に次の出力を確率的に生成する
 
 -

    うじまるくんの以前のツイートを元にモデルを作成
 - ライブラリとして使えるように、JSONでモデルを出力
 - 他の人のツイートも同じく収集して似た傾向の語彙を増強
 - PyPIに登録したので`pip install ujimaru-markov-model`して
 `ujimaru`をするとうじまるくんが喋ります

  15. うじまる生誕LT会 
 Ujimaru Markov Model


  16. うじまる生誕LT会 
 Ujimaru Twitter Crawler


  17. うじまる生誕LT会 
 Ujimaru Twitter Crawler
 実装: GO
 - データ収集に利用
 -

    anacondaを使用(超便利)
 - Standard Search APIじゃ足りなかったので
 Premium Search API (無料枠)も使用
 - anacondaにPremium APIを触るメソッドが生えてなかったのでforkして生や した

  18. うじまる生誕LT会 
 Ujimaru Twitter
 Client


  19. うじまる生誕LT会 
 Ujimaru Twitter Client
 実装: Rust
 
 - ツイートの定期投稿に利用


    - ツイートするテキストはAPIから取得
 - Twitter API を叩くいい感じのライブラリがなかったので自作↓
 
 - Kuonという名前のOSSとして公開しました(めっちゃWIP)

  20. うじまる生誕LT会 
 Ujimaru API


  21. うじまる生誕LT会 
 Ujimaru API
 実装: Python (flask)
 
 - Cloud

    Run でデプロイ (https://ujimaru-api-l3qfihnisq-an.a.run.app/tweet)
 - アクセスすると生成したテキストを返す
 - Docker imageをポイするだけなので超簡単

  22. うじまる生誕LT会 
 Ujimaru API
 まとめ
 
 - ニューラルなモデルを使うときはデータ数に気を付ける
 - ソースコード

    : https://github.com/hppRC/ujimaru
 - LTのスライドは内容を絞ろう

  23. うじまる生誕LT会