使用 API 進行即時分析 - Amazon Comprehend

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 API 進行即時分析

下列範例示範如何使用 Amazon Comprehend API 進行即時分析,使用和AWS開發套件 (適用於 .NET、Java 和 Python)。AWS CLI使用這些範例來了解 Amazon Comprehend 同步操作,以及做為您自己應用程式的建置區塊。

本節中的 .NET 範例使用 AWS SDK for .NET。您可以使用AWS Toolkit for Visual Studio來開發使用 .NET 的AWS應用程式。它包括實用的範本和AWS資源管理器,用於部署應用程式和管理服務。如需的 .NET 開發人員觀點AWS,請參閱 .NET 開發人員AWS指南

檢測主導語言

若要判斷文字中使用的主要語言,請使用此DetectDominantLanguage作業。若要在批次中偵測最多 25 個文件中的主要語言,請使用該BatchDetectDominantLanguage操作。如需詳細資訊,請參閱 即時批次處理 API

使用 AWS Command Line Interface

下列範例示範如何使用DetectDominantLanguage作業與AWS CLI。

此範例格式適用於 Unix、Linux 和 macOS。用於 Windows 時,請以插入號 (^) 取代每一行結尾處的 Unix 接續字元斜線 (\)。

aws comprehend detect-dominant-language \ --region region \ --text "It is raining today in Seattle."

Amazon Comprehend 回應與以下內容:

{ "Languages": [ { "LanguageCode": "en", "Score": 0.9793661236763 } ] }

使用AWS SDK for Java, 適用於 Python 的軟體開發套件,或 AWS SDK for .NET

如需如何判斷主要語言的 SDK 範例,請參閱搭DetectDominantLanguage配使用 AWS SDK或 CLI

偵測具名實體

若要決定文件中的具名實體,請使用此DetectEntities作業。若要在批次中偵測最多 25 個文件中的實體,請使用此BatchDetectEntities作業。如需詳細資訊,請參閱 即時批次處理 API

使用 AWS Command Line Interface

下列範例示範如何使用DetectEntities操作AWS CLI。您必須指定輸入文字的語言。

此範例格式適用於 Unix、Linux 和 macOS。用於 Windows 時,請以插入號 (^) 取代每一行結尾處的 Unix 接續字元斜線 (\)。

aws comprehend detect-entities \ --region region \ --language-code "en" \ --text "It is raining today in Seattle."

Amazon Comprehend 回應與以下內容:

{ "Entities": [ { "Text": "today", "Score": 0.97, "Type": "DATE", "BeginOffset": 14, "EndOffset": 19 }, { "Text": "Seattle", "Score": 0.95, "Type": "LOCATION", "BeginOffset": 23, "EndOffset": 30 } ], "LanguageCode": "en" }

使用AWS SDK for Java, 適用於 Python 的軟體開發套件,或 AWS SDK for .NET

如需如何判斷主要語言的 SDK 範例,請參閱搭DetectEntities配使用 AWS SDK或 CLI

偵測關鍵片語

若要決定文字中使用的關鍵名詞片語,請使用此DetectKeyPhrases操作。若要在批次中偵測最多 25 個文件中的關鍵名詞片語,請使用該BatchDetectKeyPhrases操作。如需詳細資訊,請參閱 即時批次處理 API

使用 AWS Command Line Interface

下列範例示範如何使用DetectKeyPhrases作業與AWS CLI。您必須指定輸入文字的語言。

此範例格式適用於 Unix、Linux 和 macOS。用於 Windows 時,請以插入號 (^) 取代每一行結尾處的 Unix 接續字元斜線 (\)。

aws comprehend detect-key-phrases \ --region region \ --language-code "en" \ --text "It is raining today in Seattle."

Amazon Comprehend 回應與以下內容:

{ "LanguageCode": "en", "KeyPhrases": [ { "Text": "today", "Score": 0.89, "BeginOffset": 14, "EndOffset": 19 }, { "Text": "Seattle", "Score": 0.91, "BeginOffset": 23, "EndOffset": 30 } ] }

