这一篇文章与我们的NLP理论知识无关,甚至都没有用得上什么NLP方面的高深算法知识,但是这却是市场上各种助手类工具的一个简化版.基本的逻辑和基本的功能都相仿,这一篇文章我希望能够结合这个小例子,梳理下现在的"人工智障"
现如今市场上的巨头早已经模块化和平台化.我们普通的设计人员只需要想好自己的使用需求乖乖交钱调用就好.一个很典型的就是:
打开他们的开发文档来看,
DuerOS开放平台 | 资源中心dueros.baidu.com
很多层面是真的"人工智能",因为很多就是我们人工给定的...
而我们真正的自然语言处理的技术,更多地是用在了如何提升语音识别率这上边,距离智能客服真正理解你还是任重道远.
现在我们来用简单的python代码来实现一个简单的人工小机器人,其主要的功能有以下几个:
1:陪你聊天
2:训练聊天
3:时间查询
4:日历查询
5:单词查询
6:天气查询
问题来了,要做一个"人工智障"我们首先得知道会用到哪些学到的知识点:
字典:存储机器人的相关对话内容,让机器人有相关的“记忆”
循环(嵌套循环):一直去响应我们对应的问题
判断: 执行流程操作
这些都是python3中的最简单的基本操作.话不多说,直接上代码:
1:聊天部分
这一个部分因为没有使用到数据库,所训练的问题在一次之后再运行就没有了,相比之下大公司因为有足够的数据量和计算量,可以对语言助手收集的内容进行学习处理,因此效果提升的很明显.我们可以简单的把dict看成是一个数据库,训练小助手可以看做向助手的数据库里增加问题.
2:翻译工具
这个翻译爬虫是我之前在弄百度翻译爬虫的时候写的,现在正好用的到,就跟我们通常用一些语言助手,我们说一个自己不认识的英语单词,告诉小助手,助手其实也是将这个单词提交给其单词查询的接口,接口给小助手回复后,小助手在回复给你.
3:天气模块
天气模块因为我没有购买天气提供商的API,所以这里就只提供了简单的模拟登陆的信息爬取,具体的有兴趣的可以进行细化:
这里最关键的是101010100,代表北京
其他的城市的代码可以参照网上的资料
总结:
在用户不熟悉的场景下,咱们的"人工智障小助手"面对稍微专业一点的服务,就会遇到知识图谱的问题。简单来讲,"人工智障小助手"要做推荐的前提是对推荐的内容得先有了解。好比,要向一位不懂酒的用户推荐一款威士忌,那就不能依赖这位用户自己提出的问题(很可能提不出要求),而得依赖“懂行”的自己对威士忌的理解的方方面面来引导用户做合适他的选择。一个助理显然无法拥有所有服务所需的知识图谱。
从知识图谱的结构来看,是相对可被结构化。一个服务可以以各种方式被拆解成很多个方面,但大量的方面在当前是没有结构化数据的(比如我们没有每家餐厅的“营业面积”的数据);甚至很多方面无法用结构化数据来表达(比如每家餐厅有否“适合浪漫约会”的环境)。
因此,就算有了强大的NLP,还需要全面的知识图谱(结构化数据)和处理并传递非结构化数据的能力——而这两点,在目前是无解的。
而在这个路上,我们还需要走更远