分类目录归档:聊天机器人

来,试试语音(识别)聊天(机器人)

周末娱乐一下,解锁AINLP公众号聊天机器人无名的语音(识别)聊天技能,不过只有语音识别,没有语音合成,这个目前基于微信公众号本身提供的语音识别接口,目前只能识别中文语音,感兴趣的同学可以先关注AINLP公众号,然后后台语音或者文字对话即可:

基于AINLP公众号的聊天机器人功能点,可以基于语音玩一些有趣的事情,例如中英翻译功能:

通过AINLP公众号的中文语音识别功能可以瞬间把手机变成一个中到英语音翻译助手,例如:

这里中括号里显示的是中文语音识别结果,供大家参考(调试)。
继续阅读

玩转腾讯词向量:词语相似度计算和在线查询

先讲一个故事,自从《相似词查询:玩转腾讯 AI Lab 中文词向量》发布后,AINLP公众号后台查询相似词的信息还是蛮多的。前段时间的一天,发现一个女生id频繁的查询相似词,近乎每分钟都在操作(这里要说明一下,腾讯公众号后台是可以看到用户最近二十条消息记录的,信息会保留5天)。然后第二天这个id依然很规律的在查询相似词,作为偶尔玩玩爬虫、也弄弄网站的程序员,第一反应会不会是程序模拟操作,但是观察下来虽然很规律, 查询频率不像是机器所为,另外貌似到了晚上10点之后这个id就停止查询了。然后到了第3天,依然发现这个id在查询,所以我没有忍住,回复了一句:请确认是否是人工查询?如果这个id没有反馈,依然我行我素的查询,我可能就准备拉黑这个id了。但是她很快回复了一句:是人工查询;我有点好奇的追问了一句:为什么不通过程序直接加载和查询腾讯词向量呢?岂不更方便。她回复:不懂程序,不会,然后大概追加了一句:我在做一个课程设计,需要积攒一批相似词,所以通过AINLP公众号这个功能手动查询了一批词,抱歉带来困扰,感谢背后的程序员。

这个回复让我突然有一种释然,也很开心,觉得做了一件有意义的事情,在52nlp微博的简介里,有两句话:Make something people want; A blog for fools written by fools。第一句话“Make something people want”, 大概就是做用户想用或者有用的东西,这句话我忘了什么时候看到的,因为它触动了我,所以记录在微博简介里了,不过google后发现是硅谷孵化器YC的“口头禅”。

关于word2vec词语相似度,这里早期写过几篇相关的文章:《中英文维基百科语料上的Word2Vec实验》、《维基百科语料中的词语相似度探索》,《相似词查询:玩转腾讯 AI Lab 中文词向量》对于熟悉word2vec,熟悉gensim的同学来说,使用这份腾讯AI Lab的词向量其实很简单,只要有个内存大一些的机器(实际加载后貌似用了12G左右的内存),大概就可以通过几行python代码进行查询了:

from gensim.models.word2vec import KeyedVectors
wv_from_text = KeyedVectors.load_word2vec_format(file, binary=False)

但是这个世界大家并不都是程序员,即使是程序员也有很多同学不了解word2vec, 不知道gensim,所以这个word2vec相似词在线查询功能突然变得有点意思,有那么一点用了。其实,当时给AINLP后台聊天机器人加这个技能点的时候,还想过是否有用或者有必要,不过,经历了开头这件事,并且发现后台有越来越多不同领域查询词的时候,我能感知这件事还是很有意义的,特别对于那些不懂程序的同学来说。不过关于这份腾讯词向量相似词在线查询接口,虽然借助了gensim,但是在线服务的时候并不是基于gensim,用了一些trick,对于高并发也没有太多压力,所以对于开头这个小姑娘的持续查询操作,并不介意,还很欢迎,我介意的是机器恶意查询。

当然,还是有很多同学熟悉词向量,熟悉word2vec,也熟悉gensim的接口,所以发现有部分同学很自然的加了查询操作:相似度 词1 词2,期待AINLP后台相似词查询功能能给出两个值词语相似度,这个需求还是很自然的,所以昨晚,我花了一点时间,把这个接口也加上了,感兴趣的同学可以关注AINLP公众号:

