SlideShare a Scribd company logo
1 of 28
Download to read offline
Character Level CNN
About Me
・大学/大学院では理論物理学の研究をしてました。
  超弦理論(量子論 /素粒子論と一般相対性理論の統一を目指す学問)の研究
   →10次元時空に飲み込まれそうだったので現実世界( 4次元時空)に逃げてきました。
・シルバーエッグ テクノロジーに所属
  レコメンドアルゴリズムの R&Dをやってる。
        (入社時はWeb Developer)
http://members.wolfram.com/jeffb/visualization/stringtheory.shtml
・趣味:プログラミングと情報幾何学
・好きな言語: Python
・GitHub: https://github.com/Tdual
誤字脱字・タイポ・変換ミスをした
ことない人居ますか?
Q:なぜ人はそこまで必死に確認しない
のか?
A: 読めてしまうから
私はパーテーに参かするたmeに家を早くく出まし
た。
意味わかりますよね?
しかし、自然言語処理において誤字脱
字は大敵
適切な分かち書きができない
むしろ、本質的に単語分割が必要では
ないところでは、無理に単語に分割しな
くてもいいのでは?
例えば、テキスト分類問題
問題設定
ネガポジ判定器を作る
Amazonのカスタマーレビューを読んでそれがポジティブな内容かネガティブな内容か
判断(感情解析)
  
判定器
レビュー
この商品は最高です! 「ポジティブ」です。
★★★★★
5つ星のうち5.0
データセット
Amazonのカスタマーレビュー
レビューと5段階評価
言語:日本語
合計:18052本のレビュー
5つ星 = ポジティブ 9026本
1つ星と2つ星 = ネガティブ 9026本
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)
最小単位が文字のメリット/デメリット
メリット
・前処理は文字に分割するだけ(日 本 語 の 様 な 分 か ち 書 き が 必 要 な い )
・どんな言語(英語・日本語・中国など)にもそのまま対応できる
・誤字脱字・タイポ・変換ミスが多い文書でも有効(レビュー ,チャットなど)
・文書じゃない物にも適応できる( URL, Tex, プログラミングコードなど)
・データが多くても単語の語彙の様に次元が大きくなることはない
デメリット
・単語に比べて粒度が小さいので学習に時間がかかる
処理の流れ
①文字を低次元に埋め込む
②カーネルサイズが違う複数のCNNに入れて特徴を出力
③特徴を一つに結合
④全結合層に通して分類
①文字を埋め込みむ(2)
・one-hotベクトルじゃなくて、埋め込み表現(分散表現)にしたいよね。
・埋め込み方は?
 それもニューラルネットワークに学習させよう。
・埋め込み層を用意する 。
a
b
c
文字数 × 埋め込み次元 行列
埋め込み
対応する文字の行ベクトルを選んで更新する。
②カーネルサイズが違う複数のCNNに入れて特徴を出力(1)
filter数:256
カーネルサイズ:
1×2, 1×3, 1×4, 1×5
(stride 横1,縦1)
②カーネルサイズが違う複数の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(共起性)を学習してる
③特徴を一つに結合 & ④全結合層に通して分類
TensorFlowで実装
アーキテクチャ図
tf.nn.embedding_lookup
結果
Accuracy 0.921
他のモデルとの比較
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
もっと誤字が多い場合は?
実験方法
サイコーです!今まで多くの類似商品を買っ
てきましたが、これほど良いものには出会った
ことありません。
これからも使い続けたいと思います (*゚▽゚*)
テストデータの文章中の文字をランダムな文字に入れ替えて精度がどれくらい落ちるか検証
サイコーで★!今まで多くの ●似商品を買っ
*きましたが、これほど良$ものには出会った
ことあ@ません。
これからも使▽続けたいと思います (*゚▽゚*)
誤字・脱字に対する強さ
変えた文字数と精度
100文字変えても精度
が0.8以上
word level CNNで同じことをやる
変えた文字の数と精度
50文字ですでに精度が 0.5
character level
まとめ
・Character level CNNは誤字脱字・タイポ・変換ミスに強い
   → SNSメッセージ、チャット、レビューなど最適
  (しかも分かち書き不要)
