チェックポイント
Create an API Key
/ 25
Create a request to Classify a news article
/ 25
Check the Entity Analysis response
/ 25
Create a new Dataset and table for categorized text data
/ 25
Natural Language API を使用してテキストをカテゴリに分類する
GSP063
概要
Cloud Natural Language API を使用すると、テキストからエンティティを抽出して感情分析や構文解析を行い、分析したテキストをカテゴリに分類できます。このラボでは、テキストの分類に注目します。700 以上のカテゴリが登録されたデータベースを使用することによって、大規模なテキスト データセットの分類を簡単に行えます。
ラボの内容
- Natural Language API(NL API)リクエストを作成し、curl で API を呼び出す
- NL API のテキスト分類機能を使用する
- テキスト分類機能を使ってニュース記事のデータセットに関する理解を深める
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
タスク 1. Cloud Natural Language API を有効にする
-
画面左上のナビゲーション メニュー()を展開します。
-
[API とサービス] > [有効な API とサービス] を選択します。
- [API とサービスの有効化] をクリックします。
-
次に、検索ボックスで「
language
」を検索します。 -
[Cloud Natural Language API] をクリックします。
API が有効になっていない場合は、[有効にする] ボタンが表示されます。
- [有効にする] をクリックして、Cloud Natural Language API を有効にします。
API が有効になると、次のような API の情報が表示されます。
タスク 2. API キーを作成する
curl
を使用して Natural Language API にリクエストを送信するため、リクエスト URL に含める API キーを生成する必要があります。
-
API キーを作成するには、コンソールで、ナビゲーション メニュー > [API とサービス] > [認証情報] をクリックします。
-
[認証情報を作成] をクリックします。
-
プルダウン メニューで [API キー] を選択します。
-
次に、生成したキーをコピーして [閉じる] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
API キーが準備できたので、リクエストのたびに API キーの値を挿入しなくて済むよう、環境変数としてキーを保存します。
この後のステップを実行するために、プロビジョニングされているインスタンスに SSH で接続してください。
-
ナビゲーション メニューを開き、[Compute Engine] > [VM インスタンス] を選択します。プロビジョニングされた
linux-instance
が表示されます。
-
[SSH] ボタンをクリックします。インタラクティブ シェルが表示されます。
-
コマンドラインで以下のコマンドを入力します。
<YOUR_API_KEY>
の部分は、先ほどコピーしたキーに置き換えてください。
タスク 3. ニュース記事を分類する
Natural Language API の classifyText メソッドを使用すると、1 つの API 呼び出しでテキストデータをカテゴリに分類できます。このメソッドは、テキスト ドキュメントに適用されるコンテンツ カテゴリのリストを返します。
返されるカテゴリの具体性には幅があり、/Computers & Electronics
のように大まかなカテゴリもあれば、/Computers & Electronics/Programming/Java (Programming Language)
のように非常に具体的なカテゴリもあります。700 以上あるカテゴリ候補の全リストはコンテンツ カテゴリ ページでご確認ください。
ここでは、最初に 1 つの記事を分類し、同じ手法で大規模なニュース コーパスを整理していく方法について説明します。
- 取り上げるのは、The New York Times の料理セクションの記事にあった、次の見出しと説明です。
A Smoky Lobster Salad With a Tapa Twist. This spin on the Spanish pulpo a la gallega skips the octopus, but keeps the sea salt, olive oil, pimentón and boiled potatoes.(タパス風スモーキー ロブスター サラダ。スペイン料理「タコのガリシア風」をヒントにしたこの一品には、タコは使いませんが、岩塩、オリーブオイル、ピメントン、ゆでたジャガイモを使います。)
-
request.json
という名前のファイルを作成し、以下のコードを追加します。お好みのコマンドライン エディタ(nano、vim、emacs)を使用してファイルを作成してもかまいません。
- このテキストを、次の
curl
コマンドを使って Natural Language API のclassifyText
メソッドに送信します。
レスポンスを確認します。
Speech API のリクエストを作成し、Speech API を呼び出すことができました。
- 次のコマンドを実行して
result.json
ファイルにレスポンスを保存します。
このテキストに対し、次の 2 つのカテゴリが API から返されます。
/Food & Drink/Cooking & Recipes
/Food & Drink/Food/Meat & Seafood
テキストには、これがレシピであることもシーフードが含まれることもはっきりとは書かれていませんが、この API を使えば分類できます。1 つの記事の分類からもこの機能の優れた点がわかりますが、本当の利点は、次のように大規模なテキストデータを扱うことで見えてきます。
タスク 4: 大規模なテキスト データセットを分類する
BBC のニュース記事を集めたこちらの一般公開データセットを題材に、大量のテキストを含むデータセットを classifyText
メソッドを使ってわかりやすく整理していきましょう。このデータセットには、2004 年から 2005 年までの 5 つの分野(ビジネス、エンターテイメント、政治、スポーツ、テクノロジー)の記事が 2,225 件含まれています。これらの記事の一部が、一般公開されている Cloud Storage バケットの中にあります。記事は 1 件ずつ 1 つの .txt ファイルになっています。
データを調べて Natural Language API に送信するために、Cloud Storage から各テキスト ファイルを読み取り、classifyText
エンドポイントに送信し、その結果を BigQuery テーブルに保存する Python スクリプトを作成します。BigQuery は、大規模なデータセットの保存や分析を容易にする Google Cloud のビッグデータ ウェアハウス ツールです。
- 作業するテキストの種類を確認するため、次のコマンドを実行して 1 つの記事を表示してみます(
gsutil
は Cloud Storage のコマンドライン インターフェースです)。
次に、データを保存する BigQuery テーブルを作成します。
タスク 5. 分類したテキストデータ用の BigQuery テーブルを作成する
Natural Language API にテキストを送信する前に、各記事のテキストとカテゴリの保存場所を用意する必要があります。
-
コンソールのナビゲーション メニュー > [BigQuery] に移動します。
-
[完了] をクリックします。
-
データセットを作成するには、プロジェクト ID の横にある [アクションを表示] アイコンをクリックし、[データセットを作成] を選択します。
-
データセットの名前を「
news_classification_dataset
」にして、[データセットを作成] をクリックします。 -
テーブルを作成するには、
news_classification_dataset
の横にある [アクションを表示] アイコンをクリックして、[テーブルを作成] を選択します。
- 以下の設定で新しいテーブルを作成します。
- テーブルの作成元: 空のテーブル
- テーブル名: article_data
- [スキーマ] で、[フィールドを追加] をクリックして、次の 3 つのフィールドを追加します。
フィールド名 | 種類 | モード |
---|---|---|
article_text |
STRING | NULLABLE |
category |
STRING | NULLABLE |
confidence |
FLOAT | NULLABLE |
- [テーブルを作成] をクリックします。
現在、テーブルは空の状態です。次のステップで、Cloud Storage から記事を読み取り、それを Natural Language API に送信して分類し、結果を BigQuery に保存していきます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 6. ニュースデータを分類して結果を BigQuery に保存する
この後のステップを実行するために、Cloud Shell に接続してください。プロンプトが表示されたら、[続行] をクリックします。
ニュースデータを Natural Language API に送信するスクリプトを作成する前に、サービス アカウントを作成する必要があります。このアカウントは、Python スクリプトから Natural Language API と BigQuery に対して認証を行う際に使用されます。
- プロジェクト ID を環境変数としてエクスポートします。
- 次のコマンドを実行して、サービス アカウントを作成します。
これで、Natural Language API にテキストデータを送信する準備が整いました。
- Google Cloud 用の Python モジュールを使用して Python スクリプトを作成します。
さまざまなクラウド クライアント ライブラリが存在し、どの言語でも同じことができます。
-
classify-text.py
という名前のファイルを作成し、ファイルの中に次のコードをコピーします。お好みのコマンドライン エディタ(nano、vim、emacs)を使用してファイルを作成してもかまいません。
これで、記事を分類して BigQuery にインポートする準備が整いました。
- 次のスクリプトを実行します。
スクリプトが完了するまで 2 分ほどかかりますので、その間に処理内容について説明します。
現在、Google Cloud の Python クライアント ライブラリを使用して、Cloud Storage、Natural Language API、BigQuery にアクセスしています。まず、サービスごとにクライアントが作成され、BigQuery テーブルへの参照が作成されます。一般公開されているバケットに含まれる各 BBC データセット ファイルへの参照は、files
です。ファイルが確認され、記事が文字列としてダウンロードされます。それぞれの記事は、classify_text
関数の Natural Language API に送信されます。Natural Language API からカテゴリが返されたすべての記事について、記事とそのカテゴリデータが rows_for_bq
リストに保存されます。各記事の分類が完了すると、insert_rows()
によって BigQuery にデータが挿入されます。
スクリプトの実行が完了したら、記事データが BigQuery に保存されたことを確認します。
- BigQuery の [エクスプローラ] タブで
article_data
テーブルに移動して、[クエリ] > [新しいタブ] をクリックし、テーブルに対してクエリを実行します。
- [未保存のクエリ] ボックスの結果を編集し、SELECT と FROM の間にアスタリスクを入れます。
- [実行] をクリックします。
クエリが完了すると、データが表示されます。
- 右にスクロールして、カテゴリ列を表示します。
カテゴリ列には、Natural Language API から記事に対して返された最初のカテゴリの名前が含まれ、confidence には、API による記事の分類の信頼度を示す 0〜1 の値が含まれています。
次のステップでは、データに対してより複雑なクエリを実行する方法について説明します。
タスク 7: 分類されたニュースデータを BigQuery で分析する
まず、データセットで最も多かったカテゴリを確認します。
-
BigQuery コンソールで、[+ クエリを新規作成] をクリックします。
-
次のクエリを入力します。
- [実行] をクリックします。
クエリの結果として、次のような内容が表示されます。
/Arts & Entertainment/Music & Audio/Classical Music
のように漠然としたカテゴリが返された記事を見つけたい場合は、次のようなクエリを使用します。
また、クエリを次のようにすると、Natural language API から返された信頼スコアが 90% を超えている記事のみを取得することができます。
その他のクエリ方法について詳しくは、BigQuery のドキュメントをご確認ください。BigQuery は多数の可視化ツールとも統合されています。分類したニュースデータを可視化したい場合は、BigQuery のデータポータル クイックスタートをご参照ください。
お疲れさまでした
このラボでは、Natural Language API のテキスト分類メソッドを使ってニュース記事を分類する方法を学習しました。最初に 1 つの記事を分類する方法を学び、その後、大規模なニュース データセットを NL API で分類して BigQuery で分析する方法を学びました。
学習した内容
- Natural Language API
classifyText
リクエストの作成とcurl
を使用した API の呼び出し - Google Cloud の Python モジュールによる大規模なニュース データセットの分析
- BigQuery でのデータのインポートと分析
クエストを完了する
このセルフペース ラボは、「Machine Learning APIs」、「Data Engineering」、「Language, Speech, Text, & Translation with Google Cloud APIs」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められてバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、このラボが含まれるクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能なすべてのクエストについては、Google Cloud Skills Boost カタログをご覧ください。
次のラボを受講する
BQML で分類モデルを使用して訪問者の購入を予測するに進んでクエストを続けるか、以下をお試しください。
次のステップと詳細情報
- Natural Language API によるコンテンツ分類に関するドキュメントを読む
- BigQuery についてドキュメントで詳しく学習する
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2023 年 9 月 20 日
ラボの最終テスト日: 2023 年 10 月 13 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。