ラボの設定手順と要件
アカウントと進行状況を保護します。このラボを実行するには、常にシークレット ブラウジング ウィンドウとラボの認証情報を使用してください。

Natural Language API を使用して感情分析を行う: チャレンジラボ

ラボ 10分 universal_currency_alt クレジット: 1 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。

ARC130

Google Cloud セルフペース ラボのロゴ

概要

チャレンジラボでは、シナリオと一連のタスクが提供されます。手順ガイドに沿って進める形式ではなく、コース内のラボで習得したスキルを駆使して、ご自身でタスクを完了していただきます。タスクが適切に完了したかどうかは、このページに表示される自動スコアリング システムで確認できます。

チャレンジラボは、Google Cloud の新しいコンセプトについて学習するためのものではありません。デフォルト値を変更する、エラー メッセージを読み調査を行ってミスを修正するなど、習得したスキルを応用する能力が求められます。

100% のスコアを達成するには、制限時間内に全タスクを完了する必要があります。

設定と要件

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

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

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

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

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

チャレンジ シナリオ

あなたは最近、ある組織に加わり、チームの一員としてジュニア クラウド エンジニアとして働いています。ML プロジェクトを担当することになったあなたは、担当クライアントからの要件のひとつとして、あるプロジェクトを完了するために、Google Cloud の Cloud Natural Language API サービスを使用してタスクを実行する必要があります。

あなたには以下のタスクを行うためのスキルや知識があると想定されています。

チャレンジ

このチャレンジでは、Google ドキュメントを設定し、お客様から提供されたレビューの感情分析を実行します。また、Natural Language API を使用して構文と品詞を分析し、英語以外の言語で Natural Language API リクエストを作成する必要があります。

実施する内容:

  • API キーを作成する。
  • Google ドキュメントを設定して Natural Language API を呼び出す。
  • Natural Language API で構文と品詞を分析する。
  • 多言語自然言語処理を実行する。

このチャレンジラボでは、タスク 3 と 4 を完了するために、 という名前の仮想マシン(VM)インスタンスがあらかじめ構成されています。

実施時の注意事項:

  • 必要な API(Cloud Natural Language API など)が正常に有効化されていることを確認してください。

それぞれのタスクについて以下に詳しく説明します。それでは始めましょう。

タスク 1. API キーを作成する

  1. このタスクでは、Natural Language API にリクエストを送信する際に、このタスクや他のタスクで使用する API キーを作成する必要があります。

  2. 作成した API キーは、他のタスクでも使用できるよう保存しておいてください。

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

タスク 2. Google ドキュメントを設定して Natural Language API を呼び出す

このタスクでは、Google ドキュメントから Natural Language API を使用し、Google ドキュメント内の選択したテキストの感情を認識できるようにします。感情に基づいてテキストの各部がハイライト表示されるよう設定してください。

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

  1. 新しい Google ドキュメントを作成します。

  2. Apps Script で次のコードを使用します。retrieveSentiment 関数で、「your key here」を Google Cloud コンソールの実際の 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) { var apiKey = "your key here"; // 実際の API キーに置き換える 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. テキストをドキュメントに追加します。例として、チャールズ ディケンズの小説『二都物語』の文章を使用できます。

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

タスク 3. Natural Language API で構文と品詞を分析する

このタスクを完了するには、事前にプロビジョニングされている VM インスタンス に SSH で接続します。

  1. 次のコードを使用して、analyze-request.json という名前の JSON ファイルを作成します。
{ "document":{ "type":"PLAIN_TEXT", "content": "Google, headquartered in Mountain View, unveiled the new Android phone at the Consumer Electronic Show. Sundar Pichai said in his keynote that users love their new Android phones.}, "encodingType": "UTF8" }
  1. curl コマンドを使用してリクエスト(タスク 1 で保存した API キー環境変数を含む)を Natural Language API に渡すか、gcloud ML コマンドを使用して構文を分析します。

  2. レスポンスを analyze-response.txt という名前のファイルに保存します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 Natural Language API を使用して構文と品詞を分析する

タスク 4. 多言語自然言語処理を実行する

このタスクを完了するには、事前にプロビジョニングされている VM インスタンス に SSH で接続します。

  1. フランス語の文章を含む次のコードを使用して、multi-nl-request.json という JSON ファイルを作成します。
{ "document":{ "type":"PLAIN_TEXT", "content":"Le bureau japonais de Google est situé à Roppongi Hills, Tokyo." } }
  1. curl コマンドを使用してリクエスト(タスク 1 で保存した API キー環境変数を含む)を Natural Language API に渡すか、gcloud ML コマンドを使用して構文を分析します。

  2. 出力を multi-response.txt というファイルに保存します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 多言語自然言語処理を実行する

お疲れさまでした

これで完了です。Natural Language API を呼び出して、Google ドキュメント内のテキストの感情分析、構文と品詞の分析を正常に実行できました。

「Natural Language API を使用して感情分析を行う」バッジ

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

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

マニュアルの最終更新日: 2024 年 7 月 17 日

ラボの最終テスト日: 2024 年 7 月 17 日

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

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

Using an Incognito or private browser window is the best way to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.