GSP126
概要
Natural Language API は、構文の分析、エンティティの抽出、テキストに付随する感情の識別を行うことができる、事前トレーニング済みの機械学習(ML)モデルです。Google ドキュメントから Natural Language API を呼び出して、ここで紹介するすべての関数を実行できます。
このラボでは、Google ドキュメントから Natural Language API を呼び出す方法に焦点を当てます。Natural Language API を使用して、Google ドキュメント内で選択されたテキストの感情を識別し、それに基づいてテキストをハイライト表示します。
このラボを完了すると、以下に示すように、ドキュメント内のテキストを選択した後、メニュー選択を使用してテキストが表す感情をマークできるようになります。
否定的な感情のテキストは赤、肯定的な感情のテキストは緑、中立的な感情のテキストは黄色でハイライト表示されます。
学習内容
このラボでは、次の方法について学びます。
Google ドキュメントから Natural Language API を呼び出す
Google ドキュメントにメニューを追加する
Google ドキュメントで選択したテキストを識別して操作する
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始 ] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。
ラボを開始して Google Cloud コンソールにログインする方法
[ラボを開始 ] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。
左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] ボタン
残り時間
このラボで使用する必要がある一時的な認証情報
このラボを行うために必要なその他の情報(ある場合)
[Google Cloud コンソールを開く ] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く ] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択 ] ダイアログが表示されたら、[別のアカウントを使用 ] をクリックします。
必要に応じて、下のユーザー名 をコピーして、[ログイン ] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ ] をクリックします。
以下のパスワード をコピーして、[ようこそ ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
その後次のように進みます。
利用規約に同意してください。
一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニュー をクリックするか、[検索 ] フィールドにサービス名またはプロダクト名を入力します。
タスク 1. Natural Language API を有効にする
作業を始める前に、Natural Language API が有効になっていることを確認します。
Google Cloud コンソールで、ナビゲーション メニュー > [API とサービス] > [ライブラリ] を選択します。
Cloud Natural Language API を見つけて、API が有効になっていることを確認します。有効になっていなければ、API をクリックして有効にします。
タスク 2. API キーを取得する
API ユーザーキーを生成し、リクエスト URL に渡します。
API キーを作成するには、ナビゲーション メニュー > [API とサービス] > [認証情報] の順に選択します。
上部にある [認証情報を作成 ] をクリックし、[API キー ] を選択します。
API キーをテキスト ファイルまたは Google ドキュメントにコピーします。このキーは、後のステップで使用します。[閉じる ] をクリックします。
API キーを取得したら、次は Google ドキュメントに移動します。
[進行状況を確認 ] をクリックして、目標に沿って進んでいることを確認します。
API キーを取得する
タスク 3. Google ドキュメントを設定する
Natural Language API を呼び出す前に、Apps Script プログラムを作成します。このプログラムは、メニューを作成し、テキストにマーク付けする関数にそれをリンクして、ユーザーが選択したテキストを抽出します。
新しい Google ドキュメント を作成します。
新しいドキュメントで、メニュー項目の [拡張機能] > [Apps Script] を選択します。
スクリプト エディタ内のコードを削除して、以下のコードを貼り付けます。このコードは、メニュー項目を作成して、現在選択されているテキストからテキストを抽出し、テキストが表す感情に基づいてテキストをハイライト表示します。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 リファレンス をご覧ください。
メニューバーで、[プロジェクトを保存 ]( )をクリックします(スクリプトの名前は、承認ダイアログなどのいくつかの場所でエンドユーザーに表示されます)。
ドキュメントに戻り、テキストを追加します。プロジェクト グーテンベルクの『不思議の国のアリス』 をサンプルとして用意しています(コピーして Plain Text UTF-8
バージョンをドキュメントに貼り付けます)が、これに限らずお好みのテキストをご使用ください。
ドキュメントを再読み込みすると、作成した新しいメニュー [Natural Language Tools ] が Google ドキュメントのツールバーに表示されます。
テキストを選択し、[Natural Language Tools] メニューから [Mark Sentiment ] オプションを選択します。このオプションを初めて選択したときは、スクリプトの実行を承認するように求められます。[続行 ] をクリックし、アカウントを確認します。
Natural Language Tools に対して、このアプリケーションがインストールされているドキュメントの閲覧と管理を許可 します。
スクリプトが承認されると、選択したテキストは黄色でハイライト表示されます。これは、感情分析のスタブは常に 0.0(中立を表す)を返すためです。
[進行状況を確認 ] をクリックして、目標に沿って進んでいることを確認します。
Google ドキュメントを設定する
タスク 4. Natural Language API を呼び出す
プログラムが選択範囲のテキストを抽出してハイライト表示できるようになったら、Natural Language API を呼び出しましょう。これはすべて、retrieveSentiment
関数の本文で行います。
注: Natural Language API について詳しくは、Cloud Natural Language API リファレンス をご覧ください。
Google ドキュメントの [拡張機能 ] > [Apps Script ] に戻ります。
retrieveSentiment
関数内に現在ある行を削除し、「API キーを取得する」セクションで保存した API キーを入れる変数を追加します。
var apiKey = "your key here";
API キーを末尾に付加した Natural Language API の URL を保持するための変数を作成します。
var apiEndpoint =
'https://language.googleapis.com/v1/documents:analyzeSentiment?key='
+ apiKey;
関数に渡す line(行のテキスト)と type(テキストの種類)、language(言語)で構成される構造体を作成します。現時点でサポートされている言語は英語のみです。
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);
レスポンスは 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;
}
スクリプトを保存してドキュメントを再読み込みし、プログラム全体をテストします。場合によっては、新しい機能を有効にするために認証情報を再入力する必要があります。ドキュメントのさまざまな箇所を選択し、感情がどのように異なるかを確認してみましょう。
(オプション)自分の言葉を入力し、分析します。たとえば、「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 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。