命名实体识别(NER)在任务导向型聊天机器人中的应用

图片

命名实体识别简称NER,是对专有名词的识别,也就是我们所关心的实体的识别,我们想识别哪一种类别的实体。

1. 命名实体识别在实际中的应用

Case1   命名实体识别在任务导向型聊天机器人中的应用

图片

Chatbot发展了很长时间了,在2004年的时候chatbot就开始火了,最开始的就是AIML(AliceBot),现在我们要解决多轮对话的问题,很多会采用增强学习的方法。但是在工业界,我们在做一个chatbot的时候,仍然大部分都是依赖于规则的,规则做不了的才会使用模型的方法做。

我们把chatbot拆开来看的话,识别完一个意图(intention)之后,在接下来的对话管理Dialog Management系统中,每个Intention都有一个状态机,然后基于规则去实现多轮对话,亚马逊Echo智能音箱的技术就是这么做的。

图片

在这个过程中,命名实体识别起到了一个非常重要的作用。任务导向型的聊天机器人的过程如下:

首先机器人先说了一句话,然后用户回了一句话“我想定个机票”,用户回了一句话之后我们就可以识别用户的意图,我们流程中的第一步就是识别意图,意图识别大部分是采用规则+模型的方式实现的,在工业界里面首先还是规则,如果规则不行再上模型,通过模型来弥补规则的一些缺点。模型基本是采用文本分类的模型,用户的话来了之后,需要把他的意图分成几大类。

例如我们的智能音响可能在家里面想使用的话可能会接收30个意图或者50个意图,这个过程就是多分类的问题。基本上基于规则的分类还是最准确的,规则做不了的事情通过模型弥补。

现在大部分的聊天机器人应该都是这个步骤,首先就是需要知道用户的意图,获得用户的意图之后,然后就进入了跟这个意图相关的Dialog Management(对话管理)的模块,然后会有一连串的对话。

对话管理系统大部分都是基于规则做的,就是我们首先说什么,然后再说什么,是基于规则来做的。

图片

识别出订机票这个意图之后,我们的机器会问出发地和目的地是哪里,然后用户回答了“从北京出发,到上海”,那我们用命名实体识别分类器(NER)从用户回答的句子中提取出我们机器想要的答案:出发地和目的地,那北京和上海就是我们需要的实体,“北京”和“上海”就是需要用NER的算法抽取出来,然后再通过一些关系的分析知道北京是出发地,上海是目的地。

在我们识别完意图之后,我们的对话管理系统中很可能有这样一个管理模块,如下图,我们先知道目的地和出发地,然后再去了解时间,这些信息都知道之后,那我们的slots就填完了,填完之后就去call我们的API,然后去获得航班的信息,这里面的核心就是通过NER算法抽取我们需要的实体,这里面就是北京和上海。

图片

接着通过我们的对话管理系统,机器人又去问日期,然后用户回答了“打算11月16日出发,最好晚上,”然后再通过NER识别出“11月16日”和“晚上”这两个我们需要的时间实体。

在我们的时间有了之后,我们所有的slots都填完了,如果还有其他的slots,那我们还需要去问一些问题,在所有的slots都有了之后,通过API的方式去调用我们的数据库,返回“找到了一个晚上9点东航的航班,9点10分出发,10:20到虹桥机场,可以吗”这句话,这句话返回的过程叫做NLG(Natural Language Generation)这是生成的过程,这一块也基本是采用规则的方式来做的。

图片

目前在市面上的聊天机器人包括一些在卖的智能音响,90%也都是采用规则的方法做的。

Case 2. NER在新闻抽取上的应用

图片

我们可以从给定的新闻中通过NER的算法提取出例如产品名、组织、公司以及人物的相关实体。

2. 英文NER工具

图片

3.中文NER工具

图片

这些NER工具的缺点就是它们只提供通用型的实体识别,就是只能提取人名、地名、时间等信息,如果我们想抽取我们关注的实体,例如医疗领域的实体,我们还是需要自己去构建命名实体识别分类器。

发表评论

登录后才能评论
网站客服
网站客服
申请收录 侵权处理
分享本页
返回顶部