Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
顔文字を3万個集める技術/kaomoji_over_30_thousand
Search
color_box
June 08, 2019
Technology
1
2k
顔文字を3万個集める技術/kaomoji_over_30_thousand
顔文字を集める話をしました。
名古屋Ruby会議04で使用したスライドです。
color_box
June 08, 2019
Tweet
Share
More Decks by color_box
See All by color_box
バグから生まれたgem太郎
colorbox
0
110
108-days-project
colorbox
1
1.1k
永和システムマネジメントのご紹介/introducing esm
colorbox
0
380
Kataの作り方 / how to make Kata
colorbox
3
420
『esmメンバーの関心事_開発手法と開発環境編』/esm_member_concern.pdf
colorbox
0
420
2018オブラブカレンダー配布会
colorbox
0
1.1k
関数型言語と私/function-and-me
colorbox
0
210
1人開発体制からチーム開発体制移行時にやることやったこと+α
colorbox
0
980
Other Decks in Technology
See All in Technology
障害対応指揮の意思決定と情報共有における価値観 / Waroom Meetup #2
arthur1
5
490
アジャイルチームがらしさを発揮するための目標づくり / Making the goal and enabling the team
kakehashi
3
150
Application Development WG Intro at AppDeveloperCon
salaboy
0
200
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
1k
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
190
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
200
CDCL による厳密解法を採用した MILP ソルバー
imai448
3
170
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
950
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
390
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
120
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
10
1.2k
Featured
See All Featured
The Invisible Side of Design
smashingmag
298
50k
Statistics for Hackers
jakevdp
796
220k
KATA
mclloyd
29
14k
Done Done
chrislema
181
16k
The World Runs on Bad Software
bkeepers
PRO
65
11k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Music & Morning Musume
bryan
46
6.2k
Teambox: Starting and Learning
jrom
133
8.8k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Building Your Own Lightsaber
phodgson
103
6.1k
GraphQLとの向き合い方2022年版
quramy
43
13k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Transcript
6/8/2019 Slides localhost:10000/?print-pdf#/ 1/31 顔文字を 顔文字を 3万個集める技術 3万個集める技術 永和亭 色箱
@color_box
6/8/2019 Slides localhost:10000/?print-pdf#/ 2/31 気をつけよう 気をつけよう 夏の暑さと 夏の暑さと 並列処理 並列処理
色箱
6/8/2019 Slides localhost:10000/?print-pdf#/ 3/31 集めた顔文字 集めた顔文字
6/8/2019 Slides localhost:10000/?print-pdf#/ 4/31
6/8/2019 Slides localhost:10000/?print-pdf#/ 5/31 動機 動機 知らないもののことを知りたいし集めたい 収集用のアプリ作成がおもしろそう
6/8/2019 Slides localhost:10000/?print-pdf#/ 6/31 結果 結果 約60万の顔文字を収集完了 約60万の顔文字を収集完了 ノイズ、重複除去で5%程度残ると推定 ノイズ、重複除去で5%程度残ると推定
6/8/2019 Slides localhost:10000/?print-pdf#/ 7/31 約3万 約3万 の顔文字を収集 の顔文字を収集 (・3・)b
6/8/2019 Slides localhost:10000/?print-pdf#/ 8/31 集め方 集め方 1. ツイートを集める 2. ツイートから顔文字を抽出する
( ‘ᾥ’ )シンプル
6/8/2019 Slides localhost:10000/?print-pdf#/ 9/31 Twitter Twitterからツイートを集める からツイートを集める
6/8/2019 Slides localhost:10000/?print-pdf#/ 10/31 ユーザーの収集 ユーザーの収集 顔文字紹介アカウントのフォロワー 顔文字紹介アカウントのフォロワー 顔文字使用頻度の高いアカウントのフォロワー 顔文字使用頻度の高いアカウントのフォロワー
顔文字利用者を中心にユーザー収集 ツイートに顔文字が現れる確率が高そう
6/8/2019 Slides localhost:10000/?print-pdf#/ 11/31 ユーザーからツイート収集 ユーザーからツイート収集 Twitter APIの制約を守りつつ収集用のtaskを回す Parallel gem
で並列高速化 ( ^ω^ 三 ^ω^ )ヒュンヒュン
6/8/2019 Slides localhost:10000/?print-pdf#/ 12/31
6/8/2019 Slides localhost:10000/?print-pdf#/ 13/31
6/8/2019 Slides localhost:10000/?print-pdf#/ 14/31 暑さと並列実行にCPUがやられ 暑さと並列実行にCPUがやられ る る 全CPUを並列実行で酷使すると 電源につないでいてもMBPのバッテリーが減る
( ᾥ )
6/8/2019 Slides localhost:10000/?print-pdf#/ 15/31 データが吹っ飛ぶ データが吹っ飛ぶ CPUを酷使したせいかmacが吹っ飛ぶ ついでにSQLiteも吹っ飛ぶ バックアップは大事 \(^o^)/オワタ
6/8/2019 Slides localhost:10000/?print-pdf#/ 16/31 ツイートから顔文字を抽出 ツイートから顔文字を抽出
6/8/2019 Slides localhost:10000/?print-pdf#/ 17/31 難航 難航 顔文字の定義が曖昧 適切な抽出ルールづくりが難しい
6/8/2019 Slides localhost:10000/?print-pdf#/ 18/31 顔文字に関する論文 顔文字に関する論文 ググって見つけた論文を元にルール作成 Unicodeプロパティによる判別 完璧ではないのでノイズフィルタが必要
6/8/2019 Slides localhost:10000/?print-pdf#/ 19/31 抽出ロジックはgem化 colobox/kaomoji
6/8/2019 Slides localhost:10000/?print-pdf#/ 20/31 Usage Kaomoji.get_kaomoji_parts('(・3・)\(^o^)/ぷにう') =>["(・3・)\(^o^)/"]
6/8/2019 Slides localhost:10000/?print-pdf#/ 21/31 フィルタ成功例 str = "聴きながら歌うから(*˘ᗜ˘*).。.:*" Kaomoji.get_kaomoji_parts(str) =>["(*˘ᗜ˘*).。.:*"]
str = "失敗しました_(:3 」∠)_ ハルかわいい(」’ω’)」オォオォオ!!!ウウゥゥアアォオ!! Kaomoji.get_kaomoji_parts(str) =>["_(:3 」∠)_ ハル", "(」’ω’)」オォオォオ!!!ウウゥゥアアォオ!!!!!!"]
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) =>["(適当)"]
6/8/2019 Slides localhost:10000/?print-pdf#/ 23/31 ノイズデータのフィルタ ノイズデータのフィルタ カッコが含まれていない 改行コードが含まれる 明らかにURLの一部 文字列長が極端に短い
などの条件でフィルタ 顔文字の確度を上げる
6/8/2019 Slides localhost:10000/?print-pdf#/ 24/31 集めたデータ数 集めたデータ数
6/8/2019 Slides localhost:10000/?print-pdf#/ 25/31 ユーザー数 ユーザー数 19,000 19,000
6/8/2019 Slides localhost:10000/?print-pdf#/ 26/31 ツイート数 ツイート数 40,000,000 40,000,000
6/8/2019 Slides localhost:10000/?print-pdf#/ 27/31 抽出した顔文字 抽出した顔文字 11,000,000 11,000,000
6/8/2019 Slides localhost:10000/?print-pdf#/ 28/31 フィルタにより選別された数 フィルタにより選別された数 630,000 630,000
6/8/2019 Slides localhost:10000/?print-pdf#/ 29/31 顔文字数 顔文字数 重複、ノイズを除いておおよそ 30,000 30,000 ─=≡Σ(((
╹ω╹)
6/8/2019 Slides localhost:10000/?print-pdf#/ 30/31 今後 今後 フィルタリングの確度向上 顔文字カタログでも作って公開(するかも)
6/8/2019 Slides localhost:10000/?print-pdf#/ 31/31 まとめ まとめ 大量データ収集楽しい 大量データ収集楽しい L('ω')┘三└('ω')」 L('ω')┘三└('ω')」
古いものには研究と論文があ 古いものには研究と論文があ り、読むと捗る り、読むと捗る 気をつけよう 夏の暑さと 並列 気をつけよう 夏の暑さと 並列 処理 処理