Slide 1

Slide 1 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 1/31 顔文字を 顔文字を 3万個集める技術 3万個集める技術 永和亭 色箱 @color_box

Slide 2

Slide 2 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 2/31 気をつけよう 気をつけよう 夏の暑さと 夏の暑さと 並列処理 並列処理 色箱

Slide 3

Slide 3 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 3/31 集めた顔文字 集めた顔文字

Slide 4

Slide 4 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 4/31

Slide 5

Slide 5 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 5/31 動機 動機 知らないもののことを知りたいし集めたい 収集用のアプリ作成がおもしろそう

Slide 6

Slide 6 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 6/31 結果 結果 約60万の顔文字を収集完了 約60万の顔文字を収集完了 ノイズ、重複除去で5%程度残ると推定 ノイズ、重複除去で5%程度残ると推定

Slide 7

Slide 7 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 7/31 約3万 約3万 の顔文字を収集 の顔文字を収集 (・3・)b

Slide 8

Slide 8 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 8/31 集め方 集め方 1. ツイートを集める 2. ツイートから顔文字を抽出する ( ‘ᾥ’ )シンプル

Slide 9

Slide 9 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 9/31 Twitter Twitterからツイートを集める からツイートを集める

Slide 10

Slide 10 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 10/31 ユーザーの収集 ユーザーの収集 顔文字紹介アカウントのフォロワー 顔文字紹介アカウントのフォロワー 顔文字使用頻度の高いアカウントのフォロワー 顔文字使用頻度の高いアカウントのフォロワー 顔文字利用者を中心にユーザー収集 ツイートに顔文字が現れる確率が高そう

Slide 11

Slide 11 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 11/31 ユーザーからツイート収集 ユーザーからツイート収集 Twitter APIの制約を守りつつ収集用のtaskを回す Parallel gem で並列高速化 ( ^ω^ 三 ^ω^ )ヒュンヒュン

Slide 12

Slide 12 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 12/31

Slide 13

Slide 13 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 13/31

Slide 14

Slide 14 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 14/31 暑さと並列実行にCPUがやられ 暑さと並列実行にCPUがやられ る る 全CPUを並列実行で酷使すると 電源につないでいてもMBPのバッテリーが減る ( ᾥ )

Slide 15

Slide 15 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 15/31 データが吹っ飛ぶ データが吹っ飛ぶ CPUを酷使したせいかmacが吹っ飛ぶ ついでにSQLiteも吹っ飛ぶ バックアップは大事 \(^o^)/オワタ

Slide 16

Slide 16 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 16/31 ツイートから顔文字を抽出 ツイートから顔文字を抽出

Slide 17

Slide 17 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 17/31 難航 難航 顔文字の定義が曖昧 適切な抽出ルールづくりが難しい

Slide 18

Slide 18 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 18/31 顔文字に関する論文 顔文字に関する論文 ググって見つけた論文を元にルール作成 Unicodeプロパティによる判別 完璧ではないのでノイズフィルタが必要

Slide 19

Slide 19 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 19/31 抽出ロジックはgem化 colobox/kaomoji

Slide 20

Slide 20 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 20/31 Usage Kaomoji.get_kaomoji_parts('(・3・)\(^o^)/ぷにう') =>["(・3・)\(^o^)/"]

Slide 21

Slide 21 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 21/31 フィルタ成功例 str = "聴きながら歌うから(*˘ᗜ˘*).。.:*" Kaomoji.get_kaomoji_parts(str) =>["(*˘ᗜ˘*).。.:*"] str = "失敗しました_(:3 」∠)_ ハルかわいい(」’ω’)」オォオォオ!!!ウウゥゥアアォオ!! Kaomoji.get_kaomoji_parts(str) =>["_(:3 」∠)_ ハル", "(」’ω’)」オォオォオ!!!ウウゥゥアアォオ!!!!!!"]

Slide 22

Slide 22 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 22/31 フィルタ失敗例 str = "ザ・下町!!という感じが伝わってきました(≧∀≦)" Kaomoji.get_kaomoji_parts(str) =>["ザ・下町!!", "(≧∀≦)"] str = "それは強いですが、また、悩ましいですね" Kaomoji.get_kaomoji_parts(str) =>["、また、"] str = "中高は行って良かったと思ってる(適当)" Kaomoji.get_kaomoji_parts(str) =>["(適当)"]

Slide 23

Slide 23 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 23/31 ノイズデータのフィルタ ノイズデータのフィルタ カッコが含まれていない 改行コードが含まれる 明らかにURLの一部 文字列長が極端に短い などの条件でフィルタ 顔文字の確度を上げる

Slide 24

Slide 24 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 24/31 集めたデータ数 集めたデータ数

Slide 25

Slide 25 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 25/31 ユーザー数 ユーザー数 19,000 19,000

Slide 26

Slide 26 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 26/31 ツイート数 ツイート数 40,000,000 40,000,000

Slide 27

Slide 27 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 27/31 抽出した顔文字 抽出した顔文字 11,000,000 11,000,000

Slide 28

Slide 28 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 28/31 フィルタにより選別された数 フィルタにより選別された数 630,000 630,000

Slide 29

Slide 29 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 29/31 顔文字数 顔文字数 重複、ノイズを除いておおよそ 30,000 30,000 ─=≡Σ((( ╹ω╹)

Slide 30

Slide 30 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 30/31 今後 今後 フィルタリングの確度向上 顔文字カタログでも作って公開(するかも)

Slide 31

Slide 31 text

6/8/2019 Slides localhost:10000/?print-pdf#/ 31/31 まとめ まとめ 大量データ収集楽しい 大量データ収集楽しい L('ω')┘三└('ω')」 L('ω')┘三└('ω')」 古いものには研究と論文があ 古いものには研究と論文があ り、読むと捗る り、読むと捗る 気をつけよう 夏の暑さと 並列 気をつけよう 夏の暑さと 並列 処理 処理