所以我得到了一个用Microsoft Bot Framework构建的机器人,它使用LUIS API进行文本识别。使用这个机器人,我可以询问有关我在后端获得的不同设备的信息。他们有像Desk,Desk 2和Phone Booth 4这样的名字。第一个和第二个名称工作正常,但每当我发送一个包含2个或更多空格的名字时,LUIS将无法识别它。我已将所有名称添加到LUIS上的功能列表中,但它似乎没有做任何事情。当我在机器人代码中执行该意图的方法时,只要我发送这种名称,实体就是null。知道怎么解决这个问题吗?正如我所描述的那样,像Desk 2这样只有一个空间的名称就可以了。也许有一种方法可以将多个单词保存为LUIS中的实体?
在下图中,顶部的条目是“给我看电话亭4”,最下面的一个是“给我看台2”。
答案 0 :(得分:0)
这需要一点腿,但您是否尝试过以编程方式更新模型?
在LUIS API参考上,您可以标记individual utterances或在batches中执行此操作。这样做的好处是,您可以根据索引位置选择应该被识别为实体的内容。
示例:强>
{
"text": "Book me a flight from Cairo to Redmond next Thursday",
"intentName": "BookFlight",
"entityLabels":
[
{
"entityName": "Location::From",
"startCharIndex": 22,
"endCharIndex": 26
},
{
"entityName": "Location::To",
"startCharIndex": 31,
"endCharIndex": 37
}
]
}
我承认我之前没有尝试过这样做,但我不知道这种方式的标签/培训在逻辑上是如何失败的。
我注意到你的实体有一件事是它们由一个项目和一个数字组成。你可以把它们扔进一个复合实体;但是在这种情况下,按照我上面提到的方式做这件事是做你正在寻找的好方法。
也就是说,如果您计划将办公室家具(?)用作单独意图的实体,例如'PurchaseNewOfficePieces'
,则可能需要为'Desk 2'
创建使用复合实体和'Phone Booth 4'
。