前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >语义情感分析实操 | 10行代码帮你判断TA是否生气了

语义情感分析实操 | 10行代码帮你判断TA是否生气了

原创
作者头像
个推
修改2021-05-24 17:48:51
5420
修改2021-05-24 17:48:51
举报
文章被收录于专栏:个推技术实践

前言

昨天是一年一度的“女神节”,Mr.Tech首先给各位程序媛和小姐姐补上节日祝福哦~

想必大家都听说过这样一句话,“男人来自火星,女人来自金星”。男女之间确实存在一定的思维差异。比如就在昨天的“女神节”,可能女生明明心里也很想收到一份小礼物,隐晦地表达了自己的心声,但男生就是意识不到;再比如,男生也许真的只是有事儿在忙,但女生看到简单的“在忙”两个字后可能会想多……

怎么样才能更准确地GET到TA的真实想法和情绪,不至于和心仪的TA越走越远呢?也许可以试试技术的方式。

正文

随着AI的日益普及和在各个领域的加速落地,很多企业不断尝试将自然语言处理、语义情感分析等技术应用到智能客服、交互机器人等领域。个推也在自然语言处理及人工智能领域拥有丰富的实践经验。

本文主要借这个有趣的实操案例,为大家分享如何基于NLP进行语义情感分析。

一、准备数据

本次实验,我们使用的是从GitHub下载的开源数据集:数据集来自新浪微博,一共361744行数据,并且已经有“喜悦” “愤怒” “厌恶” “低落”等四类标签的label标记。

图片
图片

二、数据预处理

我们知道,文本数据是一种非结构化的数据,且数据内部存在许多像标点、表情符号等类型的特殊字符。因此,我们要先对数据进行一些预处理。

首先,我们先剔除了文本中的一些特殊字符,并对文本进行了中文分词

图片
图片

在该步骤,为了提升模型效果,我们一般需要建立停用词库,并在文本中将停用词予以剔除。但是考虑到在情感分析中,许多停用词其实有可能会对分类结果产生影响。例如对话时的“呀”,往往带有喜悦的情感色彩。因此在这里,我们并未将这一类的词汇进行剔除。

当然你也可以尝试自定义一个停用词库,并比较一下最后的分类效果。

图片
图片

接下来,我们进入第二步。我们按照7:3的比例将数据集分成了训练集和测试集这两个数据集。同时,我们也对每个词进行了编码,并将文本的序列调整成为相同的长度。

图片
图片

再接着,我们通过word2vec预训练来得到词向量,并且通过观察单词的相似度,对词向量的质量进行了检验。

从下图,可以看到,相似的单词还是基本符合预期的。

图片
图片
图片
图片
图片
图片

三、模型训练

将数据进行预处理之后,我们就可以将数据“喂入”到分类模型中。业内常用的经典文本分类模型有FastText(一种快速文本分类器)、TextCNN(利用卷积神经网络对文本进行分类的算法)、R-CNN(Region-CNN,用于实现目标检测)、Han(关键词提取算法)等。

下图是我们基于最简单的FastText算法进行文本分类的过程:

图片
图片

我们对该算法模型进行了10轮的持续迭代。在测试集上,该模型的准确率达到了0.582。然后,我们将FastText模型结果作为我们此次实验的baseline模型结果

图片
图片

我们又分别对TextCNN、R-CNN、BiLSTM + Attention进行了测试,下表对不同算法模型的效果进行了梳理和对比:

图片
图片

由上表我们可以看到,相较而言,还是BiLSTM + Attention的预测效果更好。

下图是我们使用BiLSTM + Attention进行模型预测的代码结构:

图片
图片

Attention的结构和加权池化层类似,我们其实可以将权重提取出来并且进行可视化:

图片
图片
图片
图片

四、模型预测

接下来,我们将训练好的BiLSTM + Attention模型进行封装,并看一下该模型的预测效果。

通过下表,可以看到,模型的训练效果还是比较令人满意的,对于“呵呵”和“哈哈哈”、“了”和“啦”这些语气词之间的微妙情绪差别都能进行相对准确的判断:

图片
图片

至此,本次基于NLP进行情感分析的模型训练实验也就基本完成了。

这其中其实还有许多可以优化的点,例如:针对每个标签类别占比不均衡的情况,可以进行loss修改;不仅仅可以对每个类别的标签做onehot处理,还可以将label本身的文字信息做embedding等等。感兴趣的童鞋可以在自己的实操中尝试进行更多的优化。

总结

目前,虽然AI技术的应用已经越来越成熟和普遍,算法模型也一定程度上能够对文本的情感进行判断。但是Mr.Tech也要温馨提醒大家,在现实的人际交往中,我们彼此之间还是要真诚沟通、用心交流哦。

未来,个推将不断在自然语言处理、机器视觉等前沿技术领域开展实践,也会持续将其中有价值的内容分享给大家。我们相信技术的飞速发展一定会给我们的生活带来很多有意义、有趣的改变。我们也期待读者朋友们,多多和我们交流自己的前沿实战和趣味实操案例。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • 一、准备数据
      • 二、数据预处理
      • 三、模型训练
      • 四、模型预测
      • 总结
      相关产品与服务
      NLP 服务
      NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档