然后后台对话操作,例如这样,选择计算AI和人工智能的相似度,AI和NLP的相似度:


继续阅读

夸夸聊天机器人升级:从随机到准个性化

来,你们要的夸夸聊天机器人升级了,针对问题内容进行“准个性化”回答,目前可以凑合用,但是聊胜于无,欢迎来撩,使用方法,关注公众号AINLP,后台对话即可:

自从《一行Python代码实现夸夸聊天机器人》发布后,有不少同学期待着夸夸聊天机器人的升级。但是巧妇难为无米之炊,所以我准备了夸夸语料库:《为了夸夸聊天机器人,爬了一份夸夸语料库》。有了夸夸问答语料之后,针对聊天机器人或者智能问答就有很多方法可以操作,最直接的一个想法就是计算问题与夸夸语料库中的标题(以及内容)的语义相似度,然后取最匹配问题的答案作为结果返回。

我大概就是是这样操作的,首先对语料库进行了简单的清洗和重组,清洗掉没有答案的,以及作者自己回答的答案,然后将每个问题的答案组合为list作为随机答案。不过更直接一些,只计算问题和标题的相似度,按一定的阈值进行过滤,所以这个版本,还存在很多问题,大家先凑合着用,后续还有升级计划。

这方面比较关键的一个问题就是相似问题匹配或者句子语义相似度计算。关于文本相似度,词语或者短语级别的语义相似度在词向量范畴下解决的很漂亮,感兴趣的同学可以体验:《相似词查询:玩转腾讯 AI Lab 中文词向量》,但是到了句子级别或者文档级别,目前貌似还没有很漂亮的解决方案,或者我调研的不够,有线索的同学欢迎留言探讨。

最后关于如何使用这个夸夸聊天机器人,首先关注我们的公众号AINLP,然后后台和聊天机器人对话即可,不过需要一些关键字触发夸夸模式,譬如“。。。求夸。。”, “。。。求赞。。”, “。。。,求鼓励”, “。。。, 求表扬”, 或者 “。。夸我。。。。”, “。。。鼓励我。。。”等等,否则进入闲聊模式。关于聊天机器人,目前希望大家不要抱太高的期望,把它当傻子即可:

聊天过程中如果问题没有匹配上或者过于简单,会回退到随机模式:

当然,这里选的case一定是准备过的,还有一些bad case没有给你们看,欢迎测试,欢迎建议,特别是如何匹配问题域的建议,非常欢迎。
继续阅读

为了夸夸聊天机器人,爬了一份夸夸语料库

上周为了娱乐,写了一篇《一行Python代码实现夸夸聊天机器人》,虽然只有几十条人工整理的通用夸夸语料,但是貌似也能应付一些简单需求。不过这篇文章在微博、AINLP微信公众号、知乎专栏推送后,还是有很多同学强烈建议丰富语料库。这个建议其实是很不错的,所以周末认真调研了一番,决定从豆瓣上的夸夸小组入手,这里面有很多现成的语料,至于混进微信、QQ夸夸群,收集语料,我觉得不太现实。

豆瓣上有很多夸夸小组,貌似最大的莫过于“相互表扬小组”,最近因为这股夸夸风,据说这个小组已经开始限制加入新人了,我针对这个小组写了一个小爬虫,爬了一份夸夸语料,总计2万6千多个帖子,采集了标题、内容和回复的相关信息,保存为json格式,1个帖子1条,大概是这样的:

