AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

比朴素贝叶斯更优秀的情感分析方法?答案在这里

  • 2018-11-19
  • 本文字数:1937 字

    阅读完需:约 6 分钟

比朴素贝叶斯更优秀的情感分析方法?答案在这里

AI 前线导读: 根据在线评论和评分,我们可以为客户提供关于其信誉度的深刻见解。我们会拆解评论文本了解评论的内容,并告诉我们的客户他们的客户在谈论什么,以及这些客户对其关键业务的满意度。


更多干货内容请关注微信公众号“AI 前线”(ID:ai-front)


例如,我们可以为客户识别提及价格的 100 条评论,通过分析这些评论的星级,我们可能会发现 80%的评论是积极的,评论的平均评分为 4.0。但是,这种方法仍有改进的空间:提及价格的积极评价不一定​​代表对价格满意。例如:


食物很棒,服务绝对优秀。但是这家咖啡店风格的餐厅价格非常高。


这个 5 星的评价显然是对餐厅的价格不太满意。我们需要一个模型来告诉我们句子或子句表达的情绪,以了解是哪些元素影响了评分等级。下面是我们为构建自己的情感挖掘工具而开发并使用的一些技术。



情感分析:了解线上用户表达的情绪

朴素贝叶斯分类器

朴素贝叶斯是首选,也是最容易进行文本情感分类的方法。它基于条件概率的贝叶斯公式:



我们用 Bag of Words 来表示一个文本,它是句子中每个单词 w 的一个特征“单词出现 f 次”,f 是句子中 w 出现的频率。假设朴素贝叶斯认为这些特征是独立的,这个公式可以帮助我们推断出句子为正的概率(A)即每个 w 中 w 出现了 f 次(B)。实际上,我们可以根据频率从足够大的数据集中推导出句子为正(A)的概率,每个特征的概率,以及是它们重合(B)的概率。在 10000 个已注释句子的训练集上训练该模型,我们得到一组信息特征,这有助于预测句子是正面还是负面评价。以下是我们获得的 10 个最有代表性的特征:



朴素贝叶斯分类器的信息特征


这种方法最容易实现,它最大的优点在于完全透明。在处理时我们会知道分类器发现了一组包含强烈的正面或强烈负面信息的单词,所以我们可以用这种方法对句子进行分类。

如何改进

但是,这种方法有几个缺点。


首先,它无法确定中立信息。事实上,词语可以具有正面或负面的意义(“好”,“太棒了”,“可怕”…),但有些词是中性的。通常情况下,正是缺乏这种带有积极或消极意义的词汇或句子结构,才让句子缺失了明确的情感意义。但 Bag of Words 表示不能解决这个问题。


它也无法理解强度和否定意义。例如,“比较好”和“相当好”,第一个比第二个词汇出现在正面语句中的几率更大。我们尝试了一些方法来解决这个问题:添加一个有意义的双字母组列表(这意味着我们将“非常好”作为单个单词读取),或者在双字母组上训练模型而不是在单个单词上训练,但两者对我们的模型都没有太大的改进。大多数情况下模型无法识别否定,因为它不考虑单词顺序。


最重要的是,朴素贝叶斯模型在解决局部情绪分析问题方面表现不佳。在长篇文章中,具有高频率的积极情绪词,如“非常好的”、“美味”等很可能表达了作者积极的情绪。但是,由于我们的目标是确定 local sentiment,我们需要处理短句和子句的工具。(星级评分可以告诉我们作者的整体情绪。)句子中没有足够的词汇,所以我们需要非常精确地理解语义结构。


Bag of Words 表示是一种非常糟糕的方法。例如,“食物本可以更美味”这个句子,模型检测到与正面感觉有关的“美味”这个词,但不明白“本可以”表示一种否定或细微差异。许多短句都是这样的,仅依靠小型句子数据集会把准确率从大约 77%拉低到小于 65%。

基于规则的情绪模型

为了改善朴素贝叶斯方法并使其适合短句情绪分析,我们添加了一些规则,加入否定、强度标记(“更多”、“极端”、“绝对”、“最”等)、细微差别和其他语义结构,以及经常出现在情绪短语附近并改变其含义的语义结构。例如,在“食物不是很美味”中,我们需要明白“不太好吃”比“不好吃”或“根本不好吃”更积极一点。


