Natural Language API の新機能(ベータ版)

Natural Language API の v1beta2 バージョンでは、次の点が更新されています。

  • エンティティ分析、ドキュメント感情分析、構文解析について、次の言語が新たにサポートされるようになりました。
    • 中国語(簡体および繁体)
    • フランス語
    • ドイツ語
    • イタリア語
    • 韓国語
    • ポルトガル語
  • テキスト ブロック内でエンティティを検出して、そのエンティティの感情を特定するための analyzeEntitySentiment メソッドが追加されました。現在、エンティティの感情分析は英語でのみ使用可能です。詳細については、エンティティ感情分析をご覧ください。
  • 感情分析が更新されました。同じリクエストを行ったときに、v1 リリースと v1beta2 リリースではスコアや強度が多少異なる場合があります。
  • エンティティ分析が更新されました。同じリクエストを行ったときに、v1 リリースと v1beta2 リリースではテキスト ブロック内で検出されたエンティティのメタデータ(Wikipedia URL、ナレッジグラフ MID)が多少異なる場合があります。
  • クライアント ライブラリが更新され、v1beta2 の言語と機能にアクセスできるようになりました。

Natural Language API v1beta1 リリースはサポートが終了しました。

新機能にアクセスする

v1beta2 バージョンの Natural Language API にアクセスするには、HTTP リクエストを https://language.googleapis.com/v1beta2/ エンドポイントに対して行うか、Google Cloud Natural Language API 用のクライアント ライブラリを使用します。

Natural Language API v1beta2 の機能は、現時点では Ruby および PHP のクライアント ライブラリではサポートされていません。

C#

v1beta2 バージョンの Natural Language API に C# クライアント ライブラリを使用してアクセスするには、Google.Cloud.Language.V1.Experimental NuGet パッケージをインストールします。

Install-Package Google.Cloud.Language.V1.Experimental -Pre

Go

v1beta2 バージョンの Natural Language API にアクセスするには、Go ベータ版クライアント ライブラリをインストールします。

go get -u cloud.google.com/go/language/apiv1beta2

クライアント ライブラリのインストールが完了した後で、次のパッケージをコード内でインポートします。

language "cloud.google.com/go/language/apiv1beta2"
languagepb "google.golang.org/genproto/googleapis/cloud/language/v1beta2"

Java

v1beta2 バージョンの Natural Language API にアクセスするには、Java ベータ版クライアント ライブラリをインストールします。

  • Maven を使用している場合は、pom.xml ファイルに以下を追加します。
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-language</artifactId>
      <version>0.17.2-beta-SNAPSHOT</version>
    </dependency>
    
  • Gradle を使用している場合は、依存関係に以下を追加します。
    compile group: 'com.google.cloud', name: 'google-cloud-language', version: '0.17.2-beta-SNAPSHOT'
    

クライアント ライブラリのインストールが完了した後で、次のパッケージをコード内でインポートします。

import com.google.cloud.language.spi.v1beta2.LanguageServiceClient;
import com.google.cloud.language.v1beta2.<type>;

Node.js

新たにサポートされるようになった言語に Node.JS を使用してアクセスするには、v1beta2 エンドポイントを指す Client オブジェクトを作成します。具体的には、使用する Natural Language API のバージョンを Client オブジェクト コンストラクタの api_version パラメータで指定します。次に例を示します。

const Language = require('@google-cloud/language');
const language = Language({ apiVersion: 'v1beta2' });

analyzeEntitySentiment メソッドに Node.JS を使用してアクセスするには、v1beta2 エンドポイントを指す languageServiceClient オブジェクトを、v1beta2() コンストラクタを使用して作成します。次に例を示します。

const Language = require('@google-cloud/language').v1beta2();
const language = Language.languageServiceClient();

Python

新しくサポートされるようになった言語に Python を使用してアクセスするには、v1beta2 エンドポイントを指す Client オブジェクトを作成します。具体的には、使用する Natural Language API のバージョンを Client オブジェクト コンストラクタの api_version パラメータで指定します。次に例を示します。

from google.cloud import language
language_client = language.Client(api_version='v1beta2')

analyzeEntitySentiment メソッドに Python を使用してアクセスするには、v1beta2 エンドポイントを指す languageServiceClient オブジェクトを作成します。それには、v1beta2 クライアント ライブラリをインポートします。次に例を示します。

from google.cloud.gapic.language.v1beta2 import language_service_client
language_client = language_service_client.LanguageServiceClient()

新しい言語にアクセスする

v1beta2 バージョンの Natural Language API では、多数の新しい言語のサポートが追加されています。このような言語の言語分析をリクエストするには、https://language.googleapis.com/v1beta2/ エンドポイントまたはクライアント ライブラリを使用してリクエストを行う必要があります。必要に応じて、language パラメータをリクエストとともに指定できます。このパラメータは、content パラメータ内のテキストの言語コードを表します。language パラメータを指定しない場合は、Natural Language API がリクエストのコンテンツの言語を自動的に検出します。

