ChainerでRecursive Neural Networkによる感情分析のチュートリアルを書いてみた
Introduction
このチュートリアルではRecursive Neural Networkを使って文章の感情分析を行います。
感情分析とは、自然言語処理(Natural Language Processing:NLP)のタスクの1つで、文章に対して書き手の感情(sentiment)を識別する問題です。感情を表現する場合、基本的には肯定的か、否定的かを段階に分けて表現します。例えば、今回使用するデータセットの場合、1(really negative)、2(negative)、3(neutral)、4(positive)、5(really positive)のように5段階で感情を表現しています。
cited from [1]
このチュートリアルでは、感情分析をRecursive Neural Networkで行います。 Recursive Neural Networkとは木構造の再帰的なニューラルネットです。NLPでは文章を木構造で表現することが多く、Recursive Neural Networkはよく使用されます。今回は、まず最初にミニバッチ化しないRecursive Neural Networkの学習方法を学んだ後、発展的な話として、ミニバッチ化したRecursive Neural Networkの学習方法を説明しています。
このチュートリアルでわかることは以下の通りです。
- Recursive Neural Networkとは
- Chainerを使ったRecursive Neural Networkによる感情分析の実装
- ミニバッチ化しないRecursive Neural Networkの学習方法
- ミニバッチ化したRecursive Neural Networkの学習方法
Recursive Neural Networkとは[2]
Recursive Neural Networkとは、再帰ニューラルネット(Recurrent Neural Network)を木構造に拡張したものです。 どちらも頭文字で省略するとRNNと表記することが多いので、どちらを表現しているか注意が必要です。多くの場合、Recurrent Neural Networkを指している事が多いですが、自然言語処理の場合Recursive Neural Networkを指していることもあります。
Recursive Neural Networkでは分岐数を固定した木構造をしようします。 二分木の場合、現在のノードの隠れ状態ベクトルは、左と右の子ノードの隠れ状態ベクトル、から以下のように計算されます。
\begin{align*} {\bf h}_P = a \left( {\bf W} \left[ \begin{array}{l} {\bf h}_L \\ {\bf h}_R \\ \end{array} \right] + {\bf b} \right) \end{align*}
この演算は木構造の葉ノードからルートノードに向かって順番に計算されます。Recursive Neural Networkは要素数の場合でも、 深さはで済むため、Recurrent Neural Networkに比べて長距離の要素間の関係を表現しやすいことが期待されます。
Chainerを使ったRecursive Neural Networkによる感情分析の実装
以下のように、Colaboratoryで実装の説明を行っています。ブラウザさえあれば今すぐにGPU環境でチュートリアルを動かすことが可能なので、お試しください。
Sentiment Analisys with Recursive Neural Network — Chainer Colab Notebook 0.0 ドキュメント
Reference
- [1] Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank
- [2] 深層学習による自然言語処理 (機械学習プロフェッショナルシリーズ)
深層学習による自然言語処理 (機械学習プロフェッショナルシリーズ)
- 作者: 坪井祐太,海野裕也,鈴木潤
- 出版社/メーカー: 講談社
- 発売日: 2017/05/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
メモ
作業ログ