はじめに
今回は Amazon Comprehend の「感情分析」を試します。
今回作成したAmazon Comprehend の感情分析機能を試すページ
準備
[Lambda , API Gatewayの準備をします。]
(https://qiita.com/tanaka_takurou/items/3f93295de6cff060ec09)
[Amazon Comprehendの資料]
Amazon Comprehend が日本語に対応しました
Amazon Comprehendが日本語対応したのでAlexaスキルで感情分析してみた
【初心者でも使える】AWSが提供する文書解析サービス「Amazon Comprehend」が日本語対応したので触ってみた!
WEBページ・API作成
GO言語のAWS Lambda関数ハンドラー aws-lambda-go を使用してHTMLやJSONを返す処理を作成します。
また、Comprehend を使用するため aws-sdk-go を利用します。
[参考資料]
AWS SDK for Go API Reference
感情分析するには DetectSentiment を使う。
func detectSentiment(message string)(string, error) {
svc := comprehend.New(session.New(), &aws.Config{
Region: aws.String("ap-northeast-1"),
})
input := &comprehend.DetectSentimentInput{
LanguageCode: aws.String(languageCode),
Text: aws.String(message),
}
res, err := svc.DetectSentiment(input)
if err != nil {
return "", err
}
return aws.StringValue(res.Sentiment), nil
}
※ 6/14 追記
言語検出するには DetectDominantLanguage を使う。
func detectDominantLanguage(message string)(string, error) {
svc := comprehend.New(session.New(), &aws.Config{
Region: aws.String("ap-northeast-1"),
})
input := &comprehend.DetectDominantLanguageInput{
Text: aws.String(message),
}
res, err := svc.DetectDominantLanguage(input)
if err != nil {
return "", err
}
results, err2 := json.Marshal(res.Languages)
if err2 != nil {
return "", err2
}
return string(results), nil
}
※ 6/14 追記
エンティティ認識するには DetectEntities を使う。
func detectEntities(message string)(string, error) {
svc := comprehend.New(session.New(), &aws.Config{
Region: aws.String("ap-northeast-1"),
})
input := &comprehend.DetectEntitiesInput{
LanguageCode: aws.String(languageCode),
Text: aws.String(message),
}
res, err := svc.DetectEntities(input)
if err != nil {
return "", err
}
results, err2 := json.Marshal(res.Entities)
if err2 != nil {
return "", err2
}
return string(results), nil
}
※ 6/14 追記
キーフレーズ抽出するには DetectKeyPhrases を使う。
func detectKeyPhrases(message string)(string, error) {
svc := comprehend.New(session.New(), &aws.Config{
Region: aws.String("ap-northeast-1"),
})
input := &comprehend.DetectKeyPhrasesInput{
LanguageCode: aws.String(languageCode),
Text: aws.String(message),
}
res, err := svc.DetectKeyPhrases(input)
if err != nil {
return "", err
}
results, err2 := json.Marshal(res.KeyPhrases)
if err2 != nil {
return "", err2
}
return string(results), nil
}
※ 6/14 追記
構文解析するには DetectSyntax を使う。
func detectSyntax(message string)(string, error) {
svc := comprehend.New(session.New(), &aws.Config{
Region: aws.String("ap-northeast-1"),
})
input := &comprehend.DetectSyntaxInput{
LanguageCode: aws.String(languageCodeEn),
Text: aws.String(message),
}
res, err := svc.DetectSyntax(input)
if err != nil {
return "", err
}
results, err2 := json.Marshal(res.SyntaxTokens)
if err2 != nil {
return "", err2
}
return string(results), nil
}
終わりに
今回はAmazon Comprehendの 感情分析の機能を試しました。
他にもComprehendの機能が利用できるため、今後試していきたいと思います。
※ 6/14 追記
テキストの言語検出・エンティティ認識・キーフレーズ抽出・構文解析する機能を試しました。
テキストの言語検出
テキストのエンティティ認識
テキストのキーフレーズ抽出
テキストの構文解析
※ 6/14時点で、テキストの構文解析は言語コードを日本語に設定するとエラーが発生したため、英語で試しました。