ARC130

總覽
在挑戰研究室中,您會在特定情境下完成一系列任務。挑戰研究室不會提供逐步說明,您將運用從課程研究室學到的技巧,自行找出方法完成任務!自動評分系統 (如本頁所示) 將根據您是否正確完成任務來提供意見回饋。
在您完成任務的期間,挑戰研究室不會介紹新的 Google Cloud 概念。您須靈活運用所學技巧,例如變更預設值或詳讀並研究錯誤訊息,解決遇到的問題。
若想滿分達標,就必須在時限內成功完成所有任務!
設定和需求
瞭解以下事項後,再點選「Start Lab」按鈕
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 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 分析語法和詞性。
- 執行多語言自然語言處理。
在本挑戰實驗室中,系統已設定好虛擬機器 (VM) 執行個體「」,供您用來完成工作 3 至 4。
請遵守以下規則:
- 確認已成功啟用所有必要 API,例如 Cloud Natural Language API。
各項工作的詳細說明如下,祝您好運!
工作 1:建立 API 金鑰
-
您需要在這項工作中建立 API 金鑰,以便在傳送要求至 Natural Language API 時使用。
-
請儲存 API 金鑰,方便在其他工作中使用。
點選「Check my progress」,確認目標已達成。
建立 API 金鑰
工作 2:設定 Google 文件並呼叫 Natural Language API
在這項工作中,您需要設定 Google 文件,以利使用 Natural Language API 辨識 Google 文件中所選文字的情緒,並根據情緒醒目標示部分文字。
負面情緒的文字應標上紅色,正面情緒的文字標上綠色,中性情緒的文字則標上黃色。
-
建立新的 Google 文件。
-
在 Apps Script 中使用下列程式碼,並將 retrieveSentiment 函式中的「your key here」替換成 Google Cloud 控制台中的實際 API 金鑰。
/**
* @OnlyCurrentDoc
*
* The above comment directs Apps Script to limit the scope of file
* access for this add-on. It specifies that this add-on will only
* attempt to read or modify the files in which the add-on is used,
* and not all of the user's files. The authorization request message
* presented to users will reflect this limited scope.
*/
/**
* Creates a menu entry in the Google Docs UI when the document is
* opened.
*
*/
function onOpen() {
var ui = DocumentApp.getUi();
ui.createMenu('Natural Language Tools')
.addItem('Mark Sentiment', 'markSentiment')
.addToUi();
}
/**
* Gets the user-selected text and highlights it based on sentiment
* with green for positive sentiment, red for negative, and yellow
* for neutral.
*
*/
function markSentiment() {
var POSITIVE_COLOR = '#00ff00'; // Colors for sentiments
var NEGATIVE_COLOR = '#ff0000';
var NEUTRAL_COLOR = '#ffff00';
var NEGATIVE_CUTOFF = -0.2; // Thresholds for sentiments
var POSITIVE_CUTOFF = 0.2;
var selection = DocumentApp.getActiveDocument().getSelection();
if (selection) {
var string = getSelectedText();
var sentiment = retrieveSentiment(string);
// Select the appropriate color
var color = NEUTRAL_COLOR;
if (sentiment <= NEGATIVE_CUTOFF) {
color = NEGATIVE_COLOR;
}
if (sentiment >= POSITIVE_CUTOFF) {
color = POSITIVE_COLOR;
}
// Highlight the text
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);
}
}
}
}
/**
* Returns a string with the contents of the selected text.
* If no text is selected, returns an empty string.
*/
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();
// Only translate elements that can be edited as text; skip
// images and other non-text elements.
if (element.editAsText) {
string = string + element.asText().getText();
}
}
}
}
return string;
}
/** Given a string, will call the Natural Language API and retrieve
* the sentiment of the string. The sentiment will be a real
* number in the range -1 to 1, where -1 is highly negative
* sentiment and 1 is highly positive.
*/
function retrieveSentiment(line) {
var apiKey = "your key here"; // Replace with your actual API key
var apiEndpoint = "https://language.googleapis.com/v1/documents:analyzeSentiment?key=" + apiKey;
// Create a structure with the text, its language, its type,
// and its encoding
var docDetails = {
language: 'en-us',
type: 'PLAIN_TEXT',
content: line
};
var nlData = {
document: docDetails,
encodingType: 'UTF8'
};
// Package all of the options and the data together for the call
var nlOptions = {
method : 'post',
contentType: 'application/json',
payload : JSON.stringify(nlData)
};
// And make the call
var response = UrlFetchApp.fetch(apiEndpoint, nlOptions);
var data = JSON.parse(response);
var sentiment = 0.0;
// Ensure all pieces were in the returned value
if (data && data.documentSentiment
&& data.documentSentiment.score){
sentiment = data.documentSentiment.score;
}
return sentiment;
}
- 在文件中新增文字,例如從狄更斯的小說《雙城記》中節錄一段內容。
點選「Check my progress」,確認目標已達成。
設定 Google 文件並呼叫 Natural Language API
工作 3:使用 Natural Language API 分析語法和詞性
透過 SSH 連線至系統為您佈建的 VM 執行個體「」,以完成這項工作。
- 使用下方程式碼建立名為
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"
}
-
使用 curl 指令將要求 (以及在工作 1 儲存的 API 金鑰環境變數) 傳遞至 Natural Language API,或使用 gcloud ML 指令分析語法。
-
將回應儲存至名為 analyze-response.txt 的檔案。
點選「Check my progress」,確認目標已達成。
使用 Natural Language API 分析語法和詞性
工作 4:執行多語言自然語言處理
透過 SSH 連線至系統為您佈建的 VM 執行個體「」,以完成這項工作。
- 使用下方程式碼建立名為
multi-nl-request.json 的 JSON 檔案,這段程式碼包含法文句子。
{
"document":{
"type":"PLAIN_TEXT",
"content":"Le bureau japonais de Google est situé à Roppongi Hills, Tokyo."
}
}
-
使用 curl 指令將要求 (以及在工作 1 儲存的 API 金鑰環境變數) 傳遞至 Natural Language API,或使用 gcloud ML 指令分析語法。
-
將輸出內容儲存至名為 multi-response.txt 的檔案。
點選「Check my progress」,確認目標已達成。
執行多語言自然語言處理
恭喜!
恭喜!您已成功呼叫 Natural Language API,並對 Google 文件中的文字執行情緒分析,以及分析語法和詞性。

Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2024 年 7 月 17 日
實驗室上次測試日期:2024 年 7 月 17 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。