使用 Cloud AI 进行情绪分析

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

Natural Language Toolkit (NLTK) 是用于自然语言处理 (NLP) 和机器学习的强大 Python 库。流行的云服务提供了一些替代 NLP 工具,它们使用与 NLTK 相同的基本概念。

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

如果您不想构建自己的自定义情绪分类器,可以使用 VADER 的一些替代方案。

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

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

亚马逊理解

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 情绪分析的模型。这意味着您可以以类似的方式解释结果。

微软 Azure 文本分析

Microsoft Azure 的认知服务之一是文本分析 API。与 Amazon Comprehend 类似,它提供 NLP 功能,如关键字提取、语言检测和命名实体识别。

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

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,包括文本分析。

谷歌云自然语言

谷歌还提供云自然语言服务。除了实体分析、内容分类、多语言支持和语法分析等类似功能外,您还可以使用AutoML自定义机器学习模型工具来创建自己的模型。对于自定义情绪分析,这是与其他一些提供商不同的一个领域。

下面是一个使用Python 的 Google Cloud 客户端库的客户端示例:

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 情绪分析开始并止步于此来实现快速胜利。您还可以使用来自亚马逊、微软、谷歌或 IBM 的云解决方案获得很多好处。

如果您想微调结果以针对您的用例实现最佳准确性,那么基于机器学习的自定义情感分析工作流程(如NLTK 和用于情感分析的机器学习中讨论的工作流程)可能是合适的选择。这是一个更复杂的过程,需要处理大量数据,但可能会为您提供您没有考虑过的见解。

如果您试图围绕您的内容、产品或服务来管理社区,最好寻找能够为您提供可操作见解的参与强度,而不是综合情绪分析。

如果您错过了我们关于 NLP 与 NLTK 和 Python 的任何文章,请从介绍用于自然语言处理的 NLTK开始。

发表评论

邮箱地址不会被公开。 必填项已用*标注