$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


    View Slide

  2. うじまる生誕LT会 

    hpp

    Twitter : @hpp_ricecake

    GitHub : hppRC


    View Slide

  3. うじまる生誕LT会 

    作ったもの


    View Slide

  4. うじまる生誕LT会 

    うぢまるくん


    View Slide

  5. うじまる生誕LT会 


    View Slide

  6. うじまる生誕LT会 


    View Slide

  7. うじまる生誕LT会 

    実装内容


    View Slide

  8. うじまる生誕LT会 

    - Ujimaru Reformer (不採用)
    - Ujimaru Markov Model
    - Ujimaru Twitter Crawler
    - Ujimaru Twitter Client
    - Ujimaru API

    View Slide

  9. うじまる生誕LT会 

    Ujimaru Reformer


    View Slide

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

    Reformer :

    NLP分野でSOTAな結果を出しまくったTransformerの高効率版


    - うじまるくんのツイートを収集、8000文ほどを元データに(ごめん)

    - Google Colaboratory で6時間ほど訓練

    - 著者実装を参考にTPU(はやいやつ)で

    - 訓練したモデルから文生成をする(予定だった)

    - 生成結果は次のページ


    View Slide

  11. うじまる生誕LT会 

    Ujimaru Reformer


    View Slide

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

    反省点

    - データが少なすぎる(最低でも100,000文くらいは欲しい...)


    解決策

    - うじまるくんが1日4000ツイートくらいする

    - 日本語Wikiのデータを混ぜる(全然関係ないモデルに...)

    - データ数が少なくても大丈夫な言語モデルに変更する


    View Slide

  13. うじまる生誕LT会 

    Ujimaru Markov Model


    View Slide

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

    マルコフ連鎖 :

    以前に出現した系列を元に次の出力を確率的に生成する


    - うじまるくんの以前のツイートを元にモデルを作成

    - ライブラリとして使えるように、JSONでモデルを出力

    - 他の人のツイートも同じく収集して似た傾向の語彙を増強

    - PyPIに登録したので`pip install ujimaru-markov-model`して

    `ujimaru`をするとうじまるくんが喋ります


    View Slide

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


    View Slide

  16. うじまる生誕LT会 

    Ujimaru Twitter Crawler


    View Slide

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

    実装: GO

    - データ収集に利用

    - anacondaを使用(超便利)

    - Standard Search APIじゃ足りなかったので

    Premium Search API (無料枠)も使用

    - anacondaにPremium APIを触るメソッドが生えてなかったのでforkして生や
    した


    View Slide

  18. うじまる生誕LT会 

    Ujimaru Twitter

    Client


    View Slide

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

    実装: Rust


    - ツイートの定期投稿に利用

    - ツイートするテキストはAPIから取得

    - Twitter API を叩くいい感じのライブラリがなかったので自作↓


    - Kuonという名前のOSSとして公開しました(めっちゃWIP)


    View Slide

  20. うじまる生誕LT会 

    Ujimaru API


    View Slide

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

    実装: Python (flask)


    - Cloud Run でデプロイ (https://ujimaru-api-l3qfihnisq-an.a.run.app/tweet)

    - アクセスすると生成したテキストを返す

    - Docker imageをポイするだけなので超簡単


    View Slide

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

    まとめ


    - ニューラルなモデルを使うときはデータ数に気を付ける

    - ソースコード : https://github.com/hppRC/ujimaru

    - LTのスライドは内容を絞ろう


    View Slide

  23. うじまる生誕LT会 


    View Slide