オーディエンス
このチュートリアルは、Google Cloud Natural Language API を使用するアプリケーションの調査と開発をすぐに開始できるように作られています。基本的なプログラミングについて理解されている方を対象としていますが、プログラミングの深い知識がなくても、チュートリアルに沿って学習できるようになっています。このチュートリアルを終了すると、リファレンス ドキュメントを使用して独自の基本的なアプリケーションを作成できるようになります。
このチュートリアルでは、Python コードを使用した Natural Language API アプリケーションを使用します。ここでの目的は、Python クライアント ライブラリについて説明することではなく、Natural Language API を呼び出す方法を説明することです。Java や Node.js のアプリケーションも基本的にはこれと同様です。その他の言語のサンプル(チュートリアル内で使用するこのサンプルを含む)については、Natural Language API のサンプルをご覧ください。
前提条件
このチュートリアルでは次の事前準備が必要です。
- Google Cloud アカウントを持っている。このプラットフォームを初めて使用する場合は、アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
- Google Cloud コンソールで Cloud Natural Language API プロジェクトが設定されている。
- アプリケーションのデフォルト認証情報を使用して環境を設定する。
- Python プログラミングの基本事項を理解している。
- Python 開発環境が設定されている。ご使用のシステムに最新バージョンの Python、
pip
、virtualenv
をインストールしておくことをおすすめします。手順については、Google Cloud Platform 向け Python 開発環境のセットアップ ガイドをご覧ください。 - Python 用 Google Cloud クライアント ライブラリがインストールされている。
ドキュメントの感情分析
このチュートリアルでは、analyzeSentiment
リクエストを使用してテキストの感情分析を実行する基本的な Natural Language API アプリケーションについて説明します。感情分析は、全体的な態度(ポジティブかネガティブか)を特定する分析で、分析の結果は score
と magnitude
の数値で表されます(これらの概念の詳細については、Natural Language API の基本をご覧ください)。
まずコード全体を示します(このコードのコメントのほとんどは削除されています。これは、コードそのものは単純であることを示すためです。コードについて説明していく中で、コメントを追加で示します)。
この簡単なアプリケーションでは次のタスクを実行します。
- アプリケーションの実行に必要なライブラリをインポートする
- テキスト ファイルを受け取って
main()
関数に渡す - テキスト ファイルを読み取り、サービスへのリクエストを作成する
- サービスからのレスポンスを解析してユーザーに表示する
これらのステップについて、以下で詳しく説明します。
ライブラリのインポート
標準ライブラリの argparse
をインポートして、アプリケーションが入力ファイル名を引数として受け取れるようにします。
Cloud Natural Language API を使用するために、google-cloud-language
ライブラリから language
モジュールをインポートする必要もあります。types
モジュールには、リクエストの作成に必要なクラスが含まれています。
アプリケーションの実行
ここでは、渡されたテキスト ファイル名の引数を解析し、analyze()
関数に渡します。
API に対する認証
Natural Language API サービスと通信する前に、以前に取得した認証情報を使用してサービスを認証する必要があります。アプリケーション内で認証情報を取得する最も簡単な方法は、アプリケーションのデフォルト認証情報(ADC)を使用することです。デフォルトでは、ADC は GOOGLE_APPLICATION_CREDENTIALS
環境ファイルから認証情報を取得しようとします。このファイルは、サービス アカウントの JSON キーファイルを指すように設定されているはずです(クイックスタートで、ADC を使用するためのサービス アカウントと環境を設定しました。詳細は、サービス アカウントの設定をご覧ください)。
Python 用 Google Cloud クライアント ライブラリは、アプリケーションのデフォルト認証情報を自動的に使用します。
リクエストの実行
Natural Language API サービスの準備ができたら、LanguageServiceClient
インスタンスの analyze_sentiment
メソッドを呼び出すことにより、サービスにアクセスできます。
クライアント ライブラリは、リクエストとレスポンスの詳細を API にカプセル化したものです。このようなリクエストの具体的な構造については、Natural Language API リファレンスをご覧ください。
このコード スニペットによって、次のタスクが実行されます。
LanguageServiceClient
インスタンスをクライアントとしてインスタンス化する。- テキストデータを含むファイル名を変数に読み込む。
- ファイルの内容を使用して
Document
オブジェクトをインスタンス化する。 - クライアントの
analyze_sentiment
メソッドを呼び出す。
レスポンスの解析
レスポンスを順にたどって、各文の感情の score
値と、レビュー全体の score
と magnitude
の値を抽出し、それをユーザーに示します。
サンプルの実行
サンプルを実行するために、映画『ブレードランナー』の一連の(架空の)映画レビューでサンプルをテストします。
サンプルを Google Cloud Storage からダウンロードします。
gcloud storage cp gs://cloud-samples-tests/natural-language/sentiment-samples.tgz .
Google Cloud CLI の最新バージョンをインストールするには、gcloud CLI のドキュメントをご覧ください。
サンプルを解凍します。「reviews」フォルダが作成されます。
gunzip sentiment-samples.tgz tar -xvf sentiment-samples.tar
指定されたファイルのいずれかに対して感情分析を実行します。
python sentiment_analysis.py reviews/bladerunner-pos.txt Sentence 0 has a sentiment score of 0.8 Sentence 1 has a sentiment score of 0.9 Sentence 2 has a sentiment score of 0.8 Sentence 3 has a sentiment score of 0.2 Sentence 4 has a sentiment score of 0.1 Sentence 5 has a sentiment score of 0.4 Sentence 6 has a sentiment score of 0.3 Sentence 7 has a sentiment score of 0.4 Sentence 8 has a sentiment score of 0.2 Sentence 9 has a sentiment score of 0.9 Overall Sentiment: score of 0.5 with magnitude of 5.5
上の例は、比較的ポジティブ(スコア 0.5
)かつ比較的感情的(強度 5.5
)であったレビューを示しています。
他の例に対して分析を実行すると、次のような値が生成されます。
python sentiment_analysis.py reviews/bladerunner-neg.txt ... Overall Sentiment: score of -0.6 with magnitude of 3.3 python sentiment_analysis.py reviews/bladerunner-mixed.txt ... Overall Sentiment: score of 0 with magnitude of 4.7 python sentiment_analysis.py reviews/bladerunner-neutral.txt ... Overall Sentiment: score of -0.1 with magnitude of 1.8
強度は、ポジティブの場合もネガティブの場合もあまり感情的でないレビューを示す「ニュートラル」ケースを除いて、すべて類似しています(かなり感情的な感想の量が比較的同等であることを示しています)。感情のスコアと強度や、これらの値の解釈方法の詳細については、感情分析の値の解釈をご覧ください。
その他のデータで感情分析を試すには、スタンフォード大学が提供している IMDB 映画レビューのデータセットを使用できます。この映画レビューを取得する手順は次のとおりです。
- Large Movie Review データセットをダウンロードします。
- ファイルを作業ディレクトリに解凍します。映画レビューが
train
とtest
のデータ ディレクトリ内でpos
ディレクトリとneg
ディレクトリに分けられます。また、各テキスト ファイルには 1 つの映画レビューが含まれています。 - いずれかの映画レビューのテキスト ファイルに対して
sentiment_analysis.py
ツールを実行します。
これで完了です。Google Cloud Natural Language API を使用した最初の推定タスクが完了しました。