使用AWS SDK for Java, 適用於 Python 的軟體開發套件,或 AWS SDK for .NET

如需偵測關鍵片語的 SDK 範例,請參閱搭DetectKeyPhrases配使用 AWS SDK或 CLI

決定情緒

Amazon Comprehend 提供下列 API 操作來分析情緒:

使用 AWS Command Line Interface

下列範例示範如何使用DetectSentiment作業與AWS CLI。這個例子指定了輸入文本的語言。

此範例格式適用於 Unix、Linux 和 macOS。用於 Windows 時,請以插入號 (^) 取代每一行結尾處的 Unix 接續字元斜線 (\)。

aws comprehend detect-sentiment \ --region region \ --language-code "en" \ --text "It is raining today in Seattle."

Amazon Comprehend 回應與以下內容:

{ "SentimentScore": { "Mixed": 0.014585512690246105, "Positive": 0.31592071056365967, "Neutral": 0.5985543131828308, "Negative": 0.07093945890665054 }, "Sentiment": "NEUTRAL", "LanguageCode": "en" }

使用AWS SDK for Java, 適用於 Python 的軟體開發套件,或 AWS SDK for .NET

如需決定輸入文字情緒的 SDK 範例,請參閱搭DetectSentiment配使用 AWS SDK或 CLI

針對目標情緒的即時分析

Amazon Comprehend 提供下列 API 操作,以進行目標情緒即時分析:

如果您正在分析的文字不包含任何目標情緒圖元類型,API 會傳回空白的實體陣列。

使用 AWS Command Line Interface

下列範例示範如何使用DetectTargetedSentiment作業與AWS CLI。這個例子指定了輸入文本的語言。

此範例格式適用於 Unix、Linux 和 macOS。用於 Windows 時,請以插入號 (^) 取代每一行結尾處的 Unix 接續字元斜線 (\)。

aws comprehend detect-targeted-sentiment \ --region region \ --language-code "en" \ --text "The burger was cooked perfectly but it was cold. The service was OK."

Amazon Comprehend 回應與以下內容:

{ "Entities": [ { "DescriptiveMentionIndex": [ 0 ], "Mentions": [ { "BeginOffset": 4, "EndOffset": 10, "Score": 1, "GroupScore": 1, "Text": "burger", "Type": "OTHER", "MentionSentiment": { "Sentiment": "POSITIVE", "SentimentScore": { "Mixed": 0.001515, "Negative": 0.000822, "Neutral": 0.000243, "Positive": 0.99742 } } }, { "BeginOffset": 36, "EndOffset": 38, "Score": 0.999843, "GroupScore": 0.999661, "Text": "it", "Type": "OTHER", "MentionSentiment": { "Sentiment": "NEGATIVE", "SentimentScore": { "Mixed": 0, "Negative": 0.999996, "Neutral": 0.000004, "Positive": 0 } } } ] }, { "DescriptiveMentionIndex": [ 0 ], "Mentions": [ { "BeginOffset": 53, "EndOffset": 60, "Score": 1, "GroupScore": 1, "Text": "service", "Type": "ATTRIBUTE", "MentionSentiment": { "Sentiment": "NEUTRAL", "SentimentScore": { "Mixed": 0.000033, "Negative": 0.000089, "Neutral": 0.993325, "Positive": 0.006553 } } } ] } ] }

偵測語法

若要剖析文字以擷取個別單字,並決定每個單字的語音部分,請使用此DetectSyntax作業。若要剖析批次中最多 25 個文件的語法,請使用此BatchDetectSyntax作業。如需詳細資訊,請參閱 即時批次處理 API

使用AWS Command Line Interface。

下列範例示範如何使用DetectSyntax作業與AWS CLI。這個例子指定了輸入文本的語言。

此範例格式適用於 Unix、Linux 和 macOS。用於 Windows 時,請以插入號 (^) 取代每一行結尾處的 Unix 接續字元斜線 (\)。

