GCP Natural Language APIで構文解析、感情分析を簡単実行

Natural Language APIの基本

https://cloud.google.com/natural-language/docs/basics

Example

前半は入門ガイドの例をそのまま。
後半は、文章を構文解析、トークン毎に感情分析実行。

事前準備

サービスアカウントを生成、ダウンロードして、環境変数に設定して下さい。

GOOGLE_APPLICATION_CREDENTIALS="★ファイルパス★"

Gradle

compile 'com.google.cloud:google-cloud-language:1.99.0'

Java Code

import com.google.cloud.language.v1.Document;
import com.google.cloud.language.v1.Document.Type;
import com.google.cloud.language.v1.LanguageServiceClient;
import com.google.cloud.language.v1.Sentiment;
import com.google.cloud.language.v1.Token;
import java.util.List;

public class Main {

    public static void main(String[] args) {
        try(LanguageServiceClient language = LanguageServiceClient.create()) {
            String text = "素晴らしい天気だ。今日はどこかへ出かけよう。";

            Document doc = Document.newBuilder().setContent(text).setType(Type.PLAIN_TEXT).setLanguage("ja").build();

            Sentiment sentiment = language.analyzeSentiment(doc).getDocumentSentiment();

            System.out.printf("Text: %s%n", text);
            System.out.printf("Sentiment: %s, %s%n", sentiment.getScore(), sentiment.getMagnitude());
            

            List<Token> tokenList = language.analyzeSyntax(doc).getTokensList();
            tokenList.forEach(token -> {
                System.out.println(token.getText().getContent());
                Document tokenText = Document.newBuilder().setContent(token.getText().getContent()).setType(Type.PLAIN_TEXT).setLanguage("ja").build();
                Sentiment tokenSentiment = language.analyzeSentiment(tokenText).getDocumentSentiment();
                System.out.println(tokenSentiment);
            });

         }
        catch(Exception e) {
            
        }
    }
    
}

memo

  • 「素晴らしい」
    score:0.8
    magnitude:0.8
  • 「今日」
    感情解析されない

感情分析の値の解釈は「Natural Language APIの基本」に記載されています。

Java

Posted by shi-n