为应用增加语言理解功能
LUIS 为你提供一种简单的模型创建方式,使你的应用程序能够理解诸如“开灯”或“订购去巴黎的机票”等用户命令。创建后,只需单击一次即可将模型发布成HTTP服务,并返回易于使用的 JSON。
使用LUIS的好处
人 - 计算机交互中的关键问题之一是计算机能够理解人们想要什么,并且找到与他们的意图相关的信息片段的能力。例如,在旅行社应用程序中,你可以说“帮我预订一张票到巴黎”,在这种情况下有意图“订票”,而“巴黎”是位置实体。意图可以被定义为期望的动作,并且通常包含动词,在这种情况下是“预订”,并且实体是动作要处理的主要和次要目标,在这种情况下是“巴黎”。
一旦应用程序上线,接收到真实的数据,LUIS会使用主动学习来提高自身。在主动学习过程中,LUIS将模棱两可的文本识别出来,并要求你根据意图和实体标记它们。其次,通过专门的样本,LUIS可以快速地学习,短时间内达到特定领域较高的智能水平。
本地化支持
LUIS UI始终为英语,但在理解语音时,支持英语,法语,意大利语,西班牙语和中文等多种语言。
以编程方式访问LUIS
LUIS提供了一个可编程的REST API,可用于自动化创建和发布特定语意模型。
首次使用LUIS
要使用LUIS,请确保你有最新版本的Microsoft Edge,Internet Explorer或Google Chrome。 转到主页www.luis.ai并登录。您将看到如下所示的屏幕。
创建你的第一个LUIS应用程序
所有LUIS应用程序都围绕特定领域的主题,例如预订机票,航班,酒店,租车等或与锻炼有关的内容,跟踪健身努力和设置目标。在创建LUIS应用程序之前,你需要确定特定领域的主题。在这种情况下,让我们以虚拟旅行预订代理应用程序为例。在应用程序中,你将捆绑对您的任务很重要的意图和实体。与旅行预订相关的两个意图是“预定飞机票”和“了解天气情况”。两个重要的实体是“位置”和“日期”。一旦你确定了意图和实体,当用户与你的应用程序交互时,LUIS可以采取适当的行动。
步骤1:创建应用程序
单击“My Applications”,然后单击“New App”按钮创建一个新的应用程序。在对话框中,将其命名为“TravelAgent”。然后单击“Add App”。
步骤2:添加意图,实体和标签
接下来,我们将向应用程序添加两个意图。 在菜单面板的左上角,你将看到一个意图区域。 所有应用程序都有一个预定义的意图,“None”。 这将识别与应用程序无关的用户语句,例如,如果有人说“给我一个很棒的甜点食谱”。
然后点击水平栏上的意图旁边的+。 你将看到一个对话框,以添加新的意图。 输入“BookFlight”的意图名称,以及触发意图为“Book flight to Paris”的示例命令。 这将看起来像下面的屏幕截图。
单击“Save”、单击“Submit”完成操作。
接下来,添加第二个名为“了解天气情况”的意图,使用触发意图的示例命令为“伦敦的天气怎么样”。单击保存、单击提交。
定义实体
在左侧面板上,你将看到一个添加实体的选项。我们希望能够说出我们感兴趣的旅行方式,并且规划目的地,了解旅行目的地的天气情况。为了捕获“位置”的主题,让我们创建实体类型:“位置”。为此,请单击实体栏上的“+”按钮,然后在文本输入框中键入“位置”。你现在已创建一个名为“位置”的简单通用实体,通常是你可能需要的,但有更多的高级选项。
分层实体
你还可以定义实体之间的继承关系。通用实体用作父级,子级是父级下的特定类型或子组,但两者具有相同的特性。例如,通用实体可以称为“位置”,并且该父实体的特定自级可以称为“目的地”和“出发地”。 LUIS服务可以在解析语音,构建模型和训练它们时识别这种类型的实体及其子实体。
定义分层实体
使用上述“位置”示例,请按照下列步骤操作。
在“应用程序编辑器”工作区中,在左侧菜单面板中查找“Entities”,然后单击+号。
在“Add a new Entity”对话框中,键入“位置”作为实体名称。
单击“Entity Children”旁边的加号。
在出现的文本框中,键入第一个子实体的名称“目的地”。
再次单击加号以添加第二个子实体“出发地”,依此类推。
如果要删除子实体,请点击子实体旁边的垃圾桶标志。
完成后,单击“保存”。
使用必应的预定义实体
假如你的应用程序要发出一组旅行预订请求,你可能会想说一些像“帮我预订5月4日飞往波士顿的机票”。这需要能听懂日期类型的话,包括月份、年份的名字。例如“五月”,“六月”,“下个月”和“明年”等。我们可以使用一个必应的预定义实体模型“DateTime”。点击+号从预定义实体下拉菜单中选择“DateTime”。
实体限制的重要注意事项
在一个LUIS应用程序中每个意图最多可以使用10个实体。
每个父实体最多可使用10个子实体。
添加子实体时,请确保在创建父实体的同时添加子实体。
要删除带有子实体的父实体,请单击左侧面板中的实体名称,然后单击对话框中的“删除”。
步骤3:为了让系统理解语意,对文本内容做特定标记
现在我们有了定义好的一组意图和实体,下一步是输入更多例子来建立话术体系。单击屏幕顶部的“新建工具”选项卡。在输入框中输入“将航班预订到伦敦”,然后按Enter键。你将看到一个下拉框,显示可能的意图。通过突出显示选择“BookFlight”。点击“london”,然后从下拉框中选择“位置”,你会看到以黄色突出显示的“london”字样,表示你已将“london”一词标记为“位置”。选择它是“ToLocation”还是“FromLocation”,然后单击提交以提交此标签。
每个意图和每个实体都需要输入的几个示例。另外,不要忘记添加一个或两个不在预定义意图范围内的例子,例如,输入“我喜欢冰淇淋”。
系统现在已经获得足够的数据来部署初始应用程序。这是通过培训和发布模型完成的。
步骤4:训练模型
当你“训练”一个模型的时候,LUIS会分析所有已经标记过的例子,进行抽象,并在将来开发代码来识别相关的意图和实体。LUIS使用逻辑回归分类器来确定意图,以及条件随机字段(CRF)来确定实体。训练过程产生优化的分类器和CRF,称为模型。要开始一个训练,只需点击页面左下角的Train按钮即可。训练也会定期自动进行。
步骤5:发布模型
下一步是将模型发布成HTTP服务,它将解释我们发送的句子。单击左上角的“发布”按钮,然后在生成的窗口中发布Web服务。几分钟后,你将看到一个网址,使你的模型可用作Web服务。 LUIS将如下面的截图所示。
了解JSON格式的返回值
下面展示了一个意图和分层实体的示例,语意分析结果采用JSON格式返回给调用者。
现在,你已经学会了怎么使用LUIS为自己的应用添加智能了。