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.

Character level CNN [CNNで自然言語処理]

2,037 views

Published on

the slide for Developers Summit 2018 summer.

Published in: Science
  • Be the first to comment

Character level CNN [CNNで自然言語処理]

  1. 1. Character Level CNN
  2. 2. About Me ・大学/大学院では理論物理学の研究をしてました。   超弦理論(量子論 /素粒子論と一般相対性理論の統一を目指す学問)の研究    →10次元時空に飲み込まれそうだったので現実世界( 4次元時空)に逃げてきました。 ・シルバーエッグ テクノロジーに所属   レコメンドアルゴリズムの R&Dをやってる。         (入社時はWeb Developer) http://members.wolfram.com/jeffb/visualization/stringtheory.shtml ・趣味:プログラミングと情報幾何学 ・好きな言語: Python ・GitHub: https://github.com/Tdual
  3. 3. 誤字脱字・タイポ・変換ミスをした ことない人居ますか?
  4. 4. Q:なぜ人はそこまで必死に確認しない のか?
  5. 5. A: 読めてしまうから 私はパーテーに参かするたmeに家を早くく出まし た。 意味わかりますよね?
  6. 6. しかし、自然言語処理において誤字脱 字は大敵
  7. 7. 適切な分かち書きができない
  8. 8. むしろ、本質的に単語分割が必要では ないところでは、無理に単語に分割しな くてもいいのでは?
  9. 9. 例えば、テキスト分類問題
  10. 10. 問題設定 ネガポジ判定器を作る Amazonのカスタマーレビューを読んでそれがポジティブな内容かネガティブな内容か 判断(感情解析)    判定器 レビュー この商品は最高です! 「ポジティブ」です。 ★★★★★ 5つ星のうち5.0
  11. 11. データセット Amazonのカスタマーレビュー レビューと5段階評価 言語:日本語 合計:18052本のレビュー 5つ星 = ポジティブ 9026本 1つ星と2つ星 = ネガティブ 9026本
  12. 12. Character Level CNN ・テキスト分類をCNNでやってる。 ・文書の文字(Character)の並びしか見てない。(最小単位が文字) ・オリジナル論文   Xiang Zhang, Junbo Zhao, Yann LeCun: Character-level Convolutional Networks for Text Classification (https://arxiv.org/abs/1509.01626) だが、オリジナルのアーキテクチャでは上手くいかなかったので別のアーキテクチャ を試した。 Joshua Saxe, Konstantin Berlin: eXpose:A Character-Level Convolutional Neural Network with Embeddings For Detecting Malicious URLs, File Paths and Registry Keys(https://arxiv.org/abs/1702.08568)
  13. 13. 最小単位が文字のメリット/デメリット メリット ・前処理は文字に分割するだけ(日 本 語 の 様 な 分 か ち 書 き が 必 要 な い ) ・どんな言語(英語・日本語・中国など)にもそのまま対応できる ・誤字脱字・タイポ・変換ミスが多い文書でも有効(レビュー ,チャットなど) ・文書じゃない物にも適応できる( URL, Tex, プログラミングコードなど) ・データが多くても単語の語彙の様に次元が大きくなることはない デメリット ・単語に比べて粒度が小さいので学習に時間がかかる
  14. 14. 処理の流れ ①文字を低次元に埋め込む ②カーネルサイズが違う複数のCNNに入れて特徴を出力 ③特徴を一つに結合 ④全結合層に通して分類
  15. 15. ①文字を埋め込みむ(2) ・one-hotベクトルじゃなくて、埋め込み表現(分散表現)にしたいよね。 ・埋め込み方は?  それもニューラルネットワークに学習させよう。 ・埋め込み層を用意する 。 a b c 文字数 × 埋め込み次元 行列 埋め込み 対応する文字の行ベクトルを選んで更新する。
  16. 16. ②カーネルサイズが違う複数のCNNに入れて特徴を出力(1) filter数:256 カーネルサイズ: 1×2, 1×3, 1×4, 1×5 (stride 横1,縦1)
  17. 17. ②カーネルサイズが違う複数のCNNに入れて特徴を出力(2) this is a pen. → t h i s i s a p e n . 1×2 1×3 1×4 1×5 解釈 様々なWindowで文字のCooccurrence(共起性)を学習してる
  18. 18. ③特徴を一つに結合 & ④全結合層に通して分類
  19. 19. TensorFlowで実装
  20. 20. アーキテクチャ図 tf.nn.embedding_lookup
  21. 21. 結果 Accuracy 0.921
  22. 22. 他のモデルとの比較 Random Forest Logistic Regression CNN LSTM Char Level 0.861 0.903 0.921 0.900 Word Level 0.882 0.902 0.917 0.918 accuracy 使用したコードはここ https://github.com/Tdual/char_level_cnn
  23. 23. もっと誤字が多い場合は? 実験方法 サイコーです!今まで多くの類似商品を買っ てきましたが、これほど良いものには出会った ことありません。 これからも使い続けたいと思います (*゚▽゚*) テストデータの文章中の文字をランダムな文字に入れ替えて精度がどれくらい落ちるか検証 サイコーで★!今まで多くの ●似商品を買っ *きましたが、これほど良$ものには出会った ことあ@ません。 これからも使▽続けたいと思います (*゚▽゚*)
  24. 24. 誤字・脱字に対する強さ 変えた文字数と精度 100文字変えても精度 が0.8以上
  25. 25. word level CNNで同じことをやる 変えた文字の数と精度 50文字ですでに精度が 0.5 character level
  26. 26. まとめ ・Character level CNNは誤字脱字・タイポ・変換ミスに強い    → SNSメッセージ、チャット、レビューなど最適   (しかも分かち書き不要) ・なんでもかんでもMeCabなどで分かち書きをするのではなくて、 別の方法も検討してみる価値あり
  27. 27. Thank you!

×