arrow_back

Google ドキュメントから Natural Language API を呼び出して使用する

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Google ドキュメントから Natural Language API を呼び出して使用する

Lab 45分 universal_currency_alt クレジット: 5 show_chart 中級
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP126

Google Cloud セルフペース ラボ

概要

Natural Language API は、構文の分析、エンティティの抽出、テキストに付随する感情の識別を行うことができる、事前トレーニング済みの機械学習(ML)モデルです。Google ドキュメントから Natural Language API を呼び出して、ここで紹介するすべての関数を実行できます。

このラボでは、Google ドキュメントから Natural Language API を呼び出す方法に焦点を当てます。Natural Language API を使用して、Google ドキュメント内で選択されたテキストの感情を識別し、それに基づいてテキストをハイライト表示します。

このラボを完了すると、以下に示すように、ドキュメント内のテキストを選択した後、メニュー選択を使用してテキストが表す感情をマークできるようになります。

[Mark Sentiment] メニュー オプションが表示された Google ドキュメント、自然言語サンプル

否定的な感情のテキストは赤、肯定的な感情のテキストは緑、中立的な感情のテキストは黄色でハイライト表示されます。

学習内容

このラボでは、次の方法について学びます。

  • Google ドキュメントから Natural Language API を呼び出す
  • Google ドキュメントにメニューを追加する
  • Google ドキュメントで選択したテキストを識別して操作する

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。

このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。

  4. [ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。

    重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  5. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後このタブで Cloud Console が開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコン

タスク 1. Natural Language API を有効にする

作業を始める前に、Natural Language API が有効になっていることを確認します。

  1. Google Cloud コンソールで、ナビゲーション メニュー > [API とサービス] > [ライブラリ] を選択します。

  2. Cloud Natural Language API を見つけて、API が有効になっていることを確認します。有効になっていなければ、API をクリックして有効にします。

タスク 2. API キーを取得する

API ユーザーキーを生成し、リクエスト URL に渡します。

  1. API キーを作成するには、ナビゲーション メニュー > [API とサービス] > [認証情報] の順に選択します。

  2. 上部にある [認証情報を作成] をクリックし、[API キー] を選択します。

  3. API キーをテキスト ファイルまたは Google ドキュメントにコピーします。このキーは、後のステップで使用します。[閉じる] をクリックします。

API キーを取得したら、次は Google ドキュメントに移動します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 API キーを取得する

タスク 3. Google ドキュメントを設定する

Natural Language API を呼び出す前に、Apps Script プログラムを作成します。このプログラムは、メニューを作成し、テキストにマーク付けする関数にそれをリンクして、ユーザーが選択したテキストを抽出します。

  1. 新しい Google ドキュメントを作成します。
  2. 新しいドキュメントで、メニュー項目の [拡張機能] > [Apps Script] を選択します。
  3. スクリプト エディタ内のコードを削除して、以下のコードを貼り付けます。このコードは、メニュー項目を作成して、現在選択されているテキストからテキストを抽出し、テキストが表す感情に基づいてテキストをハイライト表示します。Natural Language API はまだ呼び出しません。
/** * @OnlyCurrentDoc * * 上記のコメントにより、このアドオンのファイル アクセスの範囲が * 制限される。このアドオンによる読み取りまたは変更の対象になるのは * ユーザーのすべてのファイルではなく、このアドオンが * 使用されているファイルに制限される。ユーザーに表示される承認リクエスト メッセージには * この制限範囲が反映される。 */ /** * ドキュメントを開いたときに、Google ドキュメント UI に * メニュー エントリが作成される。 * */ function onOpen() { var ui = DocumentApp.getUi(); ui.createMenu('Natural Language Tools') .addItem('Mark Sentiment', 'markSentiment') .addToUi(); } /** * ユーザーが選択したテキストを取得し、感情に基づいてハイライト表示する * (肯定的な感情は緑、否定的な感情は赤、 * 中立的な感情は黄色)。 * */ function markSentiment() { var POSITIVE_COLOR = '#00ff00'; // 感情を表す色 var NEGATIVE_COLOR = '#ff0000'; var NEUTRAL_COLOR = '#ffff00'; var NEGATIVE_CUTOFF = -0.2; // 感情のしきい値 var POSITIVE_CUTOFF = 0.2; var selection = DocumentApp.getActiveDocument().getSelection(); if (selection) { var string = getSelectedText(); var sentiment = retrieveSentiment(string); // 適切な色を選択する var color = NEUTRAL_COLOR; if (sentiment <= NEGATIVE_CUTOFF) { color = NEGATIVE_COLOR; } if (sentiment >= POSITIVE_CUTOFF) { color = POSITIVE_COLOR; } // テキストをハイライト表示する var elements = selection.getSelectedElements(); for (var i = 0; i < elements.length; i++) { if (elements[i].isPartial()) { var element = elements[i].getElement().editAsText(); var startIndex = elements[i].getStartOffset(); var endIndex = elements[i].getEndOffsetInclusive(); element.setBackgroundColor(startIndex, endIndex, color); } else { var element = elements[i].getElement().editAsText(); foundText = elements[i].getElement().editAsText(); foundText.setBackgroundColor(color); } } } } /** * 選択されたテキストの内容を含む文字列を返す。 * テキストが選択されていない場合、空の文字列が返される。 */ function getSelectedText() { var selection = DocumentApp.getActiveDocument().getSelection(); var string = ""; if (selection) { var elements = selection.getSelectedElements(); for (var i = 0; i < elements.length; i++) { if (elements[i].isPartial()) { var element = elements[i].getElement().asText(); var startIndex = elements[i].getStartOffset(); var endIndex = elements[i].getEndOffsetInclusive() + 1; var text = element.getText().substring(startIndex, endIndex); string = string + text; } else { var element = elements[i].getElement(); // テキストとして編集できる要素のみを変換し、 // テキスト以外の要素(画像など)はスキップする。 if (element.editAsText) { string = string + element.asText().getText(); } } } } return string; } /** 文字列が返されたら、Natural Language API が呼び出され、 * その文字列の感情が抽出される。感情は -1 から 1 の範囲の実数で示される。 * -1 は非常に否定的な感情を、1 は非常に肯定的な感情を * それぞれ表す。*/ function retrieveSentiment (line) { // TO DO: 行を指定して Natural Language API を呼び出すと // 感情の値が返される。 return 0.0; } 注: Apps Script について詳しくは、Google Apps Script リファレンスをご覧ください。
  1. メニューバーで、[プロジェクトを保存]([プロジェクトを保存] ボタン)をクリックします(スクリプトの名前は、承認ダイアログなどのいくつかの場所でエンドユーザーに表示されます)。
  2. ドキュメントに戻り、テキストを追加します。プロジェクト グーテンベルクの『不思議の国のアリス』をサンプルとして用意しています(コピーして Plain Text UTF-8 バージョンをドキュメントに貼り付けます)が、これに限らずお好みのテキストをご使用ください。
  3. ドキュメントを再読み込みすると、作成した新しいメニュー [Natural Language Tools] が Google ドキュメントのツールバーに表示されます。
  4. テキストを選択し、[Natural Language Tools] メニューから [Mark Sentiment] オプションを選択します。このオプションを初めて選択したときは、スクリプトの実行を承認するように求められます。[続行] をクリックし、アカウントを確認します。
  5. Natural Language Tools に対して、このアプリケーションがインストールされているドキュメントの閲覧と管理を許可します。
  6. スクリプトが承認されると、選択したテキストは黄色でハイライト表示されます。これは、感情分析のスタブは常に 0.0(中立を表す)を返すためです。

選択されたテキストがハイライト表示されている、Project Gutenberg の電子書籍『不思議の国のアリス』(ルイス・キャロル)の説明

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Google ドキュメントを設定する

タスク 4. Natural Language API を呼び出す

プログラムが選択範囲のテキストを抽出してハイライト表示できるようになったら、Natural Language API を呼び出しましょう。これはすべて、retrieveSentiment 関数の本文で行います。

注: Natural Language API について詳しくは、Cloud Natural Language API リファレンスをご覧ください。
  1. Google ドキュメントの [拡張機能] > [Apps Script] に戻ります。
  2. retrieveSentiment 関数内に現在ある行を削除し、「API キーを取得する」セクションで保存した API キーを入れる変数を追加します。
var apiKey = "your key here";
  1. API キーを末尾に付加した Natural Language API の URL を保持するための変数を作成します。
var apiEndpoint = 'https://language.googleapis.com/v1/documents:analyzeSentiment?key=' + apiKey;
  1. 関数に渡す line(行のテキスト)と type(テキストの種類)、language(言語)で構成される構造体を作成します。現時点でサポートされている言語は英語のみです。
var docDetails = { language: 'en-us', type: 'PLAIN_TEXT', content: line };
  1. ドキュメントの情報にエンコード タイプを追加して、データ ペイロード全体を作成します。
var nlData = { document: docDetails, encodingType: 'UTF8' };
  1. ペイロードと必要なヘッダー情報を含む構造体を作成します。
var nlOptions = { method : 'post', contentType: 'application/json', payload : JSON.stringify(nlData) };
  1. 呼び出しを実行し、レスポンスを保存します。
var response = UrlFetchApp.fetch(apiEndpoint, nlOptions);
  1. レスポンスは JSON 形式で返されます。それを解析して score フィールドがあれば抽出します。そのフィールドまたは 0.0 を返します。
var data = JSON.parse(response); var sentiment = 0.0; // すべてのデータが戻り値に含まれることを確認する if (data && data.documentSentiment && data.documentSentiment.score){ sentiment = data.documentSentiment.score; } return sentiment;

感情を取得するためのコード全体は次のとおりです。

function retrieveSentiment (line) { var apiKey = "your key here"; var apiEndpoint = 'https://language.googleapis.com/v1/documents:analyzeSentiment?key=' + apiKey; // テキスト、言語、種類、エンコードを含む // 構造体を作成する var docDetails = { language: 'en-us', type: 'PLAIN_TEXT', content: line }; var nlData = { document: docDetails, encodingType: 'UTF8' }; // 呼び出しのオプションとデータをすべてまとめる var nlOptions = { method : 'post', contentType: 'application/json', payload : JSON.stringify(nlData) }; // 呼び出しを実行する var response = UrlFetchApp.fetch(apiEndpoint, nlOptions); var data = JSON.parse(response); var sentiment = 0.0; // すべてのデータが戻り値に含まれることを確認する if (data && data.documentSentiment && data.documentSentiment.score){ sentiment = data.documentSentiment.score; } return sentiment; }
  1. スクリプトを保存してドキュメントを再読み込みし、プログラム全体をテストします。場合によっては、新しい機能を有効にするために認証情報を再入力する必要があります。ドキュメントのさまざまな箇所を選択し、感情がどのように異なるかを確認してみましょう。

『Down the Rabbit-Hole』のテキストの一部

  1. (オプション)自分の言葉を入力し、分析します。たとえば、「I'm mad」(私は怒っている)と入力して分析した後、「I'm happy」(私は嬉しい)と入力して分析します。Natural Language API が複数のグループをどのように解釈するかをテストします。たとえば、「I'm happy. I'm happy. I'm sad.」(私は嬉しい。私は嬉しい。私は悲しい)を分析します。「I'm sad.」(私は悲しい)をもう 1 つ追加したらどうなるでしょうか。

お疲れさまでした

Google ドキュメントを作成し、Natural Language API を呼び出して、ドキュメントの選択した箇所の感情を分析しました。

クエストを完了する

このセルフペース ラボは、「Workspace Integrations」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められて上のようなバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、こちらのクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能な全クエストについては、Google Cloud Skills Boost カタログをご覧ください。

次のラボを受講する

App Maker を使用して完全なデータベース ウェブアプリを構築するに進んでクエストを続けるか、Apps Script CLI - clasp をご確認ください。

次のステップと詳細情報

次の方法で、Google Cloud の理解をさらに深めることができます。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2023 年 6 月 14 日

ラボの最終テスト日: 2023 年 6 月 14 日

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。