请选择 进入手机版 | 继续访问电脑版
用户
 找回密码
 立即注册
查看: 395|回复: 0

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

[复制链接]

2913

主题

2915

帖子

9514

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9514
发表于 2018-1-28 17:10:07 | 显示全部楼层 |阅读模式
多喝热水。
你别化妆,化妆对身体不好。
男人就该像个男人,女人就要像个女人!
高富帅只是贪图你的美貌,我这个矮矬穷对你才是真爱。
你居然不知道人工智能?
你就不怕未来自己被AI奴役嘛?
能给我发个照片嘛?没有就自拍呀!
你为什么不爱我?



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

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

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

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

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

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


模型框架
简单的说,这就是个文本分类模型。输入一句话(妹子回复你的消息,如果就回复了两个字,建议再多加几条……),模型就会返回一个结果,告诉你说这句话的妹子是开心的还是不开心的。初级模型我就打算做这两个分类,后面有时间再多弄一些心情状态。
在人工智能领域,这种类型的场景都属于NLP(自然语言处理),简单的说就是让机器理解语言(这边我不会涉及太多技术细节,想深入了解技术的可以点我!)这时候有两个问题摆在面前:其一是计算机只知道0和1,怎么理解语言呢?其二是很多话都有歧义,而且和上下文都有关系,这个如何解决?
其实,这正是我要介绍的框架部分:
简单的说,为了让计算机懂语言,我们先要把语言转换成数值,这时候就要用到word2vec这个东西啦(后面会有纯技术分享)。然后为了保证计算机在学习的时候能联系到上下文,我们要用LSTM这个模型来进行训练。

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

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


数据收集
我们主要收集两部分的数据,一部分是高兴的话,一部分是不高兴的话。针对这个模型,最好的数据当然是所有人把聊天记录都导出,然后人工标注每句话是高兴还是不高兴。单显然,这样做成本太高了,费时费力。于是,我准备了如下数据源,大部分都是通过爬虫爬来的:
  • 淘宝、JD、网易严选三个不同性质的购物平台评论,一星或者直接差评的都是不开心,五星都是开心。
  • 单纯购物向的数据可能会造成某种偏差,而且有些人说话不会那么直接,会不带脏字的骂人、文艺范儿的骂人,所以我去了豆瓣电影,同样分一星、五星进行爬取。
  • 当然了,我们的目的是聊天情感分析,最重要的自然是聊天数据了。我本来导出了我和我女朋友的聊天数据,结果都是“么么哒”,“爱你哟”这种字眼,显然不能分析。于是,我就让其他小伙伴在实验室角色扮演~疯狂模拟情侣聊天……说实话,收集了不少数据(隐私聊天数据就不上传了)。

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

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

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

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

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

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

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

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

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

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

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

然后我们看看在测试集上的表现,这边包含了只针对“高兴”的样本的准确率测试和只针对“不高兴”的样本的准确率测试……代码和结果如下:
正好,TP的值要低一些,这样,宁可我们多提炼点话,也不能说错呀。

实际语言测试
我们知道,测试图片的时候,读进来的图片都会别分解成像素,然后根据训练好模型的权重进行计算,得到一个值,然后通过阈值判断是那个值。
文本的也差不多,输入的句子要先被分词,然后需要走一下之前的word2vec部分,将文本向量化,然后输入到模型进行计算,得到一个结果。
每个输入都要在这儿先处理:

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

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

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

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

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


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

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

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

亲测效果奇佳~我们也会不断收集新的数据持续优化这个模型,本来是要做成小程序的,结果微信不让读聊天记录~你们可以点击阅读原文,查看我们专栏,自己学会自己做一个。



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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ| Archiver| VR在线 ( 鲁ICP备16026500号-1)

GMT+8, 2018-4-21 17:20

Powered by VRVRON X3.2

© 2016-2018 VRVRON.COM weixin1400069288

快速回复 返回顶部 返回列表