Character-level Convolutional Neural Networkについて調べてみた

元論文

Character-level Convolutional Networks for Text Classification ( arxiv )

概要

One-Hot表現に変換した入力値をEmbeddingした後、6層のConvolution(+Max Pooling)→平滑化して3層からなる全結合層(出力層は問題に応じて適宜変える)という流れ。
カーネル数やパラメータ数は論文中に記載されているので割愛。

特徴

ざっくり論文を読んでみた所、以下のような感じであることがわかった。

データセットが大きい( 1000000以上 )場合に有効。データセットが小さい場合は、やはり古典的ながらn-gram+TFIDFが全般的に良い精度を出している。
・ アルファベットの大文字・小文字の区別に関しては、大きなデータセットでは区別しない方が良い結果だが、小さなデータセットに関しては区別した方が良い結果となる( 厳密に検証はされていないものの、正則化の役割を果たすのではないかという仮説が立てられている )
・ 問題ごとで精度の差異は無い模様。

特に面白かったのが以下の特徴。

・character-level ConvNets work better for less curated user-generated texts.
つまり、形の整った綺麗なテキストではなく、日頃ユーザが書いているような雑な文章に特に強い模様。確かに 単語単位ではなく文字単位で学習するので、表記揺れやよくあるtypo、はたまた単語辞書では拾いきれないような特有の表現とかに強そうな感じはする。使い道によってはチャットボットとも相性が良さそうな気がした。

応用

CharCnn_Keras (Github)
KerasによるCharacter-level CNNの実装。

Character Level Convolutional Neural Networkによる悪性文字列検知手法 (SlideShare)
フィルタつくるのにも便利そう。

Retty Tech Night #1 bokeneko (SSSSLIDE)
Character-level CNNに興味を持つきっかけになったスライド。キャッチコピーの自動生成がかなり面白いなーと思った。
(文章の自動生成でよくWord2vec→RNNやLSTMあたりが挙げられるものの、こちらは結構壊滅的な文章が生成されてしまうケースが多い印象)

Written by Nisei Kimura ( 木村 仁星 )

- Sponsored Links -

Top

>>