实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

使用 Natural Language API 將文字分類

实验 10 分钟 universal_currency_alt 5 积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP063

Google Cloud 自學實驗室標誌

總覽

Cloud Natural Language API 可從文字中擷取實體、執行情緒和語法分析,並將文字分類。本實驗室的重點是文字分類。這項 API 功能使用超過 700 個類別的資料庫,可輕鬆分類大量文字資料集。

目標

本實驗室的學習內容包括:

  • 建立 Natural Language API 要求,並使用 curl 呼叫 API
  • 使用 Natural Language API 的文字分類功能
  • 利用文字分類功能分析新聞報導資料集

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username。

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password。

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。「導覽選單」圖示和搜尋欄位

啟動 Cloud Shell

Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示 「啟動 Cloud Shell」圖示

  2. 系統顯示視窗時,請按照下列步驟操作:

    • 繼續操作 Cloud Shell 視窗。
    • 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。

連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID。輸出內容中有一行文字,宣告本工作階段的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。

  1. (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
  1. 點按「授權」

輸出內容:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南

工作 1:啟用 Cloud Natural Language API。

  1. 展開畫面左上方的「導覽選單」圖示 「導覽選單」圖示

  2. 依序選取「API 和服務」>「已啟用的 API 和服務」

  1. 點按「啟用 API 和服務」
  1. 在搜尋框中輸入「語言」

  2. 點按「Cloud Natural Language API」

如果 API 尚未啟用,您會看到「啟用」按鈕。

  1. 點按「啟用」來啟用 Cloud Natural Language API。

啟用 API 後,Google Cloud 會顯示下列 API 資訊:

API 詳細資料,顯示「管理」和「試用這個 API」按鈕,以及已啟用 API 的勾號圖示。

工作 2:建立 API 金鑰

您將使用 curl 向 Natural Language API 傳送要求,因此必須產生 API 金鑰來傳遞要求網址。

  1. 建立 API 金鑰的步驟如下:在控制台依序點選「導覽選單」>「API 和服務」>「憑證」

  2. 接著點按「建立憑證」

  3. 在下拉式選單中,選取「API 金鑰」

  4. 接著,複製剛才產生的金鑰,然後點按「關閉」

點選「Check my progress」確認目標已達成。

建立 API 金鑰

您現在已擁有 API 金鑰,儲存為環境變數後,就不需要為每個要求插入 API 金鑰值。

為執行後續步驟,請透過 SSH 連線至為您佈建的執行個體。

  1. 依序選取「導覽選單」圖示 >「Compute Engine」>「VM 執行個體」,就會看到已佈建的 linux-instance 執行個體。
  1. 點按「SSH」按鈕,即可前往互動式殼層。

  2. 在指令列輸入下列指令,並將 <YOUR_API_KEY> 替換成先前複製的金鑰。

export API_KEY=<YOUR_API_KEY>

工作 3:分類新聞報導

只要呼叫一次 Natural Language API 的 classifyText 方法,就能將文字資料分類。這個方法會傳回文字文件的內容類別清單。

這些類別的涵蓋範圍不一,從廣泛的 /Computers & Electronics 類別到 /Computers & Electronics/Programming/Java (Programming Language) 等細分類別都有。如要查看 700 多種類別的完整清單,請前往「內容類別」頁面。

首先請試著分類單一文章,接著再看看如何使用這個方法來分析大量新聞語料庫。

  1. 首先,請複製來自《紐約時報》美食專欄文章的標題和說明:

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.

  1. 建立名為 request.json 的檔案,並加入下列程式碼。您可以使用偏好的指令列編輯器 (例如 nano、vim、emacs) 來建立檔案。
{ "document":{ "type":"PLAIN_TEXT", "content":"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." } } 建立分類新聞報導的請求
  1. 現在使用下列 curl 指令,將這段文字傳送至 Natural Language API 的 classifyText 方法:
curl "https://language.googleapis.com/v1/documents:classifyText?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

查看回應:

{ categories: [ { name: '/Food & Drink/Cooking & Recipes', confidence: 0.85 }, { name: '/Food & Drink/Food/Meat & Seafood', confidence: 0.63 } ] }

您已建立 Speech API 要求並呼叫 Speech API。

  1. 執行下列指令,將回應內容儲存至 result.json 檔案:
curl "https://language.googleapis.com/v1/documents:classifyText?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json > result.json 檢查實體分析的回應內容

API 針對這段文字傳回了 2 個類別:

  • /Food & Drink/Cooking & Recipes
  • /Food & Drink/Food/Meat & Seafood

雖然文字並未明確提及是食譜,甚至沒提到包含海鮮,API 仍能將文字正確歸類。分類單一文章確實很有趣,但這項功能真正的強大之處,在於分類大量文字資料。

工作 4:分類大型文字資料集

為瞭解 classifyText 方法如何協助您分析含有大量文字的資料集,接著要使用這個 BBC 新聞報導的公開資料集。這個資料集包含 2004 年至 2005 年間的 2,225 篇文章,涵蓋五個主題領域:商業、娛樂、政治、體育、科技。這些文章的子集儲存在公開的 Cloud Storage bucket,每篇文章都是 .txt 檔案。

為了檢視資料並將其傳送至 Natural Language API,您將編寫 Python 指令碼,從 Cloud Storage 讀取每個文字檔案,再傳送到 classifyText 端點,並將結果儲存在 BigQuery 資料表中。BigQuery 是 Google Cloud 的大型資料倉儲工具,可讓您輕鬆儲存及分析大型資料集。

  • 執行下列指令來查看其中一篇文章 (gsutil 提供 Cloud Storage 的指令列介面),瞭解要處理的文字類型:
gsutil cat gs://spls/gsp063/bbc_dataset/entertainment/001.txt

下一步是為資料建立 BigQuery 資料表。

工作 5:建立 BigQuery 資料表,儲存分類後的文字資料

將文字傳送至 Natural Language API 前,您需要一個位置來儲存每篇文章的文字和類別。

  1. 在控制台依序前往「導覽選單」 >「BigQuery」

  2. 點按「完成」

  3. 點選專案 ID 旁邊的「查看動作」圖示,然後選取「建立資料集」

「查看動作」選單中醒目標示的「建立資料集」選項。

  1. 將資料集命名為 news_classification_dataset,然後點選「建立資料集」

  2. 點按 news_classification_dataset 旁的「查看動作」圖示,然後選取「建立資料表」,即可建立資料表。

  1. 使用下列設定建立新資料表:

    • 建立資料表的來源:空白資料表
    • 將資料表命名為:article_data
  2. 在「結構定義」下方,點選「新增欄位」,然後新增下列 3 個欄位:

欄位名稱 類型 模式
article_text STRING NULLABLE
category STRING NULLABLE
confidence FLOAT NULLABLE

「建立資料表」頁面「結構定義」部分的欄位清單,包括 article-text、category 和 confidence。

  1. 點選「建立資料表」

目前資料表是空的。在下一個步驟,您將從 Cloud Storage 讀取文章、將文章傳送至 Natural Language API 進行分類,並將結果儲存在 BigQuery。

點選「Check my progress」確認目標已達成。

建立新的資料集和資料表,儲存分類後的文字資料

工作 6:將新聞資料分類,並將結果儲存在 BigQuery

為執行下一個步驟,請連線至 Cloud Shell。如果出現提示訊息,請點選「繼續」

編寫將新聞資料傳送至 Natural Language API 的指令碼前,您需要建立服務帳戶,這樣編寫 Python 指令碼後,才能驗證 Natural Language API 和 BigQuery。

  1. 將專案 ID 匯出為環境變數:
export PROJECT={{{project_0.project_id | Project ID}}}
  1. 執行下列指令,建立服務帳戶:
gcloud iam service-accounts create my-account --display-name my-account gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:my-account@$PROJECT.iam.gserviceaccount.com --role=roles/bigquery.admin gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:my-account@$PROJECT.iam.gserviceaccount.com --role=roles/serviceusage.serviceUsageConsumer gcloud iam service-accounts keys create key.json --iam-account=my-account@$PROJECT.iam.gserviceaccount.com export GOOGLE_APPLICATION_CREDENTIALS=key.json

現在,您可以將文字資料傳送至 Natural Language API 了!

  1. 使用 Google Cloud 的 Python 模組編寫 Python 指令碼。

另外還有許多不同的雲端用戶端程式庫,因此您可以使用任一種語言完成這項作業。

  1. 建立名為 classify-text.py 的檔案,並將下列程式碼複製到檔案中。您可以使用偏好的指令列編輯器 (nano、vim、emacs) 建立檔案。
from google.cloud import storage, language, bigquery # Set up your GCS, NL, and BigQuery clients storage_client = storage.Client() nl_client = language.LanguageServiceClient() bq_client = bigquery.Client(project='{{{project_0.project_id | Project ID}}}') dataset_ref = bq_client.dataset('news_classification_dataset') dataset = bigquery.Dataset(dataset_ref) table_ref = dataset.table('article_data') table = bq_client.get_table(table_ref) # Send article text to the NL API's classifyText method def classify_text(article): response = nl_client.classify_text( document=language.Document( content=article, type=language.Document.Type.PLAIN_TEXT ) ) return response rows_for_bq = [] files = storage_client.bucket('qwiklabs-test-bucket-gsp063').list_blobs() print("Got article files from GCS, sending them to the NL API (this will take ~2 minutes)...") # Send files to the NL API and save the result to send to BigQuery for file in files: if file.name.endswith('txt'): article_text = file.download_as_bytes().decode('utf-8') # Decode bytes to string nl_response = classify_text(article_text) if len(nl_response.categories) > 0: rows_for_bq.append((article_text, nl_response.categories[0].name, nl_response.categories[0].confidence)) print("Writing NL API article data to BigQuery...") # Write article text + category data to BQ if rows_for_bq: errors = bq_client.insert_rows(table, rows_for_bq) if errors: print("Encountered errors while writing to BigQuery:", errors) else: print("No articles found in the specified bucket.")

現在您可以開始分類文章,並將文章匯入 BigQuery 了。

  1. 執行下列指令碼:
python3 classify-text.py

指令碼大約需要兩分鐘才能執行完畢,您可利用這段期間閱讀以下程序說明。

您正使用 Google Cloud Python 用戶端程式庫存取 Cloud Storage、Natural Language API 和 BigQuery。首先,系統會為每個服務建立用戶端,然後建立 BigQuery 資料表的參照物件。files 是公開 bucket 中每個 BBC 資料集檔案的參照物件。系統會查看檔案,將文章下載為字串,然後透過 classify_text 函式將每篇文章傳送至 Natural Language API。對於 Natural Language API 傳回類別的所有文章,文章和類別資料會儲存至 rows_for_bq 清單。完成每篇文章的分類後,系統會使用 insert_rows() 方法將資料插入 BigQuery。

附註:Natural Language API 可針對同一份文件傳回多個類別,但為了簡化作業,本實驗室只會儲存傳回的第一個類別。

指令碼執行完畢後,請確認文章資料已儲存至 BigQuery。

  1. 在 BigQuery 的「Explorer」分頁,前往 article_data 資料表,然後點選「查詢」來查詢資料表:

「查詢」下拉式選單,圈選項目為「在新分頁中開啟」。

  1. 在「Unsaved query」方塊中編輯結果,在 SELECT 和 FROM 之間加入星號:
SELECT * FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data`
  1. 接著點按「執行」

查詢完成後,頁面就會顯示資料。

  1. 向右捲動即可查看 category 欄。

category 欄會顯示 Natural Language API 為文章傳回的第一個類別名稱,confidence 則是介於 0 到 1 的值,表示 API 對文章分類準確性的信心程度。

在下一個步驟,您將學到如何對資料執行更複雜的查詢。

工作 7:透過 BigQuery 分析已分類的新聞資料

首先,請查看資料集中最常見的類別。

  1. 點按 BigQuery 控制台中的「+ SQL 查詢」

  2. 輸入下列查詢:

SELECT category, COUNT(*) c FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data` GROUP BY category ORDER BY c DESC
  1. 接著點按「執行」

查詢結果應如下所示:

查詢結果,列出 /News/Politics 和 /Business & Industrial 等多個類別。

如果想找出 /Arts & Entertainment/Music & Audio/Classical Music 這類較冷門類別的文章,可以編寫下列查詢:

SELECT * FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data` WHERE category = "/Arts & Entertainment/Music & Audio/Classical Music"

或者,您也可以只擷取 Natural Language API 傳回可信度分數大於 90% 的文章:

SELECT article_text, category FROM `{{{project_0.project_id | Project ID}}}.news_classification_dataset.article_data` WHERE cast(confidence as float64) > 0.9

如要對資料執行更多查詢,請參閱 BigQuery 說明文件。BigQuery 也與多種視覺化工具整合。如果想將分類後的新聞資料製成圖表,可以使用 BigQuery 適用的 Looker Studio

恭喜!

您已學會如何使用 Natural Language API 文字分類方法分類新聞報導。您先分類了一篇文章,接著使用 Natural Language API 和 BigQuery 分類及分析大型新聞資料集,最後建立了 BigQuery 資料表,對資料執行查詢。

後續步驟/瞭解詳情

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2025 年 3 月 21 日

實驗室上次測試日期:2025 年 3 月 21 日

Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。