次の例では、v1beta2 バージョンの Natural Language API で新しくサポートされるようになった言語へのアクセス方法を示します。ベータ版の言語にアクセスするために必要なことは、コードが v1beta2 エンドポイントを指すようにすることだけです。v1 エンドポイントで動作している既存のコードに変更を加える必要はありません。

プロトコル

POST リクエストを作成し、適切なリクエスト本文を指定します。

POST https://language.googleapis.com/v1beta2/documents:analyzeSentiment?key=YOUR_API_KEY
{
  "encodingType": "UTF8",
  "document": {
    "type": "PLAIN_TEXT",
    "content": "Ein Polizist stirbt, Berichte über einen zweiten Toten stellten sich als falsch heraus."
  }
}

C#

Natural Language API クライアントのインストールと作成について詳しくは、Natural Language API クライアント ライブラリをご覧ください。

private static void AnalyzeSentimentFromText(string text)
{
    var client = LanguageServiceClient.Create();
    var response = client.AnalyzeSentiment(new Document()
    {
        Content = text,
        Type = Document.Types.Type.PlainText
    });
    WriteSentiment(response.DocumentSentiment, response.Sentences);
}

private static void WriteSentiment(Sentiment sentiment,
    RepeatedField<Sentence> sentences)
{
    Console.WriteLine("Overall document sentiment:");
    Console.WriteLine($"\tScore: {sentiment.Score}");
    Console.WriteLine($"\tMagnitude: {sentiment.Magnitude}");
    Console.WriteLine("Sentence level sentiment:");
    foreach (var sentence in sentences)
    {
        Console.WriteLine($"\t{sentence.Text.Content}: "
            + $"({sentence.Sentiment.Score})");
    }
}

Java

v1beta2 リリースで新しくサポートされるようになった言語にアクセスするために必要なことは、v1beta2 のライブラリのインストールとインポートだけです。クライアント ライブラリを使用する既存のコードを更新する必要はありません。次に例を示します。

import com.google.cloud.language.spi.v1beta2.LanguageServiceClient;

import com.google.cloud.language.v1beta2.AnalyzeSentimentResponse;
import com.google.cloud.language.v1beta2.Document;
import com.google.cloud.language.v1beta2.Document.Type;
import com.google.cloud.language.v1beta2.Sentiment;
public Sentiment analyzeSentimentText(String text, String lang) throws IOException {
  // NL autodetects the language
  Document doc;
  if (lang != null) {
    doc = Document.newBuilder()
        .setLanguage(lang)
        .setContent(text).setType(Type.PLAIN_TEXT)
        .build();
  } else {
    doc = Document.newBuilder()
        .setContent(text).setType(Type.PLAIN_TEXT)
        .build();
  }
  AnalyzeSentimentResponse response = languageApi.analyzeSentiment(doc);
  return response.getDocumentSentiment();
}

Node.js

// Imports the Google Cloud client library
const Language = require('@google-cloud/language');

// Instantiates a client
const language = Language({ apiVersion: 'v1beta2' });

// The text to analyze, e.g. "Hello, world!"
// const text = 'Hello, world!';

// Instantiates a Document, representing the provided text
const document = language.document({ content: text });

// Detects the sentiment of the document
document.detectSentiment()
  .then((results) => {
    const sentiment = results[1].documentSentiment;
    console.log(`Document sentiment:`);
    console.log(`  Score: ${sentiment.score}`);
    console.log(`  Magnitude: ${sentiment.magnitude}`);

    const sentences = results[1].sentences;
    sentences.forEach((sentence) => {
      console.log(`Sentence: ${sentence.text.content}`);
      console.log(`  Score: ${sentence.sentiment.score}`);
      console.log(`  Magnitude: ${sentence.sentiment.magnitude}`);
    });
  })
  .catch((err) => {
    console.error('ERROR:', err);
  });

Python

# Imports the Google Cloud client library
from google.cloud import language

# Instantiates a client with they v1beta2 version
language_client = language.Client(api_version='v1beta2')

# The text to analyze
text = 'Hallo Welt!'
document = language_client.document_from_text(text, language='DE')

# Detects the sentiment of the text
sentiment = document.analyze_sentiment().sentiment

print('Text: {}'.format(text))
print('Sentiment: {}, {}'.format(sentiment.score, sentiment.magnitude))

AnalyzeEntitySentiment メソッドにアクセスする

v1beta2 バージョンの Natural Language API では、新しい analyzeEntitySentiment メソッドによるエンティティ感情分析のサポートが追加されました。analyzeEntitySentiment メソッドを呼び出すには、https://language.googleapis.com/v1beta2/documents:analyzeEntitySentiment エンドポイントまたはクライアント ライブラリを使用してリクエストを行う必要があります。

次の例で、analyzeEntitySentiment メソッドを照会する方法を示します。

プロトコル

POST リクエストを作成し、適切なリクエスト本文を指定します。

