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
文字列(ダジャレを言いシャレ)
Search
vaaaaanquish
December 08, 2020
Technology
1
16k
文字列(ダジャレを言いシャレ)
エムスリー社内でのLTで文字列について話したスライド
vaaaaanquish
December 08, 2020
Tweet
Share
More Decks by vaaaaanquish
See All by vaaaaanquish
エムスリー流!難読クイズを作ってPythonの深淵に触れるコツ! - 技育CAMPアカデミア
vaaaaanquish
0
160
pandasはPolarsに性能面で追いつき追い越せるのか
vaaaaanquish
6
5.5k
Pythonのパッケージ管理の中級者の壁を超える stapy#98
vaaaaanquish
18
20k
Tech LT #4 人を選ぶ技術
vaaaaanquish
3
4.1k
CADDi AI LabにおけるマネージドなMLOps
vaaaaanquish
2
3.4k
RustとCADDi AI LabとML
vaaaaanquish
1
960
機械学習OSSの変遷と未来
vaaaaanquish
2
3.8k
xonshとかいうshellの話
vaaaaanquish
1
1.8k
gokartの運用と課題について
vaaaaanquish
5
14k
Other Decks in Technology
See All in Technology
Opcodeを読んでいたら何故かphp-srcを読んでいた話
murashotaro
0
230
kargoの魅力について伝える
magisystem0408
0
210
非機能品質を作り込むための実践アーキテクチャ
knih
5
1.2k
WACATE2024冬セッション資料(ユーザビリティ)
scarletplover
0
200
Postman と API セキュリティ / Postman and API Security
yokawasa
0
200
[Ruby] Develop a Morse Code Learning Gem & Beep from Strings
oguressive
1
160
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
2
110
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
300
Storage Browser for Amazon S3
miu_crescent
1
140
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
3
2.3k
Oracle Cloudの生成AIサービスって実際どこまで使えるの? エンジニア目線で試してみた
minorun365
PRO
4
280
生成AIのガバナンスの全体像と現実解
fnifni
1
190
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
A Modern Web Designer's Workflow
chriscoyier
693
190k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.1k
Designing for humans not robots
tammielis
250
25k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Site-Speed That Sticks
csswizardry
2
190
The Pragmatic Product Professional
lauravandoore
32
6.3k
Done Done
chrislema
181
16k
Transcript
文字列 AIチーム 河合
河合 俊典 • AIチーム • Twitter: @vaaaaanquish • 3度の飯よりTwitterが好き
あたまのおかしい回だ・・・ 参加しなきゃ・・・
文字列・・・文字列・・・
モジモジしてないで 好きな文字列の話を せんかーい!! ※ 社外の@_329_さんのプライバシー保護のため一部画像を加工しています
ダジャレを言いなシャレ AIチーム 河合
調査をする俺は慎重さwwwww • 駄洒落をテーマとしたAI関連研究 ◦ 駄洒落の検出、評価 ◦ データベースの構築 ◦ 面白さの分析 ◦
生成 ◦ 対話 https://github.com/vaaaaanquish/dajare-pythonより
ダジャレを研究してるのはダレじゃwwwwww • 北海道大学・荒木健治 教授が第一人者(多分) ◦ 多く論文がこの荒木研から出ている https://www.ist.hokudai.ac.jp/netjournal/net_31_1.html より引用
データはどこで得たwwwwwwww 駄洒落データベースの構築及び分析 , Construction and Analysis of Pun Database in
Japanese, 荒木 健治, Kenji Araki, 人工知能学会 2018 より引用 データセットは HPより申請する事で研究用途でのみ共有されるとのこと • ダジャレナビ ◦ 『アタマがめざめる! なぞなぞ脳活 (かんき出版,2016)』等を執筆した ながれおとや氏が運営 • ダジャレステーション ◦ 福井県のWeb制作会社 cheltenham software(チェルトナム・ソフトウェア)が作成 ◦ 6万5千件のデータがあるとされる https://kanki-pub.co.jp/pub/author/details/1004 より抜粋
クロールする玄人wwwwwww • クローラ及び、関連研究をOSSとして公開 ◦ https://github.com/vaaaaanquish/dajare-python ◦ time.sleepによる厳しめの調整 ◦ 論文内のサイト以外からもクロール先を追加 ▪
社内Slackなど ▪ 合計12万件のダジャレデータを所持 ▪ 多分日本で一番持ってる ◦ データをノーマライズして Driveに設置しました ▪ 社外への持ち出し厳禁でお願いします
マルコフ連鎖が惜しかった未練さwwwww • 最もシンプルに思い付くマルコフ連鎖を試す(意外と既存研究がない) ◦ ダジャレは言葉同士の確率過程から作成できるだろうという仮説 ◦ GiNZAで形態素解析して計算 ◦ Google Colabで計算済みモデルをロードして今すぐ遊べます
▪ https://~~~~(社内のみ) 概ね勢いがあって面白い
BERTでバーッと生成wwwwwwww • BERTとは ◦ Pre-training of Deep Bidirectional Transformers for
Language Understanding, Devlin, J. et al. (2018, Google) ◦ 何がすごい? ▪ 自然言語処理における分類、対話、翻訳 …など全てのタスクに応用しても精度が出る ▪ 行列積くらいしか複雑な処理がなく学習時にリソースをフル活用できる ◦ 何故すごい? ▪ Transformerがすごい ▪ 双方向Transformerの学習法がすごい • 普通にやると学習が収束しないのでゴリゴリにノウハウを付与 + 問題設計を工夫 word2vec (2016, Google) Transformar (2017, Google) fasttext, rcnn, attentionを経て… 拡張 BERT (2018, Google)
BERTでバーッと生成wwwwwwww • BERTで文章生成タスクを解く ◦ ベースとして京大 黒橋・河原研究室 が公開する日本語学習済みモデルを使う ▪ 一般的に0からの学習はリソースが必要なので「転移学習」という手法を利用する ◦
Google Colabで計算済みモデルをロードして今すぐ遊べます ▪ https://~~~ (社内のみ) 色々チューニングしてみたがダメそうな例
何で上手くいかないんだろう … データも十分あるはずだし … ベースかタスク設計が悪いのか … もしかしてバグか…?
バグを疑わず もっと基本に バックせんかーい!! ※ 社外の@_329_さんのプライバシー保護のため一部画像を加工しています
Elasticsearchにindexingすればいいんでっくすww • データが大規模かつスパース ◦ queryに対して近いダジャレを引く所から始めてみる ▪ 検索によるダジャレ生成サポート → 対話における正解データの収集 → 対話タスクと捉えて ▪
Indexingの仕方を考える必要がある query: 蜜柑食べたいな result: みつかんないんですか?
indexingを考えればいいんでっくすwwwww • ダジャレの面白さを考慮したスコアリングを考える ◦ 単語、単語の一部が被っている → 一般的なmatch, fuzziness ◦ 音が同じである → 文章をヘボン式ローマ字に変換して index
◦ 近い意味の単語で作られている → ES 7.3から追加されたvector feildをindexしcosine距離 ▪ 複合的に含まれていれば高いスコアとなるよう boost, weightを調整する 駄洒落の面白さにおける要因の分析 , An Analysis of Factors of Funniness of Japanese Puns, 谷津, 荒木, 2016 日本知能情報ファジィ学会 より
embeddingを確認すればいいんでっくすwwww 食べ物のダジャレが集まる例
indexをつくればいいんでっくすwwwwwww {"query": { "bool": { "should": [ {"match":{ "roman": {
"query": qr, "fuzziness": "AUTO" }}}, {"match":{ "body": { "query": q, "fuzziness" : "AUTO", "boost":100 }}}, {"match":{ "vec": { "query": qev }}}]}}} + score function ... "tokenizer": { "normal_tokenizer": { "type": "kuromoji_tokenizer", "mode": "normal"} }, "analyzer": { "normal_analyzer": { "type": "custom", "tokenizer": "kuromoji_tokenizer", "filter":[ "trim", "kuromoji_stemmer", "ja_pos_meishi_filter" ]}}}}, "mappings": { "dynamic": "strict", "properties": { "body": { "type": "text", "analyzer": "normal_analyzer", "search_analyzer": "normal_analyzer", "term_vector" : "with_positions_offsets" }, "roman": { "type": "text"}}, "vec": {"type": "vector"}}} 検索 index
検索だけに幸ありwwwwwwwwwww fuzzy、vector検索によって 吉野家、松山などが引けている (上手いダジャレの返しができそう)
運用するうんようwwwwwwwwww • 2020/06/22 (月) 各位のtimelineでオンラインテスト
駄率wwwww • Slackへの投稿をqueryとしtop10以内の結果から良さげな回答を選んで返す • challengeした数:10 ◦ :da: が付いた数:7 ◦ しーきび:2 ◦
Iwasa method:1 参考:皆に優しいダジャレ評価フローとリアクション(一部) すごい回答の例 vector検索で「ケーブル」関連語として 「故障」があがる
検索すれば幸になるのか • 検索によるサポートで誰でも :da: が取得できる ◦ ESのvector検索、ローマ字検索の queryの重みを変更する事で、 誰でも簡単に、好きな面白い方向性でダジャレを検索、投稿できる ◦
果たしてその :da: に価値はあるのかという議論は別途ある ▪ 敷居を下げる十分な効果がある • 難しい例も存在する 利用困難な例
今後の改善点 • 「Docker」「JIS」「Jenkins」「Jira」「CI/CD」など 英語、技術用語に対応したダジャレがデータベース上にない ◦ ローマ字変換を試みたが、オノマトペ難しい • Elasticsearchをどう管理するか ◦ Elasticsearch
docker-composeを使っておりローカルマシンが重くて仕事にならない • End2Endなモデルの作成 ◦ 大きなMLモデルは事前学習モデルが基本自然文で学習されているため唐突な遷移が難しい ▪ 今後のfeature worksとしたい
華金だから もうおしごとは できんよう〜〜w ※ 社外の@_329_さんのプライバシー保護のため一部画像を加工しています