aws comprehend detect-syntax \ --region region \ --language-code "en" \ --text "It is raining today in Seattle."

Amazon Comprehend 回應與以下內容:

{ "SyntaxTokens": [ { "Text": "It", "EndOffset": 2, "BeginOffset": 0, "PartOfSpeech": { "Tag": "PRON", "Score": 0.8389829397201538 }, "TokenId": 1 }, { "Text": "is", "EndOffset": 5, "BeginOffset": 3, "PartOfSpeech": { "Tag": "AUX", "Score": 0.9189288020133972 }, "TokenId": 2 }, { "Text": "raining", "EndOffset": 13, "BeginOffset": 6, "PartOfSpeech": { "Tag": "VERB", "Score": 0.9977611303329468 }, "TokenId": 3 }, { "Text": "today", "EndOffset": 19, "BeginOffset": 14, "PartOfSpeech": { "Tag": "NOUN", "Score": 0.9993606209754944 }, "TokenId": 4 }, { "Text": "in", "EndOffset": 22, "BeginOffset": 20, "PartOfSpeech": { "Tag": "ADP", "Score": 0.9999061822891235 }, "TokenId": 5 }, { "Text": "Seattle", "EndOffset": 30, "BeginOffset": 23, "PartOfSpeech": { "Tag": "PROPN", "Score": 0.9940338730812073 }, "TokenId": 6 }, { "Text": ".", "EndOffset": 31, "BeginOffset": 30, "PartOfSpeech": { "Tag": "PUNCT", "Score": 0.9999997615814209 }, "TokenId": 7 } ] }

使用AWS SDK for Java, 適用於 Python 的軟體開發套件,或 AWS SDK for .NET

如需偵測輸入文字語法的 SDK 範例,請參閱搭DetectSyntax配使用 AWS SDK或 CLI

即時批次處理 API

若要傳送最多 25 份文件的批次,您可以使用 Amazon Comprehend 即時批次操作。呼叫批次作業與呼叫要求中每個文件的單一文件 API 相同。使用批次 API 可以為您的應用程式帶來更好的效能。如需詳細資訊,請參閱 多文檔同步處理

使用 Batch 處理 AWS CLI

這些範例說明如何使用AWS Command Line Interface. 除了BatchDetectDominantLanguage使用下面的 JSON 文件稱為process.json輸入的所有操作。對於該操作,LanguageCode實體不包括在內。

JSON 檔案 ("$$$$$$$$") 中的第三個文件會在批次處理期間造成錯誤。它包括在內,以便操作將包括BatchItemError在響應中。

{ "LanguageCode": "en", "TextList": [ "I have been living in Seattle for almost 4 years", "It is raining today in Seattle", "$$$$$$$$" ] }

這些範例已針對 Unix、Linux 和 macOS 進行格式化。用於 Windows 時,請以插入號 (^) 取代每一行結尾處的 Unix 接續字元斜線 (\)。

使用 batch(AWS CLI)檢測主要語言

BatchDetectDominantLanguage作業會決定批次中每個文件的主要語言。如需 Amazon Comprehend 可偵測到的語言清單,請參閱。主要语言下列AWS CLI命令會呼叫BatchDetectDominantLanguage作業。

aws comprehend batch-detect-dominant-language \ --endpoint endpoint \ --region region \ --cli-input-json file://path to input file/process.json

以下是來自BatchDetectDominantLanguage操作的響應:

{ "ResultList": [ { "Index": 0, "Languages":[ { "LanguageCode":"en", "Score": 0.99 } ] }, { "Index": 1 "Languages":[ { "LanguageCode":"en", "Score": 0.82 } ] } ], "ErrorList": [ { "Index": 2, "ErrorCode": "InternalServerException", "ErrorMessage": "Unexpected Server Error. Please try again." } ] }

使用批次偵測實體 (AWS CLI)

