Python クライアント ライブラリ v0.26.1 への移行

Python v0.26.1 用のクライアント ライブラリでは、以前のクライアント ライブラリの設計方法にいくつかの重要な変更が加えられています。これらの変更点は次のように要約できます。

  • モジュールを統合して型の数を少なくした

  • 型指定なしのパラメータから厳密に型指定されたクラスおよび列挙型への置き換え

このトピックでは、v0.26.1 Python クライアント ライブラリを使用するために、Cloud Natural Language API クライアント ライブラリ用の Python コードに加えなければならない変更の詳細について説明します。

以前のバージョンのクライアント ライブラリの実行

Python クライアント ライブラリを v0.26.1 にアップグレードする必要はありません。Python クライアント ライブラリの以前のバージョンを引き続き使用し、コードを移行しない場合は、アプリによって使用される Python クライアント ライブラリのバージョンを指定する必要があります。ライブラリの特定バージョンを指定するには、requirements.txt ファイルを以下のように編集します。

google-cloud-language==0.25

削除されたモジュール

以下のモジュールは、Python Client Library v0.26.1 パッケージで削除されました。

  • google.cloud.language.api_responses

  • google.cloud.language.client

  • google.cloud.language.document

  • google.cloud.language.entity

  • google.cloud.language.sentence

  • google.cloud.language.sentiment

  • google.cloud.language.syntax

必要なコードの変更

インポート

Python クライアント ライブラリ v0.26.1 の新しい型にアクセスするには、新しい google.cloud.language.types モジュールを追加してください。

types モジュールには、リクエストを作成するために必要な新しいクラス(types.Document など)が含まれています。enums モジュールには、ドキュメント タイプを指定するための列挙型が含まれています。引き続き、'PLAIN_TEXT''HTML' などの文字列を使用してドキュメント タイプを指定できますが、enums モジュール内の列挙型を使用することをおすすめします。

from google.cloud import language
from google.cloud.language import enums
from google.cloud.language import types

加えて、新しい google.cloud.language.enums モジュールには、API レスポンスの解析と理解に役立つ列挙型(enums.Entity.Type.PERSONenums.PartOfSpeech.Tag.ADJ など)が含まれています。

クライアントの作成

Client クラスは LanguageServiceClient クラスに置き換えられました。Client クラスへの参照を LanguageServiceClient に置き換えてください。

以前のバージョンのクライアント ライブラリ:

old_client = language.Client()

Python クライアント ライブラリ v0.26.1:

client = language.LanguageServiceClient()

テキスト コンテンツを表すオブジェクトの作成

テキスト文字列または Google Cloud Storage URI のテキスト コンテンツを識別するには、新しい Document クラスを使用します。

テキスト文字列のテキスト コンテンツを表すオブジェクトの作成

次の例は、テキスト文字列のテキスト コンテンツを表す新しい方法を示しています。

以前のバージョンのクライアント ライブラリ:

document = old_client.document_from_text(content=text)

Python クライアント ライブラリ v0.26.1:

document = types.Document(
    content=text,
    type=enums.Document.Type.PLAIN_TEXT)

HTML を分析するには document.type = enums.Document.Type.HTML を設定するという方法もあります。

Google Cloud Storage URI のテキスト コンテンツを表すオブジェクトの作成

次の例は、Google Cloud Storage URI またはウェブ URI のテキスト コンテンツを表す新しい方法を示しています。gcs_uri は Google Cloud Storage 上のテキスト ファイルへの URI です。

以前のバージョンのクライアント ライブラリ:

document = old_client.document_from_gcs_uri(gcs_uri=gcs_uri)

Python クライアント ライブラリ v0.26.1:

document = types.Document(
    gcs_content_uri=gcs_uri,
    type=enums.Document.Type.PLAIN_TEXT)

HTML を分析するには document.type = enums.Document.Type.HTML を設定するという方法もあります。

リクエストの作成とレスポンスの処理

Python クライアント ライブラリ v0.26.1 において、analyze_sentiment などの API メソッドは、Document オブジェクトではなく、LanguageServiceClient オブジェクトに属します。

後述するように、analyze_entitiesanalyze_syntax では戻り値が若干異なります。

感情分析リクエストの作成とレスポンスの処理

以前のバージョンのクライアント ライブラリ:

document = language_client.document_from_text(text)

sentiment = document.analyze_sentiment().sentiment

print('Score: {}'.format(sentiment.score))
print('Magnitude: {}'.format(sentiment.magnitude))

Python クライアント ライブラリ v0.26.1:

document = types.Document(
    content=text,
    type=enums.Document.Type.PLAIN_TEXT)

# Detects sentiment in the document. You can also analyze HTML with:
#   document.type == enums.Document.Type.HTML
sentiment = client.analyze_sentiment(document).document_sentiment

print('Score: {}'.format(sentiment.score))
print('Magnitude: {}'.format(sentiment.magnitude))

エンティティ分析リクエストの作成とレスポンスの処理

エンティティの型は、entity.entity_type ではなく、entity.type として格納されるようになりました。

以前のバージョンのクライアント ライブラリ:

document = language_client.document_from_text(text)

entities = document.analyze_entities().entities

for entity in entities:
    print('=' * 20)
    print(u'{:<16}: {}'.format('name', entity.name))
    print(u'{:<16}: {}'.format('type', entity.entity_type))
    print(u'{:<16}: {}'.format('metadata', entity.metadata))
    print(u'{:<16}: {}'.format('salience', entity.salience))
    print(u'{:<16}: {}'.format('wikipedia_url',
          entity.metadata.get('wikipedia_url', '-')))

Python クライアント ライブラリ v0.26.1:

document = types.Document(
    content=text,
    type=enums.Document.Type.PLAIN_TEXT)

# Detects entities in the document. You can also analyze HTML with:
#   document.type == enums.Document.Type.HTML
entities = client.analyze_entities(document).entities

for entity in entities:
    entity_type = enums.Entity.Type(entity.type)
    print('=' * 20)
    print(u'{:<16}: {}'.format('name', entity.name))
    print(u'{:<16}: {}'.format('type', entity_type.name))
    print(u'{:<16}: {}'.format('salience', entity.salience))
    print(u'{:<16}: {}'.format('wikipedia_url',
          entity.metadata.get('wikipedia_url', '-')))
    print(u'{:<16}: {}'.format('mid', entity.metadata.get('mid', '-')))

構文分析リクエストの作成とレスポンスの処理

トークンの品詞タグ token.part_of_speech.tag は列挙型として返されるようになり、その名前は google.cloud.language.enums.PartOfSpeech.Tag をインポートすることによって復元されます。

トークンのテキスト コンテンツは、token.text_content ではなく、token.text.content として保存されるようになりました。

以前のバージョンのクライアント ライブラリ:

document = language_client.document_from_text(text)

tokens = document.analyze_syntax().tokens

for token in tokens:
    print(u'{}: {}'.format(token.part_of_speech.tag, token.text_content))

Python クライアント ライブラリ v0.26.1:

document = types.Document(
    content=text,
    type=enums.Document.Type.PLAIN_TEXT)

# Detects syntax in the document. You can also analyze HTML with:
#   document.type == enums.Document.Type.HTML
tokens = client.analyze_syntax(document).tokens

for token in tokens:
    part_of_speech_tag = enums.PartOfSpeech.Tag(token.part_of_speech.tag)
    print(u'{}: {}'.format(part_of_speech_tag.name,
                           token.text.content))
このページは役立ちましたか?評価をお願いいたします。

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

Cloud Natural Language API
ご不明な点がありましたら、Google のサポートページをご覧ください。