正在加载…
未找到任何结果。

    欢迎加入我们的社区,一起测试和分享您的知识!
    done
    学习 700 多个动手实验和课程并获得相关技能徽章

    使用 Natural Language API 進行實體和情緒分析

    实验 45 分钟 universal_currency_alt 5 积分 show_chart 中级
    info 此实验可能会提供 AI 工具来支持您学习。
    欢迎加入我们的社区,一起测试和分享您的知识!
    done
    学习 700 多个动手实验和课程并获得相关技能徽章

    GSP038

    Google Cloud 自修研究室標誌

    總覽

    Cloud Natural Language API 可讓您從文字中擷取實體、執行情緒和語法分析,並將文字分類。

    在這個實驗室中,您將瞭解如何運用 Natural Language API 分析實體、情緒和語法。

    目標

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

    • 建立 Natural Language API 要求並使用 curl 呼叫 API
    • 使用 Natural Language API 擷取實體並對文字執行情緒分析
    • 使用 Natural Language 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 產品和服務的選單,請點選左上角的「導覽選單」「導覽選單」圖示

    工作 1:建立 API 金鑰

    因為您使用 curl 傳送要求至 Natural Language API,您必須產生 API 金鑰以傳送要求網址。

    1. 如要建立 API 金鑰,請依序選取 Cloud 控制台中的「導覽選單」圖示 >「API 和服務」>「憑證」

    2. 按一下「建立憑證」並選取「API 金鑰」

    3. 複製系統產生的 API 金鑰,然後按一下「關閉」

    點選「Check my progress」,確認工作已完成。

    建立 API 金鑰

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

    1. 依序點選「導覽選單」圖示 >「Compute Engine」VM 執行個體清單中會顯示佈建的 Linux 執行個體 linux-instance

    2. 按一下「SSH」按鈕,系統會將您帶往互動式殼層。

    3. 請在指令列中輸入下列指令,並將 <YOUR_API_KEY> 替換成剛剛複製的金鑰。

    export API_KEY=<YOUR_API_KEY>

    工作 2:建立實體分析要求

    您使用的第一個 Natural Language API 方法是 analyzeEntities。透過這個方法,API 能夠從文字中擷取實體,例如人物、地點和事件。請使用以下語句嘗試執行 API 實體分析:

    Joanne Rowling, who writes under the pen names J. K. Rowling and Robert Galbraith, is a British novelist and screenwriter who wrote the Harry Potter fantasy series.

    request.json 檔案中建立要傳送至 Natural Language API 的要求。

    1. 使用 nano (程式碼編輯器) 建立 request.json 檔案:
    nano request.json
    1. request.json 中輸入或貼上下列程式碼:
    { "document":{ "type":"PLAIN_TEXT", "content":"Joanne Rowling, who writes under the pen names J. K. Rowling and Robert Galbraith, is a British novelist and screenwriter who wrote the Harry Potter fantasy series." }, "encodingType":"UTF8" }
    1. 按下 CTRL+X 退出 nano 編輯器,再按下 Y 鍵儲存檔案,然後按下 ENTER 鍵來確認操作。

    透過要求,您傳送文字資訊至 Natural Language API,支援的類型值為 PLAIN_TEXTHTML。您要在 content 中將文字傳送至 Natural Language API 進行分析。

    您也能將儲存在 Cloud Storage 的文字檔案傳送至 Natural Language API 進行處理。如果想傳送 Cloud Storage 中的檔案,請將 content 替換為 gcsContentUri,並將值設為文字檔案在 Cloud Storage 中的 URI。

    encodingType 會指示 API 在處理文字時該使用哪種類型的文字編碼。API 會使用該文字編碼計算特定實體在文字中出現的位置。

    點選「Check my progress」,確認工作已完成。

    建立實體分析要求

    工作 3:呼叫 Natural Language API

    1. 現在能使用下列 curl 指令,將要求主體和稍早儲存的 API 金鑰環境變數傳送至 Natural Language API (請在單一指令列中輸入所有指令):
    curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json > result.json
    1. 請執行以下指令來查看回應:
    cat result.json

    回應開頭應如以下所示:

    "content": "Joanne Rowling", "beginOffset": 0 }, "type": "PROPER" }, { "text": { "content": "Rowling", "beginOffset": 53 }, "type": "PROPER" }, { "text": { "content": "novelist", "beginOffset": 96 }, "type": "COMMON" }, { "text": { "content": "Robert Galbraith", "beginOffset": 65 }, "type": "PROPER" } ] }, ... ] }

    回應中的每個實體都包含實體 type (類型)、相關聯的 Wikipedia 網址 (如有)、salience (顯著性),以及實體在文字內容中出現位置的索引。顯著性是 [0、1] 範圍內的數字,表示實體在整個文字內容中的重要性。

    Natural Language API 也能辨識以不同方式提及的同一實體。請查看回應中的 mentions 清單:API 能夠說明「Joanne Rowling」、「Rowling」、「novelist」及「Robert Galbriath」指的都是同一實體。

    點選「Check my progress」,確認工作已完成。

    查看實體分析回應

    工作 4:使用 Natural Language API 進行情緒分析

    除了擷取實體外,Natural Language API 也可以讓您對一段文字執行情緒分析。此 JSON 要求必須包含與上方要求相同的參數,但這次請將這段文字改為情緒更強烈的內容。

    1. 使用 nano 編輯器將 request.json 中的程式碼替換為下列程式碼,您也可以將下方的 content 替換為自己的文字內容。
    { "document":{ "type":"PLAIN_TEXT", "content":"Harry Potter is the best book. I think everyone should read it." }, "encodingType": "UTF8" }
    1. 按下 CTRL+X 退出 nano 編輯器,再按下 Y 鍵儲存檔案,然後按下 ENTER 鍵來確認操作。

    2. 接著將要求傳送至 API 的 analyzeSentiment 端點:

    curl "https://language.googleapis.com/v1/documents:analyzeSentiment?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

    回應內容應如下所示:

    { "documentSentiment": { "magnitude": 1.9, "score": 0.9 }, "language": "en", "sentences": [ { "text": { "content": "Harry Potter is the best book.", "beginOffset": 0 }, "sentiment": { "magnitude": 0.9, "score": 0.9 } }, { "text": { "content": "I think everyone should read it.", "beginOffset": 31 }, "sentiment": { "magnitude": 0.9, "score": 0.9 } } ] } 注意:若輸出分數與範例稍有不同,請不用擔心。

    請注意,您會得到兩種情緒值:整份文件的情緒,以及按語句細分的情緒。此 sentiment 方法會傳回兩個值:

    • score (分數):範圍介於 -1.0 與 1.0 之間的數字,表示這段陳述的情緒正面或負面程度。
    • magnitude (規模):範圍從 0 到無限大的數字,代表這段陳述表達的情緒強度,無論是正面還是負面情緒。

    長度較長且含有強烈情緒陳述的文字區塊,得到的規模值也越高。第一句的分數為正面 (0.7),第二句的分數則為中立 (0.1)。

    工作 5:分析實體情緒

    除了提供整份文字文件的情緒詳細資料外,Natural Language API 也能按照文字內容中的實體細分情緒。請使用以下例句:

    I liked the sushi but the service was terrible.

    上個工作中的做法,也就是取得整個語句的情緒分數,較不適合用於這個示例。如果這是某間餐廳眾多評論中的一則,您可能會想明確掌握其中顧客表示喜歡與不喜歡的部分。Natural Language API 提供了稱為 analyzeEntitySentiment 的方法,可讓您取得文字內容中每個實體的情緒,來看看運作方式吧!

    1. 使用 nano 編輯器將 request.json 更新為以下語句:
    { "document":{ "type":"PLAIN_TEXT", "content":"I liked the sushi but the service was terrible." }, "encodingType": "UTF8" }
    1. 按下 CTRL+X 退出 nano 編輯器,再按下 Y 鍵儲存檔案,然後按下 ENTER 鍵來確認操作。

    2. 接著請使用下列 curl 指令呼叫 analyzeEntitySentiment 端點:

    curl "https://language.googleapis.com/v1/documents:analyzeEntitySentiment?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

    您會在回應中收到兩個實體物件,分別為「sushi」和「service」。以下是完整的 JSON 回應:

    { "entities": [ { "name": "sushi", "type": "CONSUMER_GOOD", "metadata": {}, "salience": 0.51064336, "mentions": [ { "text": { "content": "sushi", "beginOffset": 12 }, "type": "COMMON", "sentiment": { "magnitude": 0, "score": 0 } } ], "sentiment": { "magnitude": 0, "score": 0 } }, { "name": "service", "type": "OTHER", "metadata": {}, "salience": 0.48935664, "mentions": [ { "text": { "content": "service", "beginOffset": 26 }, "type": "COMMON", "sentiment": { "magnitude": 0.7, "score": -0.7 } } ], "sentiment": { "magnitude": 0.7, "score": -0.7 } } ], "language": "en" }

    您可以看到系統對「sushi」傳回的分數為中立分數 0,「service」的分數則為 -0.7。分析成效非常出色!您可能也會發現,系統針對每個實體傳回了兩個 sentiment 物件。如果文字內容不只一次提及其中一個字詞,API 就會對每次提及傳回不同的情緒分數與規模值,以及該實體的匯總情緒值。

    注意:若輸出分數與範例稍有不同,請不用擔心。

    工作 6:分析語法和詞性

    語法分析是 Natural Language API 的另一種方法,可讓您進一步瞭解文字內容的語言詳細資訊。analyzeSyntax 會擷取語言資訊,將收到的文字內容拆分為一系列語句和詞元 (通常為字詞邊界),再深入分析這些詞元。API 會對文字內容中的每個字詞提供詞性 (如名詞、動詞和形容詞等),以及與句子中其他字詞的關係 (例如是根動詞還是修飾語)。

    讓我們以簡單的語句試用此方法。接下來的 JSON 要求和目前建立的要求類似,但是多了 features 鍵,指示 API 執行語法註解。

    1. 使用 nano 編輯器將 request.json 中的程式碼替換為下列程式碼:
    { "document":{ "type":"PLAIN_TEXT", "content": "Joanne Rowling is a British novelist, screenwriter and film producer." }, "encodingType": "UTF8" }
    1. 按下 CTRL+X 退出 nano 編輯器,再按下 Y 鍵儲存檔案,然後按下 ENTER 鍵來確認操作。

    2. 接著呼叫 API 的 analyzeSyntax 方法:

    curl "https://language.googleapis.com/v1/documents:analyzeSyntax?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

    系統應會針對語句中的每個符記傳回物件,如下所示:

    { "text": { "content": "is", "beginOffset": 15 }, "partOfSpeech": { "tag": "VERB", "aspect": "ASPECT_UNKNOWN", "case": "CASE_UNKNOWN", "form": "FORM_UNKNOWN", "gender": "GENDER_UNKNOWN", "mood": "INDICATIVE", "number": "SINGULAR", "person": "THIRD", "proper": "PROPER_UNKNOWN", "reciprocity": "RECIPROCITY_UNKNOWN", "tense": "PRESENT", "voice": "VOICE_UNKNOWN" }, "dependencyEdge": { "headTokenIndex": 2, "label": "ROOT" }, "lemma": "be" },

    讓我們進一步瞭解回應內容:

    • partOfSpeech 指出「Joanne」為名詞。
    • dependencyEdge 包含特定資料,可用來建立文字的相依性剖析樹狀結構。基本上,這個圖表會呈現語句中不同字詞之間的關係。上方語句的相依性剖析樹狀結構看起來可能會像這樣:

    相依性剖析樹狀結構

    請注意:您可以使用《Natural Language AI 指南》中的 Natural Language 示範,在瀏覽器中自行建立相依性剖析樹狀結構。
    • headTokenIndex 是符記的索引,該符記具有指向「Joanne」的曲線。您可以將語句中的每個符記想像為陣列中的字詞。
    • 「Joanne」的 headTokenIndex 值 1 指的是「Rowling」這個字詞,「Joanne」在相依性剖析樹狀結構中與此字詞相連。Label 的值 NN (「複合名詞修飾語」的縮寫) 說明字詞在語句中的角色:「Joanne」修飾語句的主詞「Rowling」。
    • lemma 是字詞的標準格式。舉例來說,run、runs、ran 和 running 這些字詞都以 run 這個詞條為基礎。Lemma 值適合用於持續追蹤特定字詞在一大段文字中的出現次數。

    工作 7:多語言自然語言處理

    Natural Language API 也支援英語以外的語言 (歡迎前往語言支援指南查看完整清單)。

    1. 以日文句子修改 request.json 中的程式碼:
    { "document":{ "type":"PLAIN_TEXT", "content":"日本のグーグルのオフィスは、東京の六本木ヒルズにあります" } }
    1. 按下 CTRL+X 退出 nano 編輯器,再按下 Y 鍵儲存檔案,然後按下 ENTER 鍵來確認操作。

    您會發現,儘管沒有指明文字內容的語言種類,API 也會自動偵測!

    1. 接著將要求傳送至 analyzeEntities 端點:
    curl "https://language.googleapis.com/v1/documents:analyzeEntities?key=${API_KEY}" \ -s -X POST -H "Content-Type: application/json" --data-binary @request.json

    您會收到以下回應:

    { "entities": [ { "name": "日本", "type": "LOCATION", "metadata": { "mid": "/m/03_3d", "wikipedia_url": "https://en.wikipedia.org/wiki/Japan" }, "salience": 0.23854347, "mentions": [ { "text": { "content": "日本", "beginOffset": 0 }, "type": "PROPER" } ] }, { "name": "グーグル", "type": "ORGANIZATION", "metadata": { "mid": "/m/045c7b", "wikipedia_url": "https://en.wikipedia.org/wiki/Google" }, "salience": 0.21155767, "mentions": [ { "text": { "content": "グーグル", "beginOffset": 9 }, "type": "PROPER" } ] }, ... ] "language": "ja" }

    Wikipedia 網址甚至會指向日文的 Wikipedia 頁面,是不是非常厲害?

    恭喜!

    您已瞭解如何使用 Cloud Natural Language API 執行文字分析,包括擷取實體、分析情緒及進行語法註解。在本實驗室中,您建立了 Natural Language API 要求並使用 curl 呼叫這個 API、擷取實體並使用 Natural Language API 對文字執行情緒分析,以及使用不同語言建立 Natural Language API 要求。

    後續步驟

    • 查看說明文件中的 Natural Language API 教學課程

    Google Cloud 教育訓練與認證

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

    使用手冊上次更新日期:2024 年 2 月 14 日

    實驗室上次測試日期:2023 年 10 月 13 日

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

    此内容目前不可用

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

    太好了!

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