使用此BatchDetectEntities作業尋找存在於批次文件中的實體。如需實體的詳細資訊,請參閱實體。下列AWS CLI命令會呼叫BatchDetectEntities作業。

aws comprehend batch-detect-entities \ --endpoint endpoint \ --region region \ --cli-input-json file://path to input file/process.json

使用批處理(AWS CLI)檢測關鍵短語

BatchDetectKeyPhrases操作返回一批文檔中的關鍵名詞短語。下列AWS CLI命令會呼叫BatchDetectKeyNounPhrases作業。

aws comprehend batch-detect-key-phrases --endpoint endpoint --region region --cli-input-json file://path to input file/process.json

使用批次偵測情緒 (AWS CLI)

使用操作偵測批次文件的整體情BatchDetectSentiment緒。下列AWS CLI命令會呼叫BatchDetectSentiment作業。

aws comprehend batch-detect-sentiment \ --endpoint endpoint \ --region region \ --cli-input-json file://path to input file/process.json

使用 Batch 處理 AWS SDK for .NET

下列範例程式展示如何搭配使用此BatchDetectEntities作業AWS SDK for .NET。來自服務器的響應包含每個成功處理的文檔的BatchDetectEntitiesItemResult對象。如果處理文件時發生錯誤,回應中的錯誤清單中會有記錄。該示例獲取每個帶有錯誤的文檔並重新發送它們。

本節中的 .NET 範例使用 AWS SDK for .NET. 您可以使用AWS Toolkit for Visual Studio來開發使用 .NET 的AWS應用程式。它包括實用的範本和AWS資源管理器,用於部署應用程式和管理服務。如需的 .NET 開發人員觀點AWS,請參閱 .NET 開發人員AWS指南

using System; using System.Collections.Generic; using Amazon.Comprehend; using Amazon.Comprehend.Model; namespace Comprehend { class Program { // Helper method for printing properties static private void PrintEntity(Entity entity) { Console.WriteLine(" Text: {0}, Type: {1}, Score: {2}, BeginOffset: {3} EndOffset: {4}", entity.Text, entity.Type, entity.Score, entity.BeginOffset, entity.EndOffset); } static void Main(string[] args) { AmazonComprehendClient comprehendClient = new AmazonComprehendClient(Amazon.RegionEndpoint.USWest2); List<String> textList = new List<String>() { { "I love Seattle" }, { "Today is Sunday" }, { "Tomorrow is Monday" }, { "I love Seattle" } }; // Call detectEntities API Console.WriteLine("Calling BatchDetectEntities"); BatchDetectEntitiesRequest batchDetectEntitiesRequest = new BatchDetectEntitiesRequest() { TextList = textList, LanguageCode = "en" }; BatchDetectEntitiesResponse batchDetectEntitiesResponse = comprehendClient.BatchDetectEntities(batchDetectEntitiesRequest); foreach (BatchDetectEntitiesItemResult item in batchDetectEntitiesResponse.ResultList) { Console.WriteLine("Entities in {0}:", textList[item.Index]); foreach (Entity entity in item.Entities) PrintEntity(entity); } // check if we need to retry failed requests if (batchDetectEntitiesResponse.ErrorList.Count != 0) { Console.WriteLine("Retrying Failed Requests"); List<String> textToRetry = new List<String>(); foreach(BatchItemError errorItem in batchDetectEntitiesResponse.ErrorList) textToRetry.Add(textList[errorItem.Index]); batchDetectEntitiesRequest = new BatchDetectEntitiesRequest() { TextList = textToRetry, LanguageCode = "en" }; batchDetectEntitiesResponse = comprehendClient.BatchDetectEntities(batchDetectEntitiesRequest); foreach(BatchDetectEntitiesItemResult item in batchDetectEntitiesResponse.ResultList) { Console.WriteLine("Entities in {0}:", textList[item.Index]); foreach (Entity entity in item.Entities) PrintEntity(entity); } } Console.WriteLine("End of DetectEntities"); } } }