Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OSSかな漢字変換『Egoistic Lily』の紹介&今後の展望

281 views

Published on

IM飲み会2019で紹介したスライドです。
KOFのスライドよりやや高度な内容…?

Published in: Technology
  • Be the first to comment

OSSかな漢字変換『Egoistic Lily』の紹介&今後の展望

  1. 1. OSSかな漢字変換 『Egoistic Lily』 の紹介 & 今後の展望 はしもとまさひこ@おーぷん万葉 feat.XDDC IM飲み会 2019 2019/12/28
  2. 2. 2019/12/28OSSかな漢字変換『Egoistic Lily』 2/24 自己紹介 Name: はしもとまさ(または鹿) Twitter: @shikanotsukimi ● 東海道らぐ (Tokaido Liuxn Uesr Gruop) ● おーぷん万葉プロジェクト オープンデータを使用したかな漢字変換の自作など ● ちびぎーこ保護者会(別名:日本openSUSEユーザ会) ● 仕事は自然言語処理界隈では(たぶん)ない人
  3. 3. 2019/12/28OSSかな漢字変換『Egoistic Lily』 3/24 『XDDC』とは 正式名称: 『Cross Distribution Developers Camp』 Linuxディストリビューションの枠を超えて 各個撃破…じゃなかった、課題解決しよう!という集まり 参加Linuxディストリビューション – Debian – openSUSE – Ubuntu
  4. 4. 2019/12/28OSSかな漢字変換『Egoistic Lily』 4/24 今日のお話 DNNを使用したOSS新かな漢字変換 『Egoistic Lily』のお話です ※XDDCの課題のひとつ = かな漢字変換
  5. 5. 2019/12/28OSSかな漢字変換『Egoistic Lily』 5/24 ※おさらい Mozc 〜 Since 2010 〜 Google日本語入力のオープンソース版 現在のLinuxデフォルトといえばほぼこれ! – Ubuntu、Debian、openSUSE… – 例外: RedHat系(Fedora、CentOS) Mecab と似たアルゴリズム…?
  6. 6. 2019/12/28OSSかな漢字変換『Egoistic Lily』 6/24 Mozcの問題点 ● 現在開発が停止してしまっている… – 例えば『令和』 この単語を追加するのに 各ディストリビューション毎に対応する必要が 発生してしまっている状況 (Debian, Ubuntu, openSUSE...) – 連接コストについては『平成』からの丸パクリ対応 – 但し、単語生起コストについては適当な値を入れるしかない ※コーパスを使用しているわけではない
  7. 7. 2019/12/28OSSかな漢字変換『Egoistic Lily』 7/24 そしたらよく言われるの…… AIでなんとか ごにょごにょすればいいじゃん!! これ仕事してるとよく言われるやつ…
  8. 8. 2019/12/28OSSかな漢字変換『Egoistic Lily』 8/24 が。 『Egoistic Lily』は 本当にDNNでどうにかしてしまいました 注:RNNではありません
  9. 9. 2019/12/28OSSかな漢字変換『Egoistic Lily』 9/24 使用しているモデル = AutoEncoder 入力をエンコードして、特徴抽出した後 デコードしてデータを復元し、入力値と比較する ⇛きちんと復元できればそれって異常なし! 異常検知などでわりとどこでも使われてる一般的なモデルですね 入力 出力 特徴抽出 二乗誤差を算出して 誤差が大きい 異常度が高い⇛
  10. 10. 2019/12/28OSSかな漢字変換『Egoistic Lily』 10/24 異常度が高い日本語って? 「私の名前は中野です」=正常 「私が名前は中野です」=異常 何故これが異常と言えるのか?
  11. 11. 2019/12/28OSSかな漢字変換『Egoistic Lily』 11/24 係り受けの関係に着目 ● 「私 / の / 名前」 ⇛「私」が「名前」に係っている  「私」と「名前」という単語を「の」が結んでいる ● 「私 / が / 名前」 ⇛「私」が「名前」に係っていない  上記の3単語は関連性がない つまり、3単語をペアにして、正常か否かを学習させてみる
  12. 12. 2019/12/28OSSかな漢字変換『Egoistic Lily』 12/24 とりあえずの実装(1) 1.係り受けで紐づく3単語をセットにして抽出 ⇛それぞれの単語に16bitの乱数を設定 ⇛16列のベクトル(0 or 1)に変換して  3単語 × 16bit = 48列をひとつの学習データとする 1 0 0 1 …… 1 0 1 1 1 …… 0 1 1 1 0 …… 0 私 の 名前 合計48bitの 0 or 1 をAutoEncoderの入力へ 単語ごとに テキトーな乱数を 16bit化
  13. 13. 2019/12/28OSSかな漢字変換『Egoistic Lily』 13/24 とりあえずの実装(2)←あくまでとりあえずなので!! 2.AutoEncoderで学習させて出力として出てきたベクトルを   次回学習時の入力として使用する ※平均をとり、平均以上の値を “1”、そうでなければ “0” として  再度16bitの値へ変換する(ひとまずこれで!!) 入力 出力 48bitの 0 or 1 の行列 48個の float型 の配列 Auto Encoder 配列の平均を取り 0 or 1 の行列へ 変換 再び入力へ
  14. 14. 2019/12/28OSSかな漢字変換『Egoistic Lily』 14/24 とりあえずの実装(3) ※補足編 実際はこれを一つの正常データとして学習してます 01…000…010…0 1 0 0 1 …… 1 0010000 係り受け解析から得た 単語ベクトル 単語の品詞情報 ※one-hot 名前のの私 直前の単語係り元文節 の付属部 係り元文節 の自立部 これを正常データとして学習 ⇛学習&変換に使用します Mozcでいうところの連接コストをDNNで求めるイメージ ⇛最終的にはコスト最小法で変換を行います
  15. 15. 2019/12/28OSSかな漢字変換『Egoistic Lily』 15/24 とりあえずの実装(4) ※補足編 実際の変換の肝となる部分 01…000…010…0 1 0 0 1 …… 1 0010000 係り受け解析から得た 単語ベクトル 単語の品詞情報 ※one-hot 名前のの私 直前の単語係り元文節 の付属部 係り元文節 の自立部 この部分だけを見れば 従来の単語N-gramの変換をDNNで求めてるとも 言えますね
  16. 16. 2019/12/28OSSかな漢字変換『Egoistic Lily』 16/24 『Egoistic Lily』…その実態は? Mozcのコスト最小法 + 単語bi-gramによるかな漢字変換 をAutoEncoderを用いて実装した形
  17. 17. 2019/12/28OSSかな漢字変換『Egoistic Lily』 17/24 その特徴は? ● RNNよりは学習速度が速い……と思う ● 新単語は品詞情報さえあればそこそこ変換可能 ● 現状、単語生起コストというものが存在しない – 『大阪』と『大坂』の区別不可! ● 事前アノテーションがめっちゃしんどい!! – 現在はKNPを使用(←係り受けを行っているため)
  18. 18. 2019/12/28OSSかな漢字変換『Egoistic Lily』 18/24 ところで…… ここにいる皆さんならツッコミたいところが 少なからずあったはず!! その中で一番ツッコみたい箇所といえば?
  19. 19. 2019/12/28OSSかな漢字変換『Egoistic Lily』 19/24 きっとココだ!!! 1.係り受けで紐づく3単語をセットにして抽出 ⇛それぞれの単語に16bitの乱数を設定 ⇛16列のベクトル(0 or 1)に変換して  3単語 × 16bit = 48列をひとつの学習データとする 1 0 0 1 …… 1 0 1 1 1 …… 0 1 1 1 0 …… 0 私 の 名前 合計48bitの 0 or 1 をAutoEncoderの入力へ きっとココ!
  20. 20. 2019/12/28OSSかな漢字変換『Egoistic Lily』 20/24 ここってそれこそ純粋に… それこそ Word2Vec とか BERT とかを 使えばいいんじゃないの!?
  21. 21. 2019/12/28OSSかな漢字変換『Egoistic Lily』 21/24 悩ましいところ… そのモデル、OSSとして配布しやすい形か? ※主にファイルサイズ的に 正直AutoEncoder程度ならまぁ〜……
  22. 22. 2019/12/28OSSかな漢字変換『Egoistic Lily』 22/24 ただし、、、 試してみる価値はありそうなので やってみよう! とは思います。(来年)
  23. 23. 2019/12/28OSSかな漢字変換『Egoistic Lily』 23/24 今後のToDo ● TensorFlowからPyTorchへ移植 – TensorFlow2.0になってから pipのバージョンを上げる必要があるため 『u』で始まるディストリビューション関係者からクレームがw ● 辞書にNEologdを使用したい!! – ただし、現在使用しているのはKNP……orz ● 単語生起コストも実装しないと – FineTuningでなんとかなる……かな? – 『自分でコーパスからモデルを作りたい』という人も…本当にいる? ● 深層学習っぽいことをしたい!←ぉ
  24. 24. 2019/12/28OSSかな漢字変換『Egoistic Lily』 24/24 ご清聴、ありがとうございましたm(_ _)m

×