能理解聊天记录的微信机器人 (一)

TL; DR: 做了个在两个群中间互相转发消息的机器人(GitHub 地址:https://github.com/grapeot/WechatForwardBot),对聊天机器人的一些思考,可以把文本理解加进来做有意思的应用。

最近看到了一些基于微信机器人的有意思的应用,比如用微信汇报模型的训练状态(TensorFlow,Keras)。这个是个很好的出发点。聊天机器人 (chatbot) 这个概念在 slack, telegram, skype 甚至最早的 google wave 上面流行已经有一段时间了。大家主要用它来:

  • 进行一些推送服务 。一个例子就是上面的模型训练。还有持续集成(continuous integration)上也有一些 bot 可以让你知道软件编译,测试和部署的状态。
  • 提供简单的信息服务,比如可以查天气,查 github issue 的 bot。
  • 提供一些基于指令的服务。比如扎克伯格做的 bot,输入开门的指令可以把门打开。
  • 用一定程度的自然语言理解来陪聊.

但我觉得这些并没有体现聊天机器人的核心优势。仔细看这四个方面的应用,它们其实都可以不通过聊天来完成,甚至不通过聊天可能会更方便。比如推送服务有系统信息推送(pushbullet, IFTTT notification等), 查天气系统就有app,智能家居我更希望点点按钮而不是打字,陪聊这个必须要聊天没办法。大家愿意把它做到聊天程序里面去,主要是因为用户实在是太话唠了,很多时间都花在聊天程序里面,这样做成bot等于多了一个入口,何乐而不为?但这样做并不代表这个入口是最优的或者无可取代的。

那聊天机器人适合什么场景呢?要思考这个问题必须首先要明确聊天机器人和其他平台的区别在什么地方。除了 UX 层面必须基于文字,用户经常在用以外,还有一个核心区别是这个机器人其实是可以拿到聊天记录的(当然还取决于隐私设置 )。在这个前提下可以做很多很多有意思的应用。一个例子是我们有个科大校友 AI 群,里面大多数情况都是在认真讨论AI相关的话题。但微信群是为了聊天设计的,讨论上毕竟不比基于主题的 BBS,没有主题,没有回复,没有话题(hashtag),整个信息流非常杂乱。但人类懒的天性又决定了,这种讨论更多的是在微信(或者其他即时通信软件)上完成的,不太可能把它搬到 BBS 上去——每次填个主题,点个回复太麻烦了。有没有可能用微信机器人,一方面又保持这种基于聊天软件的便捷的特性,一方面又能整理整个信息流,让信息变得有组织?比如一个人一天没看群了,晚上跑来看看机器人整理的总结,就一目了然。以后搜索也方便。这是个很有意思的问题。

“让信息有组织”还是太笼统了。具体地说,可以从以下几个方面进行:

跨群转发。这是个非常实用的功能。对群来说,因为微信一个群最多 500 人, 跨群转发可以有效地把两个群拼到一起,实现更广泛的讨论。对个人来说,也可以用有选择的转发来把信息归档。比如看老板或者妹子在你加的几个群里每天都说了啥等等。

聊天消息的主题归并,分析和搜索。微信聊天的基本单位是消息,但消息本身是非常碎片化的,很不适合搜索和分析。机器人可以把相关主题的消息归并起来,一方面可以大幅减小信息过载,一方面也可以从中得到更有价值的信息(类似视频分析里面把帧变成镜头)。这样分析以后可以做知识归档,用OneNote/印象笔记甚至公众号把讨论的成果沉淀下来。

聊天脉络的梳理。群里的人一多,经常会出现几个话题并行出现的情况。这种情况对于理解和搜索都是非常不利的。机器人也需要把聊天的脉络进行梳理,在同一时间,把不同主题分别开。

基本的统计数据。比如发言时间的分布,群的活跃度,成员的活跃度等等。做成漂亮的可视化,用户应该也会喜欢,给产品加分。

在可行性方面这个也是可能的。比如有基于 python 的 itchat (地址:https://github.com/littlecodersh/ItChat)和基于 typescript 的 wechaty(地址:https://github.com/Chatie/wechaty)。但稳定性可能是个问题,因为它们都不是微信官方支持的 SDK,而是从 Web 微信的接口中抓包得到的 API。基于 itchat,我做了一个在两个群之间无脑转发消息的机器人 (GitHub 地址:https://github.com/grapeot/WechatForwardBot),应该蛮有用的,希望能抛砖引玉。

在前面的知乎中的近义词系列里(请点击文末阅读原文跳转),我们介绍了一些基于文本理解的小应用,比如自动辨别近义词,文章的分类,索引和搜索。那么这个微信机器人系列,就会尝试把这些技术用到聊天群里面去,看能不能做出一个真正有用的智能机器人。

*题图 credit: Palto / Shutterstock

延伸阅读:如何在 i5 上实现 20 倍的 Python 运行速度?

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2017-04-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

有哪些因素会影响小程序的排名呢?

小程序关键词搜索排名规则 1、小程序上线时间:越早上线,优势越大,曝光次数越多(5%) 2、描述中完全匹配出现关键词次数越多,排名越靠前(10%) 3、标题中关...

38860
来自专栏企鹅号快讯

大数据可视化——这些必须知道的工具!

人们常说,数据是组织的生命线。然而,解析这些数据并有效地使用仍然是一个挑战。 ? 大数据可视化 假设拥有一个巨大的金矿,但不能使用。那么,作为一个金矿的拥有者有...

19880
来自专栏java一日一条

为什么我要用C写游戏

我就是这样一个与众不同的老顽固。最近所有由我单独完成的游戏项目完完全全都是用C写的。肯定没人这样干过,所以我觉得这值得我解释下为什么我要这样做。

12910
来自专栏无原型不设计

什么是“移动先行”原则,如何践行?

2010年的全球移动通信大会上,谷歌时任首席执行官Eric Schmidt 提出:产品设计应遵循 “移动先行” 的原则。 该原则具体指什么?遵循该原则的依据有...

36640
来自专栏无原型不设计

超赞!UX写手必备技能

以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具。

21280
来自专栏Jerry的SAP技术分享

SAP成都研究院郑晓霞:Shift Left Testing和软件质量保证的一些思考

今天的文章来自Jerry的同事,曾经的搭档郑晓霞(Zheng Kate)。郑晓霞是在Jerry心中是一位很有实力的程序媛,2011年从西安某软件公司跳槽到SAP...

17420
来自专栏Java面试通关手册

说几件小事

熟悉我的朋友应该知道,从大概3个月前,我开源了一个后端(偏Java方向)的学习/指南文档。Github地址为:https://github.com/Snailc...

10210
来自专栏祝威廉

为什么需要效率督查团队

上周和杭州某司同学面基,发现我们两同一年毕业,同一年出生,还是老乡,真是颇感意外。本来约好了是聊技术的,结果硬生生的聊成了如何提高团队效率的心得交流会。

11420
来自专栏短信平台

吉信通:怎样提高企业短信发送平台转化率?

受惠于短信群发的大中小型企业很多,可若是你对短信群发一点都不了解,什么都不知道,再加上没有选择一个正规的短信平台,就贸然进行短信群发操作,那么再好的...

18620
来自专栏DevOps时代的专栏

你所不了解的 DevOps

20840

扫码关注云+社区

领取腾讯云代金券