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

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

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

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会 
 - Ujimaru Reformer (不採用) - Ujimaru Markov Model

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


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

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

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

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

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

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

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

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


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

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

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