6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Cloud Natural Language API で日本語感情解析

Last updated at Posted at 2020-10-09

こんにちわ。
GCPの使い手、日本代表コロまるです。

今回は自然言語処理をしたい
cotoha さんもいいけど、高いよね
https://api.ce-cotoha.com/contents/index.html

ということで、Laravel で GCPを使ってみます。

[ 重要 ]
GCPの設定画面は横長にして最大化しておきましょう。
でないと、APIとサービスの有効化などのメニューが出ないので注意。

インスコ


composer require google/cloud-core
composer require google/cloud-language

APIとサービスより、Cloud Natural Language API の有効化

サービスアカウントを作成

プロジェクトを選択

サービスアカウントの詳細

サービスアカウントを作成
ロールとかは何も入力しなくて良い

サービスアカウントができるので、
操作、鍵を作成で鍵をダウンロード

step1.png

これで鍵ファイルが自動でダウンロードされる
この json を config フォルダにアップしましょう。

HogeController.php

//HogeController.php の冒頭に
use Google\Cloud\Language\LanguageClient;



# Your Google Cloud Platform project ID
        $projectId = 'hoge2';


# Instantiates a client
        $language = new LanguageClient([
            'projectId' => $projectId,
            'keyFile' => json_decode(file_get_contents(config_path('hogehoge.json')), true)
        ]);



# The text to analyze
        $text = 'やりました!いけましたよ。よろしくおねがいします。';

# Detects the sentiment of the text
        $annotation = $language->analyzeSentiment($text);
        $sentiment = $annotation->sentiment();

        echo 'Text: ' . $text . '
Sentiment: ' . $sentiment['score'] . ', ' . $sentiment['magnitude'];


結果



Text: やりました!いけましたよ。よろしくおねがいします。 Sentiment: 0.6, 1.8


さらに詳しく解析

感情やら芸能人やら色々解析できるたみたいだが、
今回は文章の感情に絞って解析。

・感情
analyzeSentiment

documentSentiment には、次のフィールドで構成されるドキュメントの全体的な感情が含まれます。
score: -1.0(ネガティブ)~1.0(ポジティブ)のスコアで感情が表されます。これは、テキストの全体的な感情の傾向に相当します。

magnitude は、そのドキュメントに感情的な内容がどのくらい含まれているか


明らかにポジティブ*	"score": 0.8, "magnitude": 3.0
明らかにネガティブ*	"score": -0.6, "magnitude": 4.0
ニュートラル	"score": 0.1, "magnitude": 0.0
混合	"score": 0.0, "magnitude": 4.0

#解析結果サンプル

いい感じですね


        $text = 'ラーメン食べた、美味しかったよ';//[magnitude] => 0.9 [score] => 0.9
        $text = 'ラーメン食べたら下痢になった';//[magnitude] => 0.1 [score] => -0.1

        $text = '台風で体しんどいけど、頑張るね!';//[magnitude] => 0 [score] => 0
        $text = '台風で体しんどいから何もできなかった!';//[magnitude] => 0.6 [score] => -0.6

料金は?

最低 1ユニット。
1,000文字を超える場合は 1,000文字 で 1ユニット。

たとえば、Natural Language に送信する 3 件のリクエストに、それぞれ 800 文字、1,500 文字、600 文字が含まれている場合、1 番目のリクエスト(800)が 1 ユニット、2 番目のリクエスト(1,500)が 2 ユニット、3 番目のリクエスト(600)が 1 ユニット、合計 4 ユニットとして課金されます。

Natural Language の使用料は、使用された API の機能とその機能を使用して評価されたユニットの数に基づいて、月単位で計算されます。次の表に、請求月に分析されたユニットの総数に基づく 1,000 ユニットあたりの料金を示します。

step2.png

単純に、
感情分析を 10,000回やった場合、
最初の 5,000回 は無料。
オーバーした分は
$1.00 x 5 (1000回) で日本円にして約600円で利用できるってわけね。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?