Google Cloud Platformのニューラルネットワークでテキスト化された文章の感情分析
Contents
文章の感情分析
以前にGCP(Google Cloud Platform)のニューラルネットワークモデルのSpeech-to-Text APIを使って音声をテキスト化した時の事を記事にした。
今回はそのテキスト化された文章に対して感情分析をするAPI(analyzeSentiment)を使ってみた時の事を備忘録として記録しておく。
概要図
事前準備
GCP上でAPIを使用できる環境を整える必要があるのだが大まかな手順は以下の通り。
上記については以前の記事の「GCP(Google Clond Platform)でプロジェクトを作成する」から「VMインスタンスを作成する」までを参照して欲しい。
感情分析を行う
前述の手順でAPI実行用のVMインスタンスが出来ている前提として以下の手順で感情分析を行う。
自然言語処理APIを有効にする
Google Cloud Platformにログインしてメニューから”APIとサービス”ー>”ライブラリ”をクリックする。
“APIとサービスを検索”欄でCloud Natural Language APIを検索する。
「有効にする」ボタンをクリックする。
有効になった。
sshの起動
Compute EngineのVMインスタンスの画面にて該当インスタンスのSSH横の三角をクリックして”ブラウザウィンドウで開く”をクリックする。
APIキーの設定
しばらく待つと新しいsshウィンドウが開く。
”API認証情報を作成する”で控えておいたAPIキーを使うのだがAPIを呼び出すたびに何回も入力するのは面倒なので下記のコマンドで環境変数に保存しておく。
export API_KEY=控えておいたAPI KEY
requestdoc.jsonの作成
分析用のJSONファイルを作成する。
尚、文章は前回の記事でレゴに関するブログを読み上げた音声をテキストに変換したものを今回の入力にしている。
{
"document":{
"type":"PLAIN_TEXT",
"content": "レゴマインドストームに7年ぶりの新ロボットキットが発売されるとの記事を見た。自分は教育用レゴマインドストーム EV 3の基本セットと拡張セットを持っているのだけれども、マインドストームで新作はもう出ないのかと諦めていたので新作が出ると聞いてとても嬉しい。以下気になったと言うか興味深い点。プログラミング環境。Pythonやスクラッチベースのドラッグ&ドロップでのコーディングが可能で Windows や Mac Android タブレットスマートフォンにも対応するとのことだが、今までのレゴマインドストームソフトウェアは使えないのかもしれない。"
},
"encodingType": "UTF8"
}
analyzeSentiment APIを呼び出す
文章単位で感情を分析するAPIを呼び出す。
curl "https://language.googleapis.com/v1/documents:analyzeSentiment?key=${API_KEY}" \
-s -X POST -H "Content-Type: application/json" --data-binary @requestdoc.json
実行結果
{
"documentSentiment": {
"magnitude": 1.2,
"score": 0.1
},
"language": "ja",
"sentences": [
{
"text": {
"content": "レゴマインドストームに7年ぶりの新ロボットキットが発売されるとの記事を見た。",
"beginOffset": 0
},
"sentiment": {
"magnitude": 0,
"score": 0
}
},
{
"text": {
"content": "自分は教育用レゴマインドストーム EV 3の基本セットと拡張セットを持っているのだけれども、マインドストームで新作はもう出ないのかと諦めていたので新作が出ると聞いてとても嬉しい。",
"beginOffset": 112
},
"sentiment": {
"magnitude": 0.6,
"score": 0.6
}
},
{
"text": {
"content": "以下気になったと言うか興味深い点。",
"beginOffset": 369
},
"sentiment": {
"magnitude": 0.1,
"score": -0.1
}
},
{
"text": {
"content": "プログラミング環境。",
"beginOffset": 420
},
"sentiment": {
"magnitude": 0.1,
"score": 0.1
}
},
{
"text": {
"content": "Pythonやスクラッチベースのドラッグ&ドロップでのコーディングが可能で Windows や Mac Android タブレットスマートフォンにも対応するとのことだが、今までのレゴマインドストームソフトウェアは使えないのかもしれない。",
"beginOffset": 450
},
"sentiment": {
"magnitude": 0.1,
"score": -0.1
}
}
]
}
- magnitude:その主張の中で表現されている感情の重みを表す
- score:プラスはポジティブ、マイナスはネガティブな感情を表す
例えば、
「自分は教育用レゴマインドストーム EV 3の基本セットと拡張セットを持っているのだけれども、マインドストームで新作はもう出ないのかと諦めていたので新作が出ると聞いてとても嬉しい。」
の文章はmagnitude、scoreともに+0.6で重要でポジティブな文章と判断している。
一方、「以下気になったと言うか興味深い点。」はmagnitudeは0.1、scoreは-0.1。
それほど重要ではなく若干のネガティブな感情と判断している事が分かる。
その他にも「~かも知れない」も若干のネガティブな感情とニューラルネットワークは判断していることから感情判断APIはある程度の精度が出ていることが分かる。
今回の記事はこれで終了。
次回は単語単位での感情分析を試してみる。
この記事が何処かで誰かの役に立つことを願っている。
尚、当記事中の商品へのリンクはAmazonアソシエイトへのリンクが含まれています。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ていますのでご了承ください。
最近のコメント