Slide 1

Slide 1 text

ojichatを移植してたら 試験監督に遅刻した話 2020-02-23 14:30~ mintech revival #3 @boiling_water_S

Slide 2

Slide 2 text

本日のお品書き 1.自己紹介 2.移植の経緯 3.ojichatについて 4.移植 5.まとめ

Slide 3

Slide 3 text

自己紹介 (いつもの) 名前:Boiling_Water Twitter ID:@boiling_water_S 出身:うつくしまの左上 所属:KIT 情報 (卒業できそう) 情報処理技術研究会

Slide 4

Slide 4 text

どうしてこうなった\(^o^)/ - 2/11(火)夜 某研究室にて -

Slide 5

Slide 5 text

移植に至るまでの経緯-1 処理研語録BOTが Discordのアップデートにより停止 修正ついでに、何か機能追加するか じゃあ ojichatだな() 図.処理研語録BOT (DiscordBot)

Slide 6

Slide 6 text

移植に至るまでの経緯-2 Java用のojichatないかな? (Discord4Jを利用しているため) ない じゃあ 移植するか!(脊髄反射) 図.処理研語録BOT (DiscordBot) 決断:22時頃 試験監督まで、あと12時間

Slide 7

Slide 7 text

処理研語録BOT 研民たちの何気ない 名 迷言 を “語録”として記録・振り返る Discord Bot ● 紙なんすか!?、ザッコ ● 蚊取り線香3点バースト ● ブレーカーは2度死ぬ ● 焼きそばペヤング超超超大盛GIGAMAX激辛END ● ξ.rar ● 泣きそうなくらい良い曲ですね。あっCDはいらないです ● こっちが泣きそうだわ 以上 語録一覧より抜粋 運用開始(2019/06/26) ~ 128 語 登録済! メッセージ投稿復旧:2時頃 試験監督まで、あと8時間

Slide 8

Slide 8 text

ojichatって?

Slide 9

Slide 9 text

ojichatってそもそも何? 図. ojichatのロゴ (githubより抜粋) https://github.com/greymd/ojichat 名称 ● Ojisan Nanchatte Generator 説明 ● おじさんがLINEやメールで送って きそうな文を生成するコマンド ● ジョークツール 言語・環境 ● Golang-cli (Dockerコンテナ版も) 開発 ● greymd(Yasuhiro Yamada)氏

Slide 10

Slide 10 text

例 -1 ランダムな女性の名前で文を生成 引数で指定された名前で文を生成 $ ojichat ヤッホーれいこちゃん、元気かな⁉⁉オレは、近所に新しく できたラーメン屋さん に行ってきたよ。味はまぁまぁだったかナ $ ojichat 山田 山田ちゃん、オハヨウ〜(^з<)(笑)山田ちゃんも今日も2時までお仕事かナ❓寒いけど、頑張 ってね(# ̄З ̄)

Slide 11

Slide 11 text

例 -2 -p(max3)で句読点の量を指定可能 -e で絵文字の量を指定可能 $ ojichat -p 3 オレとオマエと大五郎 オレと、オマエと、大五郎チャン、オッハー❗(^_^)オレと、オマエと 、大五郎チャンにとって、素 敵な、1日に、なります、ようニ $ ojichat -e 10 おはよー、!チュッ☀ ❗(^з<) $ ojichat -e 0 ヤッホー。はなみちゃん、元気かな。はなみちゃんにとって素敵な1日になりますようニ。

Slide 12

Slide 12 text

移植するぞー

Slide 13

Slide 13 text

移植の条件として設定したもの 1. 極力オリジナルと同じ挙動をすること (名前・絵文字数・句読点数を指定できる) 2. 外部ライブラリとして利用できるように Jarにパッケージングする 3. 標準ライブラリと同様に利用できること (Mathクラスみたいな感じ)

Slide 14

Slide 14 text

ojichatの処理フロー-1 1. ONARA(Ojisan NArikiri Randomized Algorithm : おじさんなりきり乱択アルゴリズム)からパターンを選択 今回はGR(Greeding/Reporting)パターンを選択

Slide 15

Slide 15 text

ojichatの処理フロー-2 2.パターンに沿って 文を生成する {TARGET_NAME}、オハヨー{EMOJI_POS} そういえば、昨日は例の{RESTAURANT}に行って きたよ。結構いい雰囲気だったから、オススメだよ {EMOJI_POS} タグ ● {TARGET_NAME} ● {FIRST_PERSON} ● {DAY_OF_WEEK} ● {RESTAURANT} ● {NANCHATTE} など…

Slide 16

Slide 16 text

ojichatの処理フロー-3 3.{タグ}を置換する(絵文字は指定数繰り返し) 〇〇チャン、オハヨー♥(^o^) そういえば、昨日は例のイタリアンに行ってきた よ。結構いい雰囲気だったから、オススメだよ ✋ 完了

Slide 17

Slide 17 text

移植中に困ったところ 1.初見Go言語 → 仕方ない 2.同じライブラリが無い → 他で代用 3.形態素解析してるってまじ? 4.カタカナ活用

Slide 18

Slide 18 text

形態素解析してるってまじ? 生成された文へパラメータをもとに句読点の追加を行う 図.ふと我に返ったときのつぶやき 句読点挿入 終了:4時半頃 試験監督まで、5時間半 図.おじさん文がTokenizeされる様子 (オリジナルより) さらに、助詞(+助動詞)のあとに読点を追加 より“おじさん”らしくなる...らしい

Slide 19

Slide 19 text

カタカナ活用-1 語尾を最大2文字までカタカナにする “おじさんカタカナ活用” を適用(挨拶の感情以外) より“おじさん”らしくなる...らしい(天丼) 図.“おじさんカタカナ活用” が適応される様子 (オリジナルより)

Slide 20

Slide 20 text

カタカナ活用-2 オリジナルは正規表現を用いて検出・置換 カタカナ活用完了:6時半頃 試験監督まで、3時間半 正規表現 なにそれおいしいの? 脳筋置換じゃい 正規表現 頑張って勉強します…

Slide 21

Slide 21 text

なんやかんやあって…

Slide 22

Slide 22 text

できらぁ!!(歓喜) 図.Intellij IDEA上でのテスト時のSC 移植(仮)完了:7時頃 試験監督まで、3時間

Slide 23

Slide 23 text

地獄と化したDiscord鯖 遊ぶ処理研民たち (Discordより抜粋) BOTに実装(終):8時頃 試験監督まで、2時間 図らずもORA (Ojichat Reflection Attack) に成功した処理研民

Slide 24

Slide 24 text

満足だろうな!ガトー! だが・・・ 阿鼻叫喚のDiscord鯖 ぼく「満足じゃ」 その後の起床:11時半頃 試験監督まで、-1時間半(遅刻) そのまま意識が遠くへ…… zzz

Slide 25

Slide 25 text

まとめ 大事な予定の前は、 アホなことしてないで、ちゃんと寝よう!

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

まとめ 1.一応遊べるレベルまで移植することができた 2.形態素解析 →句読点挿入が不自然(同じIPADicのはずなのだが...) 3.カタカナ活用が一部機能していない → 文末から遡る文字数設定のミス(12:30頃修正) 後々不具合修正&Githubで公開(許されれば)

Slide 28

Slide 28 text

謝辞 ojichat開発者 greymd様 資料中の例文・GolangのSCはすべて Github上(https://github.com/greymd/ojichat) から勝手にお借りしました。申し訳ありません。 本当にありがとうございましたm(_ _)m