POST https://language.googleapis.com/v1beta2/documents:analyzeEntitySentiment?key=YOUR_API_KEY
{
  "document":{
    "type":"PLAIN_TEXT",
    "content":"I love R&B music. Marvin Gaye is the best.
               'What's Going On' is one of my favorite songs.
               It was so sad when Marvin Gaye died."
  },
  "encodingType":"UTF8"
}

C#

Natural Language API クライアントのインストールと作成について詳しくは、Natural Language API クライアント ライブラリをご覧ください。

private static void AnalyzeEntitySentimentFromText(string text)
{
    var client = LanguageServiceClient.Create();
    var response = client.AnalyzeEntitySentiment(new Document()
    {
        Content = text,
        Type = Document.Types.Type.PlainText
    });
    WriteEntitySentiment(response.Entities);
}

private static void WriteEntitySentiment(IEnumerable<Entity> entities)
{
    Console.WriteLine("Entity Sentiment:");
    foreach (var entity in entities)
    {
        Console.WriteLine($"{entity.Name} "
            + $"({(int)(entity.Salience * 100)}%)");
        Console.WriteLine("  Sentiment score: "
            + $"{entity.Sentiment.Score}"
            + $" magnitude { entity.Sentiment.Magnitude}");
    }
}

Java

analyzeEntitySentiment メソッドにアクセスするには、v1beta2 のライブラリをインストールしてインポートします。次に例を示します。

import com.google.cloud.language.spi.v1beta2.LanguageServiceClient;

import com.google.cloud.language.v1beta2.AnalyzeEntitySentimentRequest;
import com.google.cloud.language.v1beta2.AnalyzeEntitySentimentResponse;
import com.google.cloud.language.v1beta2.AnalyzeSentimentResponse;
import com.google.cloud.language.v1beta2.Document;
import com.google.cloud.language.v1beta2.Document.Type;
import com.google.cloud.language.v1beta2.EncodingType;
import com.google.cloud.language.v1beta2.Entity;
import com.google.cloud.language.v1beta2.EntityMention;
import com.google.cloud.language.v1beta2.Sentiment;
import com.google.cloud.language.v1beta2.Token;
public List<Entity> entitySentimentText(String text) throws IOException {
  Document doc = Document.newBuilder()
          .setContent(text).setType(Type.PLAIN_TEXT).build();
  AnalyzeEntitySentimentRequest request = AnalyzeEntitySentimentRequest.newBuilder()
          .setDocument(doc)
          .setEncodingType(EncodingType.UTF16).build();
  AnalyzeEntitySentimentResponse response = languageApi.analyzeEntitySentiment(request);
  return response.getEntitiesList();
}

Node.js

// Imports the Google Cloud client library
const Language = require('@google-cloud/language').v1beta2();

// Instantiates a client
const language = Language.languageServiceClient();

// The text to analyze, e.g. "Hello, world!"
// const text = 'Hello, world!';

// Configure a request containing a string
const request = {
  document: {
    type: 'PLAIN_TEXT',
    content: text
  }
};

// Detects sentiment of entities in the document
language.analyzeEntitySentiment(request)
  .then((results) => {
    const entities = results[0].entities;

    console.log(`Entities and sentiments:`);
    entities.forEach((entity) => {
      console.log(`  Name: ${entity.name}`);
      console.log(`  Type: ${entity.type}`);
      console.log(`  Score: ${entity.sentiment.score}`);
      console.log(`  Magnitude: ${entity.sentiment.magnitude}`);
    });
  })
  .catch((err) => {
    console.error('ERROR:', err);
  });

Python

analyzeEntitySentiment メソッドにアクセスするには、v1beta2 のライブラリをインポートします。次に例を示します。

from google.cloud.gapic.language.v1beta2 import enums
from google.cloud.gapic.language.v1beta2 import language_service_client
from google.cloud.proto.language.v1beta2 import language_service_pb2
def entity_sentiment_text(text):
    """Detects entity sentiment in the provided text."""
    language_client = language_service_client.LanguageServiceClient()
    document = language_service_pb2.Document()

    if isinstance(text, six.binary_type):
        text = text.decode('utf-8')

    document.content = text.encode('utf-8')
    document.type = enums.Document.Type.PLAIN_TEXT

    encoding = enums.EncodingType.UTF32
    if sys.maxunicode == 65535:
        encoding = enums.EncodingType.UTF16

    result = language_client.analyze_entity_sentiment(
        document, encoding)

    for entity in result.entities:
        print('Mentions: ')
        print(u'Name: "{}"'.format(entity.name))
        for mention in entity.mentions:
            print(u'  Begin Offset : {}'.format(mention.text.begin_offset))
            print(u'  Content : {}'.format(mention.text.content))
            print(u'  Magnitude : {}'.format(mention.sentiment.magnitude))
            print(u'  Sentiment : {}'.format(mention.sentiment.score))
            print(u'  Type : {}'.format(mention.type))
        print(u'Salience: {}'.format(entity.salience))
        print(u'Sentiment: {}\n'.format(entity.sentiment))

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Natural Language API ドキュメント