65.9K
CodeProject 正在变化。 阅读更多。
Home

使用云 AI 进行情感分析

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2020 年 5 月 29 日

CPOL

4分钟阅读

viewsIcon

9787

downloadIcon

89

本文是情感分析系列文章中的第七篇,该系列文章使用 Python 和开源自然语言工具包。在本文中,我们将探讨 VADER 的一些替代方案。

本情感分析系列文章的目的是使用 Python 和开源自然语言工具包 (NLTK) 构建一个库,该库可以扫描 Reddit 帖子的回复,并检测发帖者是否使用了消极、敌对或其他不友好的语言。

如果您不想构建自己的自定义情感分类器,则有一些 VADER 的替代方案。

以下是一些流行的云平台提供的替代自然语言工具包 (NLTK) 的概述,NLTK 是一个流行的用于自然语言处理 (NLP) 的 Python 库。

如果您已经阅读了我们在《介绍 NLTK 进行自然语言处理》中开始的 NLP 情感分析系列文章,您已经了解了一种成熟的方法。下面的概述将向您展示这些云服务上情感分析的界面和响应是什么样的。在许多情况下,它与 NLTK 非常相似,只是利用了别人的计算能力。

Amazon Comprehend

Amazon Web Services (AWS) 提供了一个 Amazon Comprehend NLP 服务,其中包含一系列功能,与 NLTK 中的某些功能类似。

与 NLTK 的 pos_tag 类似,AWS 服务可以识别词性 (POS) 并将其标记为专有名词、地点、位置等。它支持 100 种可以从非结构化文本中检测到的语言,并包含文本摘要功能,用于识别和提取有助于给定文本整体含义的关键短语。

如果您想调用它,这是客户端代码的样子

import boto3
client = boto3.client('comprehend')
client.detect_sentiment(text='This is cool!')

以及返回的响应

{
"SentimentScore": {
    "Mixed": 0.03058,
    "Positive": 0.94992,
    "Neutral": 0.01415,
    "Negative": 0.00893
},
"Sentiment": "POSITIVE",
"LanguageCode": "en"
}

这应该看起来很熟悉。服务计算值的方式可能不同,但响应看起来遵循与我们之前回顾的 VADER 情感分析类似的模型。这意味着您可以以类似的方式解释结果。

Microsoft Azure Text Analytics

在 Microsoft Azure 的认知服务中,有一个 Text Analytics API。与 Amazon Comprehend 类似,它提供了关键短语提取、语言检测和命名实体识别等 NLP 功能。

Microsoft 提供了一个 Azure Python SDK 客户端库,可以简化发送文本进行情感分析的调用。在此示例中,我们从 SDK (azure.ai.textanalytics) 导入 TextAnalyticsClient 函数

from azure.ai.textanalytics import TextAnalyticsClient
text_analytics_client = TextAnalyticsClient(
    endpoint=endpoint, credential=ta_credential)
documents = ["I’m using Azure.  This is cool!"]
response = client.analyze_sentiment(documents = documents)[0]

客户端库使通过一次调用 client.analyze_sentiment 即可轻松执行分析。

此客户端的一个不同之处在于,它不仅对整个文档的得分进行评分,而且对每个句子也进行评分。

{
"documents": [
    {
        "id": "1",
        "sentiment": "positive",
        "documentScores": {
            "positive": 0.98570585250854492,
            "neutral": 0.0001625834556762,
            "negative": 0.0141316400840878
        },
        "sentences": [
            {
                "sentiment": "neutral",
                "sentenceScores": {
                    "positive": 0.0785155147314072,
                    "neutral": 0.89702343940734863,
                    "negative": 0.0244610067456961
                },
                "offset": 0,
                "length": 12
            },
            {
                "sentiment": "positive",
                "sentenceScores": {
                    "positive": 0.98570585250854492,
                    "neutral": 0.0001625834556762,
                    "negative": 0.0141316400840878
                },
                "offset": 13,
                "length": 36
            }
        ]
    },
}

在 GitHub 上有许多有用的 示例,用于使用 Azure Python SDK 和认知服务 API,包括 Text Analytics。

Google Cloud Natural Language

Google 还提供了一个 Cloud Natural Language 服务。除了实体分析、内容分类、多语言支持和语法分析等类似功能外,您还可以使用 AutoML 自定义机器学习模型工具来创建自己的模型。对于自定义情感分析,这是与其他一些提供商的差异点。

这是使用 Google Cloud Client library for Python 的客户端示例

from google.cloud import language_v1
from google.cloud.language_v1 import enums

text_content = ‘This is cool!’

client = language_v1.LanguageServiceClient()
document = {"content": text_content, "type": 
    enums.Document.Type.PLAIN_TEXT, "language": ‘en’}
response = client.analyze_sentiment(document,  
    encoding_type=enums.EncodingType.UTF8)
```

响应不仅包括整个文档的情感得分和幅度,还包括每个句子的情感得分和幅度。

评估

您如何在项目中应用情感分析可能取决于业务目标。

完美可能是“足够好”的敌人,因此许多项目可以通过从 VADER 情感分析开始并止步于此来快速获胜。您还可以通过使用 Amazon、Microsoft、Google 或 IBM 的云解决方案获得很大的收益。

如果您想微调结果以获得针对您的用例的最佳准确性,那么像《NLTK 和机器学习进行情感分析》中讨论的那样,基于机器学习的自定义情感分析工作流程可能适合您。这是一个更复杂的过程,需要大量的 the data wrangling,但可能会给您带来您未曾考虑到的见解。

如果您正试图管理围绕您的内容、产品或服务的社区,那么寻找一种能够为您提供可操作见解的参与强度,而不是聚合情感分析,可能更好。

如果您错过了我们涵盖 NLTK 和 Python NLP 的任何文章,请从《介绍 NLTK 进行自然语言处理》开始。

© . All rights reserved.