Upgrade to Pro — share decks privately, control downloads, hide ads and more …

文字列(ダジャレを言いシャレ)

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for vaaaaanquish vaaaaanquish
December 08, 2020

 文字列(ダジャレを言いシャレ)

エムスリー社内でのLTで文字列について話したスライド

Avatar for vaaaaanquish

vaaaaanquish

December 08, 2020
Tweet

More Decks by vaaaaanquish

Other Decks in Technology

Transcript

  1. データはどこで得た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 より抜粋
  2. クロールする玄人wwwwwww • クローラ及び、関連研究をOSSとして公開 ◦ https://github.com/vaaaaanquish/dajare-python ◦ time.sleepによる厳しめの調整 ◦ 論文内のサイト以外からもクロール先を追加 ▪

    社内Slackなど ▪ 合計12万件のダジャレデータを所持 ▪ 多分日本で一番持ってる ◦ データをノーマライズして Driveに設置しました ▪ 社外への持ち出し厳禁でお願いします
  3. 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)
  4. indexingを考えればいいんでっくすwwwww • ダジャレの面白さを考慮したスコアリングを考える ◦ 単語、単語の一部が被っている  → 一般的なmatch, fuzziness ◦ 音が同じである → 文章をヘボン式ローマ字に変換して index

    ◦ 近い意味の単語で作られている  → ES 7.3から追加されたvector feildをindexしcosine距離 ▪ 複合的に含まれていれば高いスコアとなるよう boost, weightを調整する 駄洒落の面白さにおける要因の分析 , An Analysis of Factors of Funniness of Japanese Puns, 谷津, 荒木, 2016 日本知能情報ファジィ学会 より
  5. 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
  6. 駄率wwwww • Slackへの投稿をqueryとしtop10以内の結果から良さげな回答を選んで返す • challengeした数:10 ◦ :da: が付いた数:7 ◦ しーきび:2 ◦

    Iwasa method:1 参考:皆に優しいダジャレ評価フローとリアクション(一部) すごい回答の例 vector検索で「ケーブル」関連語として 「故障」があがる
  7. 今後の改善点 • 「Docker」「JIS」「Jenkins」「Jira」「CI/CD」など  英語、技術用語に対応したダジャレがデータベース上にない ◦ ローマ字変換を試みたが、オノマトペ難しい • Elasticsearchをどう管理するか ◦ Elasticsearch

    docker-composeを使っておりローカルマシンが重くて仕事にならない • End2Endなモデルの作成 ◦ 大きなMLモデルは事前学習モデルが基本自然文で学習されているため唐突な遷移が難しい ▪ 今後のfeature worksとしたい