作者 | Satyam Kumar

编译 | VK
来源 | Towards Data Science

情感分析是一种自然语言处理技术,用于确定给定文本的情感或观点。情感分析模型可以通过从自然语言中提取意义并将其分配分数来预测给定的文本数据是正的、负的还是中性的。

开发或训练情绪分析模型有多种方法,本文中我们将讨论5种不同的方法:

  • 定制训练监督模型

  • TextBlob

  • 基于词典的模型

  • Bert

  • 基于命名实体的情感分析器

情绪分析被各种组织用来了解客户的情绪,并相应地做出更快速和准确的商业决策。

定制训练监督模型:

你可以训练一个定制的机器学习或深度学习情感分析模型。一个有标记的数据集是训练一个健壮的ML模型的关键。ML模型将学习数据集中的各种模式,并能预测文本的情感。

要训练自定义情绪分析模型,必须遵循以下步骤:

  • 收集原始标记数据集进行情绪分析。

  • 文本预处理

  • 文本的数字编码

  • 选择合适的ML算法

  • 调参与训练ML模型

  • 预测

阅读下面的文章,了解如何利用朴素贝叶斯分类器算法开发一个影评情感分析模型。

https://satyam-kumar.medium.com/imdb-movie-review-polarity-using-naive-bayes-classifier-9f92c13efa2d

TextBlob:

TextBlob是一个开源的Python库,用于处理文本数据,允许你在其简单API的框架下指定要使用的算法。TextBlobs的API可以用来执行诸如词性标注、名词短语提取、分类、翻译、情感分析等任务。

对于情绪分析,TextBlob库提供了两种实现:

  • patternalyzer:(默认)基于模式库。

  • NaiveBayesAnalyzer:一个基于电影评论语料库的NLTK分类器。

安装:

pip install -U textblob

实施:

from textblob import TextBlob
from textblob.sentiments import NaiveBayesAnalyzer, PatternAnalyzertext = 'I liked the movie, the actors performance was too good.'# NaiveBayesAnalyzer
blob = TextBlob(text, analyzer=NaiveBayesAnalyzer())
print(blob.sentiment)# PatternAnalyzer
blob = TextBlob(text, analyzer=PatternAnalyzer())
print(blob.sentiment)

基于词典的模型

它涉及到从文本语料库中创建一个n-gram的正负词词典。该方法需要一个带标签的文本语料库,并使用自定义python函数分别为正文本和负文本创建一个n-gram词典。

自定义词也可以添加到字典的基础上领域知识,作为一个额外的优势。

在下一步中,创建一个自定义函数,该函数可以使用上面形成的正负词词典来分析给定的输入文本,并可以将其分类为正面情绪或负面情绪。

  • 输入文本中的每个积极词都会增加情感得分,而消极词则会减少情感得分。

  • 将最后的情绪分数除以该文本中的字数,以使分数标准化。

积极情绪得分介于0到1之间,表示积极情绪,其中1表示100%置信度的积极情绪预测。然而,负面情绪得分在-1到0之间,其中-1是100%置信度的负面情绪预测。

实施:

import nltkpos_words = []
neg_words = []def compute_sentiment_score(text):sentiment_score = 0words = nltk.word_tokenize(text)for word in words:if word in pos_words:print('pos:',word)sentiment_score=sentiment_score+1if word in neg_words:print('neg:',word)sentiment_score=sentiment_score-1return sentiment_score/len(words)with open('datapath') as file:for line in file:line_attrib = line.split()word = line_attrib[2].split('=')[1] #2nd column in the filepolarity = line_attrib[-1].split('=')[1] #last column in the fileif polarity =='positive':pos_words.append(word)elif polarity=='negative':neg_words.append(word)print('Total positive words found: ',len(pos_words))
print('Total negative words found: ',len(neg_words))text = 'I loved the movie, the actors performance was mindblowing.'
sentiment = compute_sentiment_score(text)
print('The sentiment score of this text is: {:.2f}'.format(sentiment))

BERT:

BERT代表来自Google开发的Transformers的双向编码器表示,它是用于NLP任务的最先进的ML模型。要使用BERT训练情绪分析模型,请执行以下步骤:

  • 安装Transformer库

  • 加载BERT分类器和标记器

  • 创建已处理的数据集

  • 配置和训练加载的BERT模型,并对其超参数进行微调

  • 进行情绪分析预测

实现:

按照下面提到的文章使用BERT实现情绪分析模型。

https://towardsdatascience.com/sentiment-analysis-in-10-minutes-with-bert-and-hugging-face-294e8a04b671

基于命名实体的情感分析器:

基于命名实体的情感分析器主要针对实体词或重要词。也可以称为目标情绪分析,它只关注重要的词语或实体,比上述三种方法更准确、更有用。

  • 第一步是在文本语料库中找到所有命名实体。

  • 在文本上应用名称实体识别来查找各种实体,如PERSON、ORG、GPE。

  • 基于命名实体的情感分析。

  • 以找到包含命名实体的句子为目标,只对这些句子逐一进行情感分析。