・なんでもかんでもMeCabなどで分かち書きをするのではなくて、
別の方法も検討してみる価値あり
Thank you!

More Related Content

What's hot

ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
Encoder-decoder 翻訳 (TISハンズオン資料)
Encoder-decoder 翻訳 (TISハンズオン資料)Encoder-decoder 翻訳 (TISハンズオン資料)
Encoder-decoder 翻訳 (TISハンズオン資料)Yusuke Oda
 
Somの分かり易い解説
Somの分かり易い解説Somの分かり易い解説
Somの分かり易い解説Daisuke Takai
 
大学3年生の僕に伝えたいことをつらつらと
大学3年生の僕に伝えたいことをつらつらと大学3年生の僕に伝えたいことをつらつらと
大学3年生の僕に伝えたいことをつらつらとToshinori Sato
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデルMasahiro Suzuki
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画までShunji Umetani
 
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案Masanori Kado
 
[研究室論文紹介用スライド] Adversarial Contrastive Estimation
[研究室論文紹介用スライド] Adversarial Contrastive Estimation[研究室論文紹介用スライド] Adversarial Contrastive Estimation
[研究室論文紹介用スライド] Adversarial Contrastive EstimationMakoto Takenaka
 
幾何を使った統計のはなし
幾何を使った統計のはなし幾何を使った統計のはなし
幾何を使った統計のはなしToru Imai
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズHiroshi Shimizu
 
【DL輪読会】Hyena Hierarchy: Towards Larger Convolutional Language Models
【DL輪読会】Hyena Hierarchy: Towards Larger Convolutional Language Models【DL輪読会】Hyena Hierarchy: Towards Larger Convolutional Language Models
【DL輪読会】Hyena Hierarchy: Towards Larger Convolutional Language ModelsDeep Learning JP
 
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話yuosaka
 
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)Deep Learning JP
 
機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018Takahiro Kubo
 
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話Ryota Kamoshida
 
技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底Hiromi Ishii
 
最適化超入門
最適化超入門最適化超入門
最適化超入門Takami Sato
 
重回帰分析で交互作用効果
重回帰分析で交互作用効果重回帰分析で交互作用効果
重回帰分析で交互作用効果Makoto Hirakawa
 
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本hoxo_m
 

What's hot (20)

ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
Encoder-decoder 翻訳 (TISハンズオン資料)
Encoder-decoder 翻訳 (TISハンズオン資料)Encoder-decoder 翻訳 (TISハンズオン資料)
Encoder-decoder 翻訳 (TISハンズオン資料)
 
Somの分かり易い解説
Somの分かり易い解説Somの分かり易い解説
Somの分かり易い解説
 
大学3年生の僕に伝えたいことをつらつらと
大学3年生の僕に伝えたいことをつらつらと大学3年生の僕に伝えたいことをつらつらと
大学3年生の僕に伝えたいことをつらつらと
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデル
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
 
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案
 
深層学習 第6章
深層学習 第6章深層学習 第6章
深層学習 第6章
 
[研究室論文紹介用スライド] Adversarial Contrastive Estimation
[研究室論文紹介用スライド] Adversarial Contrastive Estimation[研究室論文紹介用スライド] Adversarial Contrastive Estimation
[研究室論文紹介用スライド] Adversarial Contrastive Estimation
 
幾何を使った統計のはなし
幾何を使った統計のはなし幾何を使った統計のはなし
幾何を使った統計のはなし
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ
 
【DL輪読会】Hyena Hierarchy: Towards Larger Convolutional Language Models
【DL輪読会】Hyena Hierarchy: Towards Larger Convolutional Language Models【DL輪読会】Hyena Hierarchy: Towards Larger Convolutional Language Models
【DL輪読会】Hyena Hierarchy: Towards Larger Convolutional Language Models
 
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
Denoで動くReactフレームワークAleph.jsでポートフォリオサイトをリプレイスした話
 
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
 
機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018
 
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
 
技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
重回帰分析で交互作用効果
重回帰分析で交互作用効果重回帰分析で交互作用効果
重回帰分析で交互作用効果
 
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
 

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