$30 off During Our Annual Pro Sale. View Details »

CNNによるテキスト分類

 CNNによるテキスト分類

けんご

March 02, 2016
Tweet

More Decks by けんご

Other Decks in Technology

Transcript

  1. 2016.03.02
    @tkengo
    CNNによる
    テキスト分類

    View Slide

  2. 目次
    • 畳み込みニューラルネット(CNN)
    • CNNのNLPへの適用
    • テキスト分類デモ
    • 参考

    View Slide

  3. 畳み込み
    ニューラルネット

    View Slide

  4. 畳み込みニューラルネット
    • 人間の視覚野をシミュレーション
    • 画像認識の分野で広く使われる
    • カーネルをスライドさせて特徴マップを得る

    View Slide

  5. 畳み込みニューラルネット
    • NLPへCNNを適用してうまくいくのか?
    • そもそもどうやって適用するのか?
    • NLPでは既にRNNが良く使われているのでは?

    View Slide

  6. 畳み込みニューラルネット
    • NLPへCNNを適用してうまくいくのか?
    • そもそもどうやって適用するのか?
    • NLPでは既にRNNが良く使われているのでは?
    ➜いくつかの実験で良い結果が出ている
    ➜このあと説明します
    ➜使われていると思う。現時点ではCNNが全て
     において万能だという結論ではないと思う

    View Slide

  7. CNNのNLPへの適用

    View Slide

  8. CNNのNLPへの適用
    • テキスト内の単語をベクトル化する必要がある
    • BoWモデルやWordEmbeddingモデル
    • BoWは単純だけど各単語間の関連が皆無
    • WordEmbeddingは話題のword2vec
    vector('Paris') - vector('France') + vector(‘Italy’) vector(‘Roma’)
    vector('king') - vector('man') + vector(‘woman') vector('queen')


    View Slide

  9. CNNのNLPへの適用
    • 分類したいテキストに含まれる単語をベクトル化
    • それを並べた行列がそのテキストの表現
    • 単語数が一致しない場合はパディングで埋める
    犬も猫も好き




    好き
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    トトロが好き
    トトロ

    好き


    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    “トトロ”のベクトル
    “犬”のベクトル

    View Slide

  10. CNNのNLPへの適用
    • カーネルの幅は単語ベクトルと同じ幅に固定
    • カーネルの高さは2-5くらいの範囲
    • 1単語ずつスライドさせて畳み込んでいく
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ
    ʜ

    View Slide

  11. CNNのNLPへの適用
    • 畳み込み層の後にはプーリング層も配置
    • 活性化関数ReLUを適用した後に全結合層
    • 最後にsoftmax関数を適用

    View Slide

  12. テキスト分類デモ

    View Slide

  13. モチベーション
    • LINE占い内で悩み相談所というサービスを展開
    • 悩み内容にはそれぞれカテゴリが紐付いている
    • 悩み内容のカテゴリを自動分類できないかな?
    カテゴリ

    View Slide

  14. 単純なNNでテキスト分類
    • 最初は隠れ層が1つの単純な順伝播型で実装
    • 単語ベクトルにはBoWモデルを使用
    • 130,000件のデータを数時間かけて学習
    • 65%〜70%程度の精度。もう少し精度ほしい

    View Slide

  15. CNNでテキスト分類
    • 全部で5層のディープニューラルネット
    • 単語ベクトルにはWordEmbeddingモデルを使用
    • 130,000件のデータを20時間かけて学習
    • 75%〜80%程度の精度

    View Slide

  16. 参考

    View Slide

  17. 参考
    • Convolutional Neural Networks for Sentence Classification
    • http://arxiv.org/pdf/1408.5882v2.pdf
    • word2vec
    • https://code.google.com/archive/p/word2vec/
    • 実装
    • https://github.com/tkengo/tf/blob/master/cnn_text_classification/train.py
    • TensorFlow
    • https://www.tensorflow.org/

    View Slide