构建属于自己的“聊天机器人”——NLP系列
全文共2807字,预计学习时长9分钟
图源:pexels
前段时间上映的日剧《轮到你了》在网络掀起了不少热议,高起低落、烂尾嫌疑令人感到一丝遗憾,但也难以掩盖其剧情的精彩。这部片子融合了很多“接地气”的现代元素,“垃圾分类”、“人工智能”、“偷渡非法居民”等,反映了很多社会热点话题。
其中,最让小芯感兴趣的便是男二为男主做的“AI菜奈”——一个人工智能“聊天机器人”。它的“机智程度”不亚于真人,甚至有网友评论最终破案的其实是“AI菜奈”APP。
“AI菜奈”
这么神奇的聊天机器人,是怎么构建出来的呢?
今天就和小芯一起来深入了解一下吧~
图源:Unsplash
什么是聊天机器人?
聊天机器人,顾名思义,是一个可以同你聊天的机器。
构建聊天机器人的秘诀是使之越来越像人。从“美国运通客户支持”到“Google Pixel呼叫筛选软件”,我们生活中的聊天机器人形态各异,越来越丰富多彩。
聊天机器人实际上是怎样工作呢?
早期版本的聊天机器人运用一种名为模式匹配(pattern matching)的机器学习技术,比今天使用的高级自然语言处理技术要简单的多。
什么是模式匹配?
要理解这一点,想象你会询问一个书商什么问题?比如:“XX书多少钱?”或者“你们有xx作者的什么书?”每个用斜体印刷的问题都是一个模板的例子,用于匹配出现在未来的相似问题。
模式匹配需要许多提前生产出来的模板。基于这些提前生产出来的模板,聊天机器人可以简单轻松地挑选出最佳匹配顾客咨询的模板,并由此给予顾客答案。
你们认为下述的聊天是如何被创建的?
简单地说,问题“May I know the price for”被转化为模板The price of<star/>。模板就像一把钥匙,将储存所有未来的答案。所以我们得到如下的内容
--iPhoneX的价格是1500美元。
--KindlePaperwhite 的价格是100美元。
在AIML(人工智能建模语言)中,编码如下:
#PATTERN MATCHING
<category>
<pattern>MAY I KNOW THE PRICEFOR *</pattern>
<template>
<srai>THE PRICE OF<star/></srai>
</template>
</category>------------------------------------------------
#PRE_STORED PATTERNS<category>
<pattern>THE PRICE OF iPhoneX?</pattern>
<template>iPhone X Costs$1500.</template>
</category><category>
<pattern>THE PRICE OF KindlePaperwhite?</pattern>
<template>The all-new kindlepaperwhite costs $100. Yay!! You
have got an offer!! You can get itfor $85 if you apply
the coupon MyGoodBot
</template>
</category>
自然语言处理聊天机器人
模式匹配实施起来简单迅速,但只可以做到这一步。它需要很多预先生成的范本并且只适用于需要有限数量问题的应用程序。
图源:xkcd
进入自然语言处理环节!自然语言处理是可以理解一大堆问题的相对先进的科技组合。建立聊天机器人的自然语言处理过程可以被拆分为五个主要步骤
1)标识化(Tokenize)—词语切分是把文本切分成小部分,叫做标识符(tokens),同时丢弃掉一些字符特征,比如发音。这些标识符对于文本具有语言代表性。
标识化一个句子
2)标准化(Normalisation)-标准化通过处理文本,找出可能改变客户需求的意思的常见拼写错误。一个非常优秀的研究论文(对推文进行标准化的文章 )很好的阐述了这个观点
推文研究的语法标准化
3)识别实体(Recognising Entities)--这一步骤帮助聊天机器人确定在说些什么。比如这是一个目标,一个国家还是一串数字或者是使用者的地址。
观察如下的例子:Google,IBM 以及微软如何聚集成一个组织,这一步被称作为命名实体识别。
不同单词的实体。
4)依存句法分析(Dependency Parsing)--这一步把句子拆分成名词,动词,宾语,常用词组和标点。这项科技帮助机器确定句法,转而告诉它使用者想表述的意思。
斯坦福 — 依存句法分析示例
5)生成(Generation)--最后一步是如何生成回复。上述步骤通过NLU(自然语言识别器)得以实现,这些步骤帮助机器人理解被写下的句子。然而产出这一步骤通过NLG(自然语言生成器)实现。这一步接收先前NLU步骤的输出并且生成大量同样含义的句子。生成的句子在以下方面大体相似
- 文字的序列—“thekitchen light”与“the light in the kitchen”相近
- 单复数—“the kitchen light”与“the kitchen lights”相近
- 问题—“close the door”与“do you mind closing the door?”相近
- 否定—“turn on theTv at 19:00”和“don’turn on the tv at 19:00”相近
- 礼仪--“turn on the tv” 与 “could you please be so kind as to turn on the tv?”相近
基于用户问题的语境,机器人使用上述选项之一进行回复,使得用户满意地返回。在很多案列中,用户很难区别开机器和人类。
自从1995年发明AIML,聊天机器人稳健发展,并且已经取得了很大进步。甚至在2016年一个用户平均消耗大于20分钟在聊天软件上进行互动。其中,Kakao、Whatsapp 以及Line是最受人欢迎的聊天软件。
Similarweb
世界上的企业都正期望通过使用这些机器人消减客户服务的成本,并提供24小时的客户服务。
到2020年,80%的企业需要聊天机器人。
聊天机器人背后的技术——相当标准化的自然语言处理还有很长的路要走,但是即使在当下,自然语言处理在聊天机器人领域仍前景可观。
期待着人手一个专属聊天机器人时代的到来。(也不知是福是祸)
图源:pexels
留言点赞关注
我们一起分享AI学习与发展的干货
如转载,请后台留言,遵守转载规范