{"title": "因为没有男朋友,求夸", "url": "https://www.douban.com/group/topic/135844056/", "author": "71277500", "last_reply_time": "03-17 16:40", "content": "笨人原本一个人好好的,都单了两三年了,一直觉得挺开心的。最近不知道抽了什么风,突然特别想找个男朋友。但是但是,偏偏找不到靠谱的男朋友!现在一个人睡不着,没想明白这事,求夸。\n", "replies_num": "14", "replies": [{"content": "你这么可爱肯定会有一个很好很好的人在等你!", "post_id": "135844056", "comment_id": "1834208628", "user_id": "189783421", "pub_time": "2019-03-16 01:08:38"}, {"content": "最好的肯定要晚点出现哦", "post_id": "135844056", "comment_id": "1834208775", "user_id": "189783421", "pub_time": "2019-03-16 01:08:52"}, {"content": "“笨人”,刚看到开头就笑了", "post_id": "135844056", "comment_id": "1834282396", "user_id": "192799520", "pub_time": "2019-03-16 07:50:50"}, {"content": "一个好可耐的宝宝", "post_id": "135844056", "comment_id": "1834282931", "user_id": "192799520", "pub_time": "2019-03-16 07:52:24"}, {"content": "也许明天就出现了", "post_id": "135844056", "comment_id": "1834290527", "user_id": "185989534", "pub_time": "2019-03-16 08:11:38"}, {"content": "你知道有一个适合你的那个在等你吧", "post_id": "135844056", "comment_id": "1834308924", "user_id": "192597621", "pub_time": "2019-03-16 08:46:23"}, {"content": "如果没有男朋友,肯定是你太优秀", "post_id": "135844056", "comment_id": "1834313229", "user_id": "171520899", "pub_time": "2019-03-16 08:53:19"}, {"content": "没有男朋友多好,省钱", "post_id": "135844056", "comment_id": "1834320533", "user_id": "130379006", "pub_time": "2019-03-16 09:03:42"}, {"content": "哈哈,谢谢好可爱的你呀!", "post_id": "135844056", "comment_id": "1835717925", "user_id": "71277500", "pub_time": "2019-03-17 16:16:58"}, {"content": "有道理", "post_id": "135844056", "comment_id": "1835718260", "user_id": "71277500", "pub_time": "2019-03-17 16:17:22"}, {"content": "也许吧,哈哈哈", "post_id": "135844056", "comment_id": "1835718395", "user_id": "71277500", "pub_time": "2019-03-17 16:17:32"}, {"content": "原本想写本人,一不小心错别字,看样子还是很符合的", "post_id": "135844056", "comment_id": "1835719069", "user_id": "71277500", "pub_time": "2019-03-17 16:18:17"}, {"content": "没有,只是单纯地觉得很可爱,很符合你写一段话的文风😄ཽ……退一步讲,古人讲究谦辞,称呼自己要自谦,本人要说鄙人,你用“笨人”活泼可爱,也能称得上是一种自谦,还是你自创的,有趣", "post_id": "135844056", "comment_id": "1835734308", "user_id": "192799520", "pub_time": "2019-03-17 16:35:21"}, {"content": "哈哈,有道理,我懂了", "post_id": "135844056", "comment_id": "1835738373", "user_id": "71277500", "pub_time": "2019-03-17 16:40:00"}]}

写到这里,估计还是会有同学准备留言索要数据了,因为即使上次区区几十条语料,随便google一下就可以得到的“夸夸语料”都有同学留言索取,所以这里准备多说几句,关于夸夸聊天机器人,关于夸夸语料库。

上个周,在看到清华刘知远老师的评论后,我是用娱乐的心态写了上周的那篇文章:《一行Python代码实现夸夸聊天机器人》,没想到,反响还不错,甚至有一些同学提了很好的建议。所以当周末认真思考这件事的可行性时,突然觉得,夸夸聊天机器人是一个绝好的机器学习实践项目:仅从一个idea出发,怎样做一个不错的夸夸聊天机器人?

