首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

钢铁直男的救世主来了!让AI告诉你妹子到底是啥意思

多喝热水。

你别化妆,化妆对身体不好。

男人就该像个男人,女人就要像个女人!

高富帅只是贪图你的美貌,我这个矮矬穷对你才是真爱。

你居然不知道人工智能?

你就不怕未来自己被AI奴役嘛?

能给我发个照片嘛?没有就自拍呀!

你为什么不爱我?

有人说治疗直男癌的最好办法是找个女朋友,然后女朋友就可以慢慢的调教直男,让直男浪漫起来。可这不是先有蛋还是先有鸡的问题嘛?直男癌患者的女朋友?不存在的啊。

说出来你可能不信,虽然我长得又帅个子又高,每天出门坐上百万的车(比亚迪K9A),但很长一段时间我都被称之为"钢铁直男"。没有一个妹子能和我说话超过五分钟,还记得后来我统计聊天记录的时候,出现次数最多的词语是“呵呵”。以前,我聊天的画风都是这样的:

最最关键的是,我当时觉得我说的都没毛病啊,这是对妹子的关心呀,妹子回复我也都很积极,怎么后面就都把我拉黑了呢?而且,你都同意我加你好友了,以后不就发展成老婆了吗?于是,加一个妹子,被拉黑一个,就这样过了好多年。我开始意识到这个事情似乎不对呀,是不是我说话的方式有问题?是不是我压根没理解妹子的意思?

本着技术改变命运的原则,我决定做一个AI系统,帮我聊天到不至于,至少给我个判断:妹子说这句话的时候到底是个啥心情?这样,时间久了,我总能学会怎么讨妹子开心。

模型框架

简单的说,这就是个文本分类模型。输入一句话(妹子回复你的消息,如果就回复了两个字,建议再多加几条……),模型就会返回一个结果,告诉你说这句话的妹子是开心的还是不开心的。初级模型我就打算做这两个分类,后面有时间再多弄一些心情状态。

在人工智能领域,这种类型的场景都属于NLP(自然语言处理),简单的说就是让机器理解语言(这边我不会涉及太多技术细节,想深入了解技术的可以点我!)这时候有两个问题摆在面前:其一是计算机只知道0和1,怎么理解语言呢?其二是很多话都有歧义,而且和上下文都有关系,这个如何解决?

其实,这正是我要介绍的框架部分:

简单的说,为了让计算机懂语言,我们先要把语言转换成数值,这时候就要用到word2vec这个东西啦(后面会有纯技术分享)。然后为了保证计算机在学习的时候能联系到上下文,我们要用LSTM这个模型来进行训练。

数据收集

我们主要收集两部分的数据,一部分是高兴的话,一部分是不高兴的话。针对这个模型,最好的数据当然是所有人把聊天记录都导出,然后人工标注每句话是高兴还是不高兴。单显然,这样做成本太高了,费时费力。于是,我准备了如下数据源,大部分都是通过爬虫爬来的:

淘宝、JD、网易严选三个不同性质的购物平台评论,一星或者直接差评的都是不开心,五星都是开心。

单纯购物向的数据可能会造成某种偏差,而且有些人说话不会那么直接,会不带脏字的骂人、文艺范儿的骂人,所以我去了豆瓣电影,同样分一星、五星进行爬取。

当然了,我们的目的是聊天情感分析,最重要的自然是聊天数据了。我本来导出了我和我女朋友的聊天数据,结果都是“么么哒”,“爱你哟”这种字眼,显然不能分析。于是,我就让其他小伙伴在实验室角色扮演~疯狂模拟情侣聊天……说实话,收集了不少数据(隐私聊天数据就不上传了)。

训练模型

训练模型之前,要对数据做清洗,我们爬的数据会有一些乱码啊、异常符号这样的东西,我们是需要用正则过滤掉的。另外,文本模型由于要做文本的向量化处理(one-hot、word2vec等),我们要用jieba先把文本进行分词,放在一起。然后得到一个词语字典,包含每个词语的索引,词向量以及每个句子所对应的词语索引。这个过程中用到了两个比较重要的包:gensim和jieba。

处理完后,我们需要定义一个LSTM网络,和之前做图片不同,语言模型的网络一般不会特别深,而且多了一个CNN不会用到的Embedding层。其他像dropout、softmax、sigmoid等层也是很常见的。

我就跑了7个Epoch,说实话,GPU就是爽,上个洗手间就跑完了,acc就已经到了0.93。

然后我们看看在测试集上的表现,这边包含了只针对“高兴”的样本的准确率测试和只针对“不高兴”的样本的准确率测试……代码和结果如下:

正好,TP的值要低一些,这样,宁可我们多提炼点话,也不能说错呀。

实际语言测试

我们知道,测试图片的时候,读进来的图片都会别分解成像素,然后根据训练好模型的权重进行计算,得到一个值,然后通过阈值判断是那个值。

文本的也差不多,输入的句子要先被分词,然后需要走一下之前的word2vec部分,将文本向量化,然后输入到模型进行计算,得到一个结果。

每个输入都要在这儿先处理:

然后通过这个函数进行预测,得到“高兴”或者“不高兴”

我输入了“你这个傻逼,别烦我”,“好呀,我也挺想和你一起去看电影的”进行测试,结果如下:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180127G0JRYY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券