标签归档:问答系统

算法工程师需不需要架构思维-许式伟首次完整架构经验分享

做算法的同学需不需要架构思维?个人觉得非常需要,特别是工作了几年之后,无论是广告系统,推荐系统,还是问答(对话)系统,机器翻译系统,都需要系统架构思维,特别是近期,在斯坦福举行的新学术会议SysML发布了一份白皮书,确定了 机器学习+系统 这个新方向:Machine Learning System(机器学习系统),这大概就是大势所趋吧。

最近,看到七牛云老大许式伟在极客时间开了个专栏讲「架构」http://gk.link/a/102Yh ,首次进行完整的架构经验分享。上线仅三天,订阅就破 W 了,真没想到像老许这种资历和背景的架构师,竟然还这么乐于输出。他应该是为数不多的,能把「架构」这事儿讲明白的人了。所以这次,我心动并且行动了。

看了开篇词,写得很朴实,没有什么商业的辞藻,结合自己的实战经历,非常落地的感觉,不论你已经是一位架构师,还是想成为架构师的程序员,通过这个专栏,你能收获的都比付出的更多。

这个专栏,是老许第一次完整系统地分享自己的架构经验,一个架构师 20 年的经验沉淀,实在难得。几年后,你会感谢自己今天的投资:许式伟的架构课-从源头出发,带你重新理解架构设计
继续阅读

Start your future on Coursera today.

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

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

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

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

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

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

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

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

Start your future on Coursera today.

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

上周为了娱乐,写了一篇《一行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的种种玩法,基于规则的、基于机器学习模型的、基于知识图谱的等等等等,甚至还有很多智能问答开源框架可以直接套用,最后,当你兴高采烈的准备动手实践的时候,你突然发现,还没有数据,你需要数据,需要夸夸语料库。
继续阅读

Start your future on Coursera today.

斯坦福大学深度学习与自然语言处理第一讲:引言

斯坦福大学在三月份开设了一门“深度学习与自然语言处理”的课程:CS224d: Deep Learning for Natural Language Processing,授课老师是青年才俊 Richard Socher,他本人是德国人,大学期间涉足自然语言处理,在德国读研时又专攻计算机视觉,之后在斯坦福大学攻读博士学位,拜师NLP领域的巨牛 Chris ManningDeep Learning 领域的巨牛 Andrew Ng,其博士论文是《Recursive Deep Learning for Natural Language Processing and Computer Vision》,也算是多年求学生涯的完美一击。毕业后以联合创始人及CTO的身份创办了MetaMind,作为AI领域的新星创业公司,MetaMind创办之初就拿了800万美元的风投,值得关注。

回到这们课程CS224d,其实可以翻译为“面向自然语言处理的深度学习(Deep Learning for Natural Language Processing)”,这门课程是面向斯坦福学生的校内课程,不过课程的相关材料都放到了网上,包括课程视频,课件,相关知识,预备知识,作业等等,相当齐备。课程大纲相当有章法和深度,从基础讲起,再讲到深度学习在NLP领域的具体应用,包括命名实体识别,机器翻译,句法分析器,情感分析等。Richard Socher此前在ACL 2012和NAACL 2013 做过一个Tutorial,Deep Learning for NLP (without Magic),感兴趣的同学可以先参考一下: Deep Learning for NLP (without Magic) - ACL 2012 Tutorial - 相关视频及课件 。另外,由于这门课程的视频放在Youtube上,@爱可可-爱生活 老师维护了一个网盘链接:http://pan.baidu.com/s/1pJyrXaF ,同步更新相关资料,可以关注。
继续阅读

Start your future on Coursera today.

立委科普:问答系统的前生今世

李维老师的文章看起来就是过瘾,这篇文章也是刚刚在科学网上看到的,还有下一篇,感兴趣的读者可以继续关注。前段时间IBM超级计算机沃森(Watson)刚刚出了一把风头,也让关注自然语言处理的读者更关注起自动问答系统了,李维老师的这篇博文无疑让我们对于问答系统的前世今生又有了一次深刻的了解,所以厚着脸皮,以下继续全文转载自李维老师的博文:立委科普:问答系统的前生今世

上周信笔涂鸦写了个不伦不类的科普(【立委科普:从产业角度说说NLP这个行当】),写完自我感觉尚可,于是毛遂自荐要求加精:“自顶一哈:不用谦虚,这个应该加精。也不枉我费了大半天的时辰。” 本来是玩笑话,没成想科网的编辑MM在两小时内就真地加精上首页了。前几周还在抱怨,怕被编辑打入另册,正琢磨献花还是金币以求青睐,没想到这么快就峰回路转,春暖花开。响鼓不用重敲,原来还是要发奋码字才行,花言巧语的不行。得,一鼓作气,再码两篇。

言归正传,第一篇先介绍一下问答系统(Question Answering system)的来龙去脉。第二篇专事讲解问答系统中的三大难题 What,How 与 Why。

一 前生

传统的问答系统是人工智能(AI: Artificial Intelligence)领域的一个应用,通常局限于一个非常狭窄专门的领域,基本上是由人工编制的知识库加上一个自然语言接口而成。由于领域狭窄,词汇总量很有限,其语言和语用的歧义问题可以得到有效的控制。问题是可以预测的,甚至是封闭的集合,合成相应的答案自然有律可循。著名的项目有上个世纪60 年代研制的LUNAR系统,专事回答有关阿波罗登月返回的月球岩石样本的地质分析问题。SHRDLE 是另一个基于人工智能的专家系统,模拟的是机器人在玩具积木世界中的操作,机器人可以回答这个玩具世界的几何状态的问题,并听从语言指令进行合法操作。这些早期的AI探索看上去很精巧,揭示了一个有如科学幻想的童话世界,启发人的想象力和好奇心,但是本质上这些都是局限于实验室的玩具系统(toy systems),完全没有实用的可能和产业价值。随着作为领域的人工智能之路越走越窄(部分专家系统虽然达到了实用,基于常识和知识推理的系统则举步维艰),寄生其上的问答系统也基本无疾而终。倒是有一些机器与人的对话交互系统 (chatterbots)一路发展下来至今,成为孩子们的网上玩具(我的女儿就很喜欢上网找机器人对话,有时故意问一些刁钻古怪的问题,程序应答对路的时候,就夸奖它一句,但更多的时候是看着机器人出丑而哈哈大笑。不过,我个人相信这个路子还大有潜力可挖,把语言学与心理学知识交融,应该可以编制出质量不错的机器人心理治疗师。其实在当今的高节奏高竞争的时代,很多人面对压力需要舒缓,很多时候只是需要一个忠实的倾听者,这样的系统可以帮助满足这个社会需求。要紧的是要消除使用者 “对牛弹琴”的先入为主的偏见,或者设法巧妙隐瞒机器人的身份,使得对话可以敞开心扉。扯远了,打住。)
继续阅读

Start your future on Coursera today.