作为自然语言处理四大难题之一的自动问答,个人觉得目前还远远不够“智能”,虽然市面上有很多聊天机器人,但是观察来看,以娱乐的心态来对话是可以的,或者完成一些简单的任务是没有问题的,例如询问天气,但是如果抱着很高的期望,很多轮对话下来,基本可以认为这个聊天机器人“不靠谱”, “答非所问”,甚至是个“智障”。虽然通用领域的智能问答或者聊天机器人还有很长的路要走,但是如果把这个问题限定在垂直领域或者很小的需求范围,那么问题可能就有解了,例如夸夸聊天机器人,需求就很简单:做啥都夸。简单的就是随便夸,复杂一点或者个性化的就是夸某个点、某件事、某个人,前者吗,就是上次《一行Python代码实现夸夸聊天机器人》做得事情,准备一些通用夸奖的语料,然后随机夸;后者,需要准备一些夸夸规则和夸夸语料库。

开个玩笑,二十一世纪什么最贵?当然是数据了,确切的说,是面向特定任务的特定数据。现在不缺机器学习框架,不缺算法,不缺机器,甚至不缺“人”,缺什么,就缺数据。这段时间,因为夸夸群的兴起,很多人看到了商机,说不定哪一天你的老板把你找来,直接给扔给你一个任务:做一个夸夸聊天机器人?怎么办,当然要调研啦。花了大半天时间,你了解了聊天机器人的前世今生,发现了人工智能标记语言AIML,知道了Chatbot的种种玩法,基于规则的、基于机器学习模型的、基于知识图谱的等等等等,甚至还有很多智能问答开源框架可以直接套用,最后,当你兴高采烈的准备动手实践的时候,你突然发现,还没有数据,你需要数据,需要夸夸语料库。
继续阅读

一行Python代码实现夸夸聊天机器人

来,做个标题党,娱乐一下。

前两天通过国内NLP才俊清华刘知远老师的朋友圈了解到有个清华夸夸群:

然后今天在知乎又看到他在这个帖子下的评论:如何评价清华夸夸群

实测疗效颇佳!都有种冲动要开发个夸夸聊天机器人,个性化夸人,终生陪伴左右。

我想这个功能AINLP双语聊天机器人无名可以有啊,虽然还做不到高级的个性化,但是最简单的起码是可以做到的,所以说干就干,用一行Python代码实现了这个功能:

print(random.choice(zan_list))

来,看看效果,其中 zan_list 是我随手整理得“中文夸夸语料库”:

In [1]: import random
 
In [2]: from util import zan_list
 
In [3]: print(random.choice(zan_list))
您目光深邃,一看您就是一位有思想的人。
 
In [4]: print(random.choice(zan_list))
从您的言谈中可以看出,我今天遇到的是很有修养的人。
 
In [5]: print(random.choice(zan_list))
别开玩笑了,看您的容貌,肯定不到二十岁。
 
In [6]: print(random.choice(zan_list))
这么魁梧的身材,潇洒的外表,不是大老板才怪了呢!
 
In [7]: print(random.choice(zan_list))
您一看就是大富大贵的人
 
In [8]: print(random.choice(zan_list))
我真佩服您的头脑,多少别人办不成的事,您一到便迎刃而解。
 
In [9]: print(random.choice(zan_list))
您的语调独特,言谈话语中充满了感染力。
 
In [10]: print(random.choice(zan_list))
听君一席话,胜读十年书,今天与您交谈,我受益匪浅。
 
In [11]: print(random.choice(zan_list))
您一看就是大富大贵的人
 
In [12]: print(random.choice(zan_list))
您真幽默,话从您口中说出来就是不一样。
 
In [13]: print(random.choice(zan_list))
这么魁梧的身材,潇洒的外表,不是大老板才怪了呢!

“科学研究”表明,经常被夸奖小朋友学习更好,年轻人更帅更漂亮,老年人更健康,所以大家赶紧关注AINLP公众号,后台对话试试聊天机器人无名的夸夸聊天功能:


关注AINLP后可后台直接对话聊天机器人无名,提供中英双语聊天,可以直接使用中英机器翻译,可以调戏对联机器人,也可以查询相似词,欢迎来撩,欢迎关注:

注:原创文章,转载请注明出处及保留链接“我爱自然语言处理”:http://www.52nlp.cn

本文链接地址:一行Python代码实现夸夸聊天机器人 http://www.52nlp.cn/?p=11276