我们利用朴素贝叶斯训练的结果建立了一个积极和消极的词汇库。当处理给定的句子时,我们将每个单词打为正分或负分,并通过基于开源库 spaCy 的管道进行语音结构的精确分析来计算总分数,用于词性标注和依赖性分析。结果,我们得到了正、负和中性分数的参数,中性分数被定义为句子中既不是正面也不是负面情绪单词的比例。我们使用深度学习技术从训练集中推导出这些得分与情绪之间的关系。以下是我们针对消极、中性和正面情绪句子获得的图表:





该模型可以帮助我们很好地判断一个表达性句子包含的是正面还是负面情绪(准确度约为 75%),但是很难理解中性或缺乏情感的句子(在我们的测试集中,这类句子识别的准确率只有 20%) 。这种方法比朴素贝叶斯要好得多,但 75%仍然低于当前最新的正向/负向决策技术。


原文链接:


https://medium.com/@samuelpilcer/sentiment-analysis-frequency-based-models-288c0accdd12

会议推荐

12 月 20-21,AICon将于北京开幕,在这里可以学习来自 Google、微软、BAT、360、京东、美团等 40+AI 落地案例,与国内外一线技术大咖面对面交流。


2018-11-19 19:011848

评论

发布
暂无评论
发现更多内容

troubleshoot之:分析OutOfMemoryError异常

程序那些事

Java JVM 异常 JIT

神经网络激活函数为什么要使用非线性函数?

wangkx

神经网络 激活函数

非科班面试阿里,拼多多,银行都问了些啥?

我是程序员小贱

一口气搞懂「文件系统」,就靠这 20 张图了

小林coding

操作系统 计算机基础 文件管理 文件存储 文件系统

二叉查找树-增删查和针对重复数据的 Java 实现

多选参数

数据结构 算法 二叉树 数据结构与算法

推荐一个替代印象笔记,onenote的神奇笔记!

申屠鹏会

笔记

我们未曾见过的世界,大到无法想象

wangkx

ios 极客 apple 苹果 软件推荐

告诉你如何同时拿到腾讯两个部门的offer?

我是程序员小贱

如何做好技术选型

xcbeyond

Java 架构 最佳实践 技术选型

图解JavaScript——代码实现(new、Object.create()、Object.assign()、flat()等十四种代码原理实现不香吗?)

执鸢者

Java 大前端 代码原理

简谈Python3关键字nonlocal使用场景

wangkx

Python Python基础

第10周总结+作业

林毋梦

领域驱动设计(DDD)实践之路(二):事件驱动与CQRS

vivo互联网技术

DDD 架构设计 CQRS

面试官:说下对cookie,session,Token的理解

Java小咖秀

Java 面试

IT人的身体健康

隆隆

IT人健康

敏捷软件工程实践书籍

Bob Jiang

敏捷 敏捷书籍 工程实践

翻译: Effective Go (5)

申屠鹏会

翻译 Go 语言

架构优化与业务迭代,你会怎么选?

架构精进之路

软件开发

简述Python中变量作用域的规则

wangkx

Python python升级 Python基础

浅谈技术管理者的角色认知与自我管理

Geek_37rwst

团队管理 管理 自我管理 技术管理

SpringBoot系列(四):SpringBoot特性_外部化配置(properties文件配置)

xcbeyond

Java 微服务 springboot

架构师训练营 - 第 7 周学习总结

红了哟

如何理解Python中的可迭代对象、迭代器和生成器

wangkx

Python python升级

重点发布!河北行动计划发布!聚焦7大重点任务发展大数据产业

CECBC

区块链技术 落地应用 政策

简谈Python3中的闭包

wangkx

Python Python基础

HashMap、LinkedHashMap 学习笔记

Geek_vidmje

你可能不知道的iPython使用技巧

wangkx

Python

憋再@官方了,头像加国旗,10行代码给你安排!

wangkx

Python python升级

大厂需要你的简历有这些内容!

我是程序员小贱

队列高级应用之设计一个高性能线程池

架构师修行之路

分布式 线程池 架构设计 架构师

Rust竟然没有异常处理?

袁承兴

rust 异常 java异常处理

比朴素贝叶斯更优秀的情感分析方法?答案在这里_AI&大模型_Samuel Pilcer_InfoQ精选文章