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
LLMが機械学習分野と他分野に起こしたキャズムから見極めるエンジニアの未来像
vaaaaanquish
0
81
エムスリー流!難読クイズを作ってPythonの深淵に触れるコツ! - 技育CAMPアカデミア
vaaaaanquish
1
280
pandasはPolarsに性能面で追いつき追い越せるのか
vaaaaanquish
6
6k
Pythonのパッケージ管理の中級者の壁を超える stapy#98
vaaaaanquish
19
21k
Tech LT #4 人を選ぶ技術
vaaaaanquish
3
4.4k
CADDi AI LabにおけるマネージドなMLOps
vaaaaanquish
2
3.5k
RustとCADDi AI LabとML
vaaaaanquish
1
1k
機械学習OSSの変遷と未来
vaaaaanquish
2
4.2k
xonshとかいうshellの話
vaaaaanquish
1
1.9k
Other Decks in Technology
See All in Technology
プラットフォームとしての Datadog / Datadog as Platforms
aoto
PRO
1
330
人とAIとの共創を夢見た2か月 #共創AIミートアップ / Co-Creation with Keito-chan
kondoyuko
1
690
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
17k
カンファレンスのつくりかた / The Conference Code: What Makes It All Work
tomzoh
8
920
セキュリティSaaS企業が実践するCursor運用ルールと知見 / How a Security SaaS Company Runs Cursor: Rules & Insights
tetsuzawa
0
220
プロジェクトマネジメント実践論|現役エンジニアが語る!~チームでモノづくりをする時のコツとは?~
mixi_engineers
PRO
3
180
TechBull Membersの開発進捗どうですか!?
rvirus0817
0
120
OTel meets Wasm: プラグイン機構としてのWebAssemblyから見る次世代のObservability
lycorptech_jp
PRO
1
300
テストを実施する前に考えるべきテストの話 / Thinking About Testing Before You Test
nihonbuson
PRO
13
2k
S3 Tables を図解でやさしくおさらい~基本から QuickSight 連携まで/s3-tables-illustrated-basics-quicksight
emiki
1
330
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.6k
Oracle Database オプティマイザ・ヒントの活用
oracle4engineer
PRO
1
140
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
35
2.7k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.7k
Designing Experiences People Love
moore
142
24k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Automating Front-end Workflow
addyosmani
1370
200k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
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_さんのプライバシー保護のため一部画像を加工しています