MindMeld中文文档--23.平台架构
平台架构Platform Architecture
MindMeld AI对话平台为构建和配置智能数据驱动的对话应用程序提供了强大的端到端通道。该平台的高级架构如下所示:
自然语言处理器
自然语言处理器(NLP)可以理解用户的查询-也就是说,它会生成画像,以捕获查询中的所有重要信息。然后由app使用该汇总表示来决定合适的动作或响应以满足用户的目标。(贯穿本指南,术语查询和自然语言输入是可以互换的。)
下面的示例显示了一个用户查询以及NLP结果输出。
自然语言处理器使用机器学习分类模型的层次结构来分析输入,如第7步中介绍的那样。除了这些分类器,NLP还有用于实体解析和语言解析的模块。总之,这构成了六个子组件:一个四层的分类层次结构,以及实体解析和语言解析模块。
管道按从左到右的顺序处理用户查询如上图所示,在此过程中,nlp应用了模式匹配,文本分类,信息提取和解析等技术的组合。
接下来,我们检查nlp管道中每个步骤的角色。
域分类器
域分类器对用户查询执行第一级分类,将其分配给应用程序可以处理的预定义域中的一个。每个领域都有自己的词汇和专门的术语,构成了一个独特的知识领域。
考虑一个对话应用程序作为“智能家庭助手”。这款应用程序有望处理几个不同的任务,比如:
- 在恒温器上设置温度
- 切换不同房间的灯光
- 锁定和解锁不同的门
- 控制家庭中的多媒体设备
- 控制家庭中的多媒体设备
设置恒温器和与电视互动的词汇非常不同。因此,可以将它们建模为单独的域-恒温器域和多媒体域(假设电视是房屋中几种媒体设备之一)。诸如Siri,Cortana,Google Assistant和Alexa之类的个人助理受过培训,可以处理十几种不同的领域,例如天气,导航,运动,音乐,日历等。
与之相对的是只有一个域的应用程序。通常,这些应用程序提供的所有功能在概念上都是相关的,并且跨越一个单一的知识领域。例如,“食品订购”应用程序可能会处理多个任务,例如搜索餐馆,获取有关特定餐馆的更多信息,下订单等。但是用于完成所有这些任务的词汇几乎完全共享,因此可以被建模为一个称为“食物”的单一领域。 因此,域的数量取决于应用程序的范围。
要了解如何在MindMeld中训练机器学习的域分类模型,请参阅本指南的“域分类器”部分。
意图分类器
一旦NLP确定了给定查询所属的域,意图分类器将查询分配给应用程序定义的意图之一来提供下一级别的分类。意图反映了用户试图完成的工作。例如,用户可能想预订航班,从目录中搜索电影,询问天气或在家用恒温器上设置温度,这些都是用户意图的示例。通过规定应用程序采取特定的操作和/或使用特定类型的答案进行响应,该意图还可以定义查询的期望结果。
对话应用程序中的大多数域都有多个意图。 按照约定,意图名称是动词,描述用户试图完成的工作。 这是“ Food Ordering”应用中来自食品领域的一些示例意图。
intent | Description |
---|---|
search_restaurant | 搜索符合特定条件的餐厅 |
get_restaurant_info | 获取有关所选餐厅的信息,例如时间,美食,价格范围等 |
browse_dish | 列出指定餐厅提供的菜肴,并按给定条件过滤 |
place_order | 下订单取货或交货 |
每个域都有自己独立的intent分类器,用于将查询分类为该域中定义的intent之一。应用程序在运行时根据输入查询的预测域选择适当的意图模型。
要了解如何在MindMeld中训练意图分类模型,请参见本指南的意图分类器部分。
实体识别器
NLP管道中的下一步是“实体识别器”,识别查询中的每个实体,该实体为给定意图相关的预先定义的实体类型。大多数意图有多个实体。按照惯例,实体名是描述实体类型的名词,以下是一些不同的对话意图可能需要的实体类型的示例。
weather | check_weather | location, day |
movies | find_movie | movie_title, genre, cast, director, release_date, rating |
food | search_restaurant | restaurant_name, cuisine, dish_name, location, price_range, rating |
food | browse_dish | dish_name, category, ingredient, spice_level, price_range |
Domain | Intent | Entity Type | Role Types |
meeting | schedule_meeting | time | start_time, end_time |
travel | book_flight | location | origin, destination |
retail | search_product | price | min_price, max_price |
banking | transfer_funds | account_num | sender, recipient |
语言解析器
如分步指南中所述,语言解析器是NLP管道中的最终模块。解析器找到提取的实体之间的关系,并将它们聚类为有意义的实体组,每个实体组都有一个固有的层次结构,代表着真实的组织结构。
解析器将上面示例中的已解析实体分为三个实体组,其中每个组描述了一个独特的现实概念:
前两组代表要订购的产品,而最后一组包含商店信息。我们称每个组主实体为父实体或为组中的其子实体或从属实体的头。该应用可以解释用户自然语言输入的这种结构化表示,以决定下一个动作和/或响应。在本例中,下一个操作可能是将订单提交到销售点系统,从而完成用户的订单。
NLP学术研究中使用的大多数自然语言解析器都需要使用昂贵的树库数据进行培训,这对于自定义对话域很难找到和注释。 相比之下,MindMeld中的Language Parser是基于规则的配置驱动解析器,它可以即用即用,无需培训。
要了解如何在特定应用中配置MindMeld解析器以获得最佳性能,请参阅本指南的“语言解析器”部分。
现在,我们已经看到自然语言处理器如何理解用户的需求。 那只是手头的一半,另一半分别由问题回答者和对话管理者负责。
问题解答者
如今,大多数对话应用程序都依赖知识库来理解用户请求并回答问题。知识库是关于给定的应用程序用例非常重要的综合存储库。负责与知识库交互的组件称为“问题回答者”。 请参阅分步指南的步骤5和9。
问答者从知识库中检索信息,以识别满足给定约束条件的最佳答案候选者。例如,餐馆应用程序的问题回答者可能依赖于包含所有可用项目的详细菜单的知识库,以便识别用户请求的菜肴并回答有关它们的问题。类似地,用于语音**多媒体设备的问答者可能具有知识库,该知识库包含有关音乐库中每首歌曲或专辑的详细信息。
MindMeld问答系统提供了一种灵活的机制,可以从知识库中检索和排序相关结果,并具有方便的界面,可用于简单和高级的搜索。
有关文档和示例,请参阅本指南的“问题解答”部分。
对话管理器
对话管理器指导对话流程–它是一个有状态组件,用于分析每个传入查询,然后将查询分配给一个对话状态处理程序,该处理程序依次执行适当的逻辑并向用户返回响应。
在为一个重要的用例构建对话应用程序时,正确地架构对话管理器通常是最具挑战性的软件工程任务之一。MindMeld抽象了对话管理的许多底层复杂性,为定义应用程序逻辑提供了一个简单而强大的机制。MindMeld提供了用于对话状态跟踪的高级功能,首先是用于定义规则和模式将请求映射到对话状态的灵活语法。它还允许对话状态处理程序调用任意代码以采取特定措施,完成交易或获取制定响应所必需的信息。
有关MindMeld中对话状态跟踪的实用介绍,请参见步骤4。本指南的“对话管理器”部分提供了更多示例。
应用程序管理器
作为MindMeld平台的核心协调器–应用程序管理器:
- 从支持的端点接收客户端请求
- 通过将请求传递给MindMeld平台的所有经过MindMeld训练的组件来处理请求
- 处理完成后,将最终响应返回给端点
应用程序管理器在后台工作,对MindMeld开发人员隐藏。
到此为止,我们快速浏览了MindMeld对话式AI平台。 本指南的其余部分由动手教程组成,这些教程侧重于使用MindMeld构建在MindMeld平台上运行的数据驱动的对话应用程序。