结论:

在本文中,我们讨论了开发情绪分析模型的5种不同方法。让我们明白,在开发情绪分析模型时,有各种各样可用的方法。它需要根据问题陈述和数据集对算法进行规划和调整。

参考文献:

[1] BERT Wiki: https://en.wikipedia.org/wiki/BERT

[2] Sentiment Analysis using BERT by Orhan G. Yalçın: https://towardsdatascience.com/sentiment-analysis-in-10-minutes-with-bert-and-hugging-face-294e8a04b671


往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑温州大学《机器学习课程》视频
本站qq群851320808,加入微信群请扫码:

【NLP】在机器学习中开发情感分析器的5种方法相关推荐

  1. 机器学习中,有哪些特征选择的工程方法?

    机器学习中,有哪些特征选择的工程方法? 数据和特征决定了机器学习的上限,而模型和算法调参只是逼近这个上限而已. 0,特征本身是否具有基础的表征能力或者判别性,例如方差筛选法.方差是衡量一个变量的离散程 ...

  2. Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法...

    Struts2中action接收参数的三种方法及ModelDriven跟Preparable接口结合JAVA反射机制的灵活用法 www.MyException.Cn   发布于:2012-09-15 ...

  3. python csv库,Python 中导入csv数据的三种方法

    Python 中导入csv数据的三种方法,具体内容如下所示: 1.通过标准的Python库导入CSV文件: Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文 ...

  4. java定时调度main方法_java相关:Spring中实现定时调度的几种方法

    java相关:Spring中实现定时调度的几种方法 发布于 2020-11-28| 复制链接 本篇文章主要介绍了Spring中实现定时调度示例,可以在无人值守的时候系统可以在某一时刻执行某些特定的功能 ...

  5. 计算机启动应用程序的方法,excel的程序_Excel2010中启动应用程序的三种方法

    使用Excel时,需要先启动应用程序,怎么去进行操作启动它?今天,学习啦小编就教大家在Excel2010中启动应用程序的三种方法. Excel2010中启动应用程序的三种步骤如下: 1.开始菜单 在桌 ...

  6. 去除html重复的元素 js,js数组中去除重复值的几种方法

    在日常开发中,我们可能会遇到将一个数组中里面的重复值去除,那么,我就将我自己所学习到的几种方法分享出来 去除数组重复值方法: 1,利用indexOf()方法去除 思路:创建一个新数组,然后循环要去重的 ...

  7. 随机森林计算特征重要性_随机森林中计算特征重要性的3种方法

    随机森林计算特征重要性 The feature importance describes which features are relevant. It can help with a better ...

  8. c语言中字符串去掉逗号,JS四种方法去除字符串最后的逗号

    window.οnlοad=function() { var obj = {name: "xxx", age: 30, sex: "female"};//定义一 ...

  9. Simulink中构造时变传递函数的四种方法

    1. 原由 传递函数是针对线性时不变(Linear Time-Invariant,LTI)系统定义的,严格来说,时变传递函数的说法并不十分严谨.但 "时变"和"非线性&q ...

最新文章

  1. FIN_WAIT_2
  2. CentOS 6.5 apache源码安装2.0版
  3. android与mysql数据库同步_android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?...
  4. Java集合框架图(学习)
  5. VeeValidate在vue项目里表单校验应用案例
  6. 什么是 MIME Type
  7. Maximize The Beautiful Value
  8. python-类的装饰器-主要给类添加属性用途
  9. java spliterator,Java 8 之Stream Spliterator
  10. Shiro学习总结(3)——Apache Shiro身份认证
  11. c语言枚举如何当函数返回值,C语言学习五 — 数组与枚举
  12. Java继承_这10道Java面试题!大部分的人回答不出来
  13. 【SDOI 2009】学校食堂 Dining
  14. [工具]PyCharm激活、注册码无效解决办法
  15. python物业管理系统_小型物业管理系统的设计与实现研究背景及意义
  16. 逻辑回归(Logistic Regression)详解
  17. 哪个网站可以免费学计算机办公软件,有没有可以免费学习办公软件的网站?
  18. android删除sd卡照片恢复,手机内存清理方法及照片误删恢复方法 手机党必备
  19. Java操作Excel基础--POI之HSSF
  20. 战队口号霸气押韵8字_霸气销售团队激励口号押韵

热门文章

  1. 用C#实现C/S模式下软件自动在线升级[转载]
  2. #转载#记录:文献阅读第一利器:文献笔记法(Literature Notes)
  3. 2050 Programming Competition (CCPC)
  4. MySQL数据库Innodb储存引擎----储存页的结构
  5. ARC下,不显式指定任何属性关键字时,默认的关键字都有哪些
  6. ios开发时,在Xcode中添加多个targets进行版本控制
  7. linux 文件大小ll和du不一致问题
  8. (转)RemoteView 设置控件属性
  9. 流行病学与生物统计学: 临床研究导论 Epidemiology and Biostatistics: An Introduction to Clinical Research
  10. 这些实验好习惯科研小白一定要先养成!