首页>>人工智能->Alexa 与 Microsoft LUIS 的集成

Alexa 与 Microsoft LUIS 的集成

时间:2023-11-29 本站 点击:0

Alexa 有一个非常好的自然语言处理引擎。但是,市场上还有其他 NLP 引擎可以使用,并且这些引擎包含越来越多的功能。

先决条件

在这里你有这个项目中使用的技术:

Node.js v12.x

视觉工作室代码

Azure 帐户

前言

Alexa 的 NLP 涵盖了 99% 的最常见用户用例,我们可以使用其引擎创建强大的 Alexa Skills。然而,事实上,NLP 引擎 MS LUIS 已经发展了很多,在那里我们可以找到很多我们在 Alexa 中找不到的功能,例如它的预建域或其预建实体、子实体和正则表达式实体.

设置我们的 Alexa 技能

我们需要做的第一件事是建立我们的交互模型。为此,我们将创建OrderIntent.在这个例子中,这个意图只有一个话语和一个槽。此插槽将具有以下AMAZON.SearchQuery类型:

根据定义,AMAZON.SearchQuery槽是一种与其他槽略有不同的槽,有了这个槽,我们将能够识别构成搜索查询的不太可预测的输入。它基本上是一个搜索查询,就像您可能输入到标准搜索引擎中一样。要使用此插槽,您必须在您的话语中添加一个载体短语。在这种情况下,我使用了I want.所以基本上我们将在我们说完之后将 Alexa 识别的所有内容发送到 MS LUISI want...

创建 Azure 认知服务

要通过 Amazon Alexa Skill 与 Microsoft LUIS 应用程序交互,我们需要创建一些 Azure 资源。

为此,我们需要在Azure 门户上创建一个自然语言理解服务和认知服务:

注意:确保您在创建过程中检查了预测和创作服务。

在此之后,请确保复制端点。我们将使用此端点与 MS LUIS 进行交互。您可以在Keys and Endpoint部分找到创建后的端点:

另外,请确保您已复制regionKey 1(这是我们将在接下来的步骤中使用的订阅 ID)!

创建 MS LUIS 应用程序

创建 Azure 资源后,必须在Luis 门户上创建 MS Luis 应用程序:

注意:确保您使用在上一步中创建的预测端点。

现在我们有了 MS LUIS 应用程序,让我们在这里添加交互模型:

构建实体和意图后,必须训练模型并将 LUIS 应用发布到Staging.

从 Alexa Skill 调用 MS LUIS

现在我们已经设置好了一切,让我们来编写我们的代码吧!为了与来自 Alexa Skill Lambda 编写的 Node.JS 的 MS LUIS 进行交互,我们将使用名为@azure/cognitiveservices-luis-runtime.您可以在此处找到该软件包的完整文档。

首先,我们必须创建我们的OrderIntentHandlerwhich 是将管理来自以下所有请求的处理程序OrderIntent

constOrderIntentHandler={canHandle(handlerInput){returnAlexa.getRequestType(handlerInput.requestEnvelope)==='IntentRequest'&&Alexa.getIntentName(handlerInput.requestEnvelope)==='OrderIntent';},asynchandle(handlerInput){predictionRequest.query=Alexa.getSlotValueV2(handlerInput.requestEnvelope,'luisquery').value;varresult=awaitclient.prediction.getSlotPrediction(appId,'Staging',predictionRequest,{verbose:true,showAllIntents:true});varspeak=intentDispatcher(result.prediction.topIntent,result.prediction.entities)returnhandlerInput.responseBuilder.speak(speak).reprompt(speak).getResponse();}};

正如您在上面的代码中看到的,我们从我们AMAZON.SearchQuery调用的槽中获取值luisquery,然后我们使用client和 函数将该值发送到 MS LUISgetSlotPrediction

要构建客户端,我们需要 3 个属性:

MS LUIS 应用程序 ID:您可以在 LUIS 门户上的 LUIS 应用程序中找到此值。

MS 订阅 ID。这个 MS 订阅 ID 是我们必须在上一步中获得的 ID。

MS LUIS 预测终点。此端点是我们必须在上一步中获得的端点。

当我们拥有这些属性时,我们可以像这样创建我们的 MS LUIS 客户端:

require('dotenv').config({path:'.env'})const{CognitiveServicesCredentials}=require("@azure/ms-rest-azure-js");const{LUISRuntimeClient}=require("@azure/cognitiveservices-luis-runtime");letsubscriptionKey=process.env["subscription-key"];constcreds=newCognitiveServicesCredentials(subscriptionKey);constclient=newLUISRuntimeClient(creds,process.env["endpoint"]);constappId=process.env["app-id"];//replacethiswithyourappId.constpredictionRequest={query:"",options:{datetimeReference:newDate(),preferExternalEntities:true}};

我们将从 MS LUIS 收到的结果将由以下人员管理intentDispatcher

functionintentDispatcher(intent,entities){varresult='';switch(intent){case'PizzaIntent':result=`Okay,Iwillgiveyou${entities['number']}Pizzas`break;case'BurgerIntent':result=`Okay,Iwillgiveyou${entities['number']}Burgers`break;default:result='SorryIdidn\'tcatchyou'break;}returnresult;}

最后结果

就是这样,您可以运行完整的代码。Alexa 使用 LUIS 作为其 NLP 引擎:

资源

官方 Alexa Skills Kit Node.js SDK

官方 Alexa Skills Kit 文档

官方 Express 适配器文档

官方 Microsoft Azure SDK 文档

结论

如您所见,我们可以在我们的 Alexa Skills 中以简单的方式集成其他 NLP 引擎。这个例子只是一个实验和一个简单的展示,但我建议你只使用 Alexa 内置的 NLP,因为你可以使用AMAZON.SearchQuery.

我希望这个示例项目对你有用。您可以在此处找到代码。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/AI/970.html