使用 Python 进行情感分析

欢迎来到本教程,了解如何使用 Python 进行情感分析。众所周知,人类的情感往往通过面部表情、言语交流、甚至书面方言或评论的形式表现出来。让我们看看如何使用 Python 来预测这一点。

使用 Python 进行情感分析简介

随着机器学习的趋势,不同的技术已应用于数据以做出类似于人脑的预测。

对人工智能这些任务的阐述将我们带入深度学习和自然语言处理的深处。

情感分析是一种自然语言处理技术。

什么是自然语言处理?

自然语言处理(NLP)是人工智能的一个子集,机器被训练来分析文本数据。情绪分析是一种预测作者情绪的 NLP 技术。我们所说的情绪通常是指积极、消极或中性。

NLP 是一个广阔的领域,情感检测的任务可以使用内置的库来完成,例如 NLTK(自然语言工具包)和各种其他库。

清理文本以进行解析和处理

NLP 库无法分析任何原始形式的文本数据。这些数据需要使用各种数据处理技术进行清理,例如:

  • 消除 HTML 标签:非结构化文本包含大量噪音,因此我们需要删除 HTML 标签(如果有)。
  • 消除重音字符:由于 NLP 主要适用于英语,因此重音字符的存在没有意义,因此需要删除。
  • 扩展收缩:英语口语中经常使用音节,因此有必要将它们扩展为原始形式。
  • 消除特殊字符:需要删除文本中的任何非字母数字字符。
  • 词形还原/词干提取:有必要得到单词的基本形式,即游泳的基本形式是游泳。
  • 删除停用词:需要删除冠词、连词、介词等停用词。

经过上述所有过程后,我们的文本(在 NLP 术语中通常称为语料库)被传递到我们的情感分析模型。

我放置了一些经过上述过程转换后的例句。

Before:
Terrible airport with arrogant staff and poor signage.
 
After:
terrible airport arrogant staff poor signage
Before:
The airport is huge and has almost all the facilities making the transit smooth.
 
After:
airport huge almost facility make transit smooth
Before:
The display told me that desks 59-62 were for Silkair, but in reality it was from 52-55.
 
After:
display tell desk 59 62 silkair reality 52 55

我们将在下面的情感分析模型中使用上面的预处理句子。

使用 Python 执行情感分析

我们将首先使用 Python 对其进行编码,然后传递示例来检查结果。我们将使用 TextBlob 库来执行情感分析。

在下面定义的函数中,文本语料库被传递到函数中,然后创建TextBlob对象并将其存储到分析对象中。

文本在通过时TextBlob()获得一些属性,例如包含极性的情感。然后检查这些极性值。

如果极性大于 0,则情绪为positive;如果等于 0,则情绪为neutral;如果极性小于 0,则情绪为negative

from textblob import TextBlob
def get_tweet_sentiment(text):
        analysis = TextBlob(textt)
        if analysis.sentiment.polarity > 0:
            return 'positive'
        elif analysis.sentiment.polarity == 0:
            return 'neutral'
        else:
            return 'negative'

我们的示例语句的输出如下:

Input corpus:
terrible airport arrogant staff poor signage
 
Sentiment:
negative
Input corpus:
display tell desk 59 62 silkair reality 52 55
 
Sentiment:
neutral
Input corpus:
airport huge almost facility make transit smooth
 
Sentiment:
positive

完整代码

from textblob import TextBlob
def get_tweet_sentiment(text):
        analysis = TextBlob(textt)
        if analysis.sentiment.polarity > 0:
            return 'positive'
        elif analysis.sentiment.polarity == 0:
            return 'neutral'
        else:
            return 'negative'
 
print(get_tweet_sentiment(<your text>))

我们模型的缺点

我们的情感分析模型无法预测任何讽刺评论的情感。事实上,预测讽刺推文并不属于 NLP 的范围(截至目前)。

结论

我希望这篇文章能够对使用自然语言处理进行文本情感分析提供一些见解。请尝试您自己的陈述,并在评论部分告诉我们您的反馈。