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
2.1k
顔文字を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
130
108-days-project
colorbox
1
1.2k
永和システムマネジメントのご紹介/introducing esm
colorbox
0
420
Kataの作り方 / how to make Kata
colorbox
3
440
『esmメンバーの関心事_開発手法と開発環境編』/esm_member_concern.pdf
colorbox
0
440
2018オブラブカレンダー配布会
colorbox
0
1.1k
関数型言語と私/function-and-me
colorbox
0
220
1人開発体制からチーム開発体制移行時にやることやったこと+α
colorbox
0
1k
Other Decks in Technology
See All in Technology
ルートユーザーの活用と管理を徹底的に深掘る
yuobayashi
8
740
FinOps_Demo
tkhresk
0
110
20250326_管理ツールの権限管理で改善したこと
sasata299
1
600
ウォンテッドリーにおける Platform Engineering
bgpat
0
170
やさしいMCP入門
minorun365
PRO
132
76k
LINEギフトのLINEミニアプリアクセシビリティ改善事例
lycorptech_jp
PRO
0
320
SSH公開鍵認証による接続 / Connecting with SSH Public Key Authentication
kaityo256
PRO
2
250
Restarting_SRE_Road_to_SRENext_.pdf
_awache
1
220
ソフトウェアプロジェクトの成功率が上がらない原因-「社会価値を考える」ということ-
ytanaka5569
0
140
Vision Language Modelを活用した メルカリの類似画像レコメンドの性能改善
yadayuki
9
1.3k
小さく始めるDevOps 内製化支援から見えたDevOpsの始め方 / 20250317 Ken Takayanagi
shift_evolve
1
120
サーバシステムを無理なくコンテナ移行する際に伝えたい4つのポイント/Container_Happy_Migration_Method
ozawa
1
120
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
183
22k
Optimising Largest Contentful Paint
csswizardry
35
3.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Building Adaptive Systems
keathley
41
2.5k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
GitHub's CSS Performance
jonrohan
1030
460k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
How to Think Like a Performance Engineer
csswizardry
22
1.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
It's Worth the Effort
3n
184
28k
A designer walks into a library…
pauljervisheath
205
24k
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('ω')┘三└('ω')」
古いものには研究と論文があ 古いものには研究と論文があ り、読むと捗る り、読むと捗る 気をつけよう 夏の暑さと 並列 気をつけよう 夏の暑さと 並列 処理 処理