雷锋网编者按:如何通过女友最近发布的微博内容检测她的情绪状况?丁香园前端工程师 DIYgod 给出了自己的解决方案。本文由原作者授权雷锋网发布,转载请联系本人。
(微博检测最终完成效果,雷锋网注)
就是这样,代码写好了,就差个女朋友了。
最后的效果就是检测某一微博博主新发的微博,如果判断为消极情绪就发出警告(手机通知、邮件通知、自动发一条上图那样的微博之类的)。
项目地址:
https://github.com/DIYgod/Weibo2RSS 以 RSS 形式输出消极情绪的微博
https://github.com/DIYgod/Text2Emotion 分析一句话的情绪值
使用方法:
消极情绪微博 RSS 配合 IFTTT 使用,具体设置如下图,条件是 RSS 出现新内容,行为是发一条微博通知(也可以改成手机通知或者邮件通知等)。
下面是我的开发过程。
一、分词
这东西自己做不来,所以只好找现成的解决方案,找到了下面几个:
结巴中文分词
哈工大语言技术平台云
新浪云中文分词
讯飞语言云
腾讯文智
除了腾讯文智其他都是免费或者开源的,简单比较之后选择了锤子 Big Bang 也在用的讯飞。
二、情绪分析
这个关键在于词典,也是找现成的:
中文情感极性词典 NTUSD
大连理工情感词汇本体库
大连理工的本体库标注了超过两万词语,包括这些词语词性种类、情感类别、情感强度及极性等信息,像下面这样:
看起来很不错,就选择了这个。
词典下载下来是一个 excel 表格,把它先另存为成 csv 格式,然后就可以导入到 mongodb 数据库里了。
三、情绪值计算
把要分析的话进行分词处理,再把每个词语的情绪值进行累加,就可以得出一条微博的情绪值。
这里其实还有很多算法工作可以做,但简单起见,我只是进行了累加。
然后写完发现效果很差,原因是词典内容太少,很多词语都没有,所以很多句子根本判断不出来。
最后废弃了上面的所有东西,直接使用腾讯文智的收费服务。。。
四、应用到微博
抓取微博内容的原理很简单,新浪微博的微博秀是不需要登录就可以访问的,直接使用 Node.js 解析页面就可以拿到微博内容。
然后对微博内容进行情绪值计算,把消极情绪的微博输出成 RSS。
五、监控
输出成 RSS,监控也容易了,其中 IFTTT 效果最佳,检测到 RSS 有新内容时,可以触发手机通知、邮件通知、发一条微博等行为。
以上,其实最大的问题还是:我差个女朋友。