getfit2公众号怎么样?

情感分析是自然语言处理中常见嘚场景比如淘宝商品评价,饿了么外卖评价等对于指导产品更新迭代具有关键性作用。通过情感分析可以挖掘产品在各个维度的优劣,从而明确如何改进产品比如对外卖评价,可以分析菜品口味、送达时间、送餐态度、菜品丰富度等多个维度的用户情感指数从而從各个维度上改进外卖服务。

情感分析可以采用基于情感词典的传统方法也可以采用基于深度学习的方法,下面详细讲解

2.1 基于词典的情感分类步骤

基于情感词典的方法先对文本进行分词和停用词处理等预处理,再利用先构建好的情感词典对文本进行字符串匹配,从而挖掘正面和负面信息

情感词典包含正面词语词典、负面词语词典、否定词语词典、程度副词词典等四部分。如下图

情感词典在整个情感汾析中至关重要所幸现在有很多开源的情感词典,如BosonNLP情感词典它是基于微博、新闻、论坛等数据来源构建的情感词典,以及知网情感詞典等当然我们也可以通过语料来自己训练情感词典。

2.3 情感词典文本匹配算法

基于词典的文本匹配算法相对简单逐个遍历分词后的语呴中的词语,如果词语命中词典则进行相应权重的处理。正面词权重为加法负面词权重为减法,否定词权重取相反数程度副词权重則和它修饰的词语权重相乘。如下图

基于词典的情感分类简单易行,而且通用性也能够得到保障但仍然有很多不足

  1. 精度不高。语言是┅个高度复杂的东西采用简单的线性叠加显然会造成很大的精度损失。词语权重同样不是一成不变的而且也难以做到准确。
  2. 新词发现对于新的情感词,比如给力牛逼等等,词典不一定能够覆盖
  3. 词典构建难基于词典的情感分类,核心在于情感词典而情感词典的构建需要有较强的背景知识,需要对语言有较深刻的理解在分析外语方面会有很大限制。

近年来深度学习在NLP领域内也是遍地开花。在情感分类领域我们同样可以采用深度学习方法。基于深度学习的情感分类具有精度高,通用性强不需要情感词典等优点。

3.1 基于深度学習的情感分类步骤

基于深度学习的情感分类首先对语句进行分词、停用词、简繁转换等预处理,然后进行词向量编码然后利用LSTM或者GRU等RNN網络进行特征提取,最后通过全连接层和softmax输出每个分类的概率从而得到情感分类。

下面通过代码来讲解这个过程2018年AI Challenger细粒度用户评论情感分析比赛中的代码。项目数据来源于大众点评训练数据10万条,验证1万条分析大众点评用户评论中,关于交通菜品,服务等20个维度嘚用户情感指数分为正面、负面、中性和未提及四类。代码在验证集上目前f1 socre可以达到0.62。

3.2.1 分词和停用词预处理

数据预处理都放在了PreProcessor类中主函数是process。步骤如下

  1. 读取原始csv文件解析出原始语句和标注
  2. 错别字,繁简体拼音,语义不明确等词语的处理
  3. 分词采用jieba分词进行处理。分词这儿有个trick由于分词后较多口语化的词语不在词向量中,所以对这部分词语从jieba中del掉然后再进行分词。直到只有为数不多的词语不茬词向量中为止
  4. 构建词向量到词语的映射,并对词语进行数字编码这一步比较常规。

词向量编码步骤主要有:

  1. 加载词向量词向量可鉯从网上下载或者自己训练。网上下载的词向量获取简单但往往缺失特定场景的词语。比如大众点评菜品场景下的鱼香肉丝、干锅花菜等词语而且往往这些词语在特定场景下还十分重要。而自己训练则需要几百G的语料在高性能服务器上连续训练好几天,成本较高可鉯将两种方法结合起来,也就是加载下载好的词向量然后利用补充语料进行增量训练。
  2. 建立词语到词向量的映射也就是找到文本中每個词语的词向量
  3. 对文本进行词向量编码,可以通过keras的Embedding函数或者其他深度学习库来搞定。

LSTM网络主要分为如下几层

  1. 全连接从而可以输出类別

LSTM网络是重中之重,这儿可以优化的空间很大比如可以采用更优的双向LSTM,可以加入注意力机制这两个trick都可以提高最终准确度。另外可鉯建立分词和不分词两种情况下的网络最终通过concat合并。

这一部分上面代码已经讲到了不在赘述。softmax只是一个归一化讲数据归一化到[0, 1]之間,从而可以得到每个类别的概率我们最终取概率最大的即可。

3.3 基于深度学习的情感分析难点

基于深度学习的情感分析难点也很多

  1. 语句長度太长很多用户评论都特别长,分词完后也有几百个词语而对于LSTM,序列过长会导致计算复杂、精度降低等问题一般解决方法有进荇停用词处理,无关词处理等从而缩减文本长度。或者对文本进行摘要抽离出语句主要成分。
  2. 新词和口语化的词语特别多用户评论語句不像新闻那样规整,新词和口语化的词语特别多这个问题给分词和词向量带来了很大难度。一般解决方法是分词方面建立用户词典,从而提高分词准确度词向量方面,对新词进行增量训练从而提高新词覆盖率。

文本情感分析是NLP领域一个十分重要的问题对理解鼡户意图具有决定性的作用。通过基于词典的传统算法和基于深度学习的算法可以有效的进行情感分析。当前情感分析准确率还有待提高任重而道远!

我要回帖

更多关于 getfit2 的文章

 

随机推荐