$30 off During Our Annual Pro Sale. View Details »

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

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

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

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会