【问题标题】:LUIS pattern feature does not detect my entityLUIS 模式功能未检测到我的实体
【发布时间】:2018-01-06 17:11:53
【问题描述】:

我想从一个意图中检测一个实体,它可能有几种写法:

AB 123456
AB 123 456
AB123456

AB 是封闭列表中的一个选项,其余的应该被检测为数字。只要AB 和数字之间有空格,就会检测/解析列表项和数字。

我发现了模式特征,希望这可以帮助解析器。

很遗憾,仍然无法识别实体。我尝试以不同的方式编写模式,但没有成功。

^([A-Za-z]{1,2})([0-9 ]+)$

([a-z]{2})([\d ]+)

[a-z]{2}[\d]+

有什么想法吗?

【问题讨论】:

  • 作为参考,您是使用 .NET 还是 Node.js SDK 开发您的机器人?
  • 使用 .net,但问题也可以在 luis 门户上重现(使用训练和测试)

标签: bots botframework azure-language-understanding


【解决方案1】:

AB 是封闭列表中的一个选项,其余的应该被检测为数字。只要AB和数字之间有空格,就会检测/解析列表项和数字。

如果"AB" 来自封闭列表实体,那么您应该为数字创建一个简单实体,并创建一个复合实体将两者结合在一起。简单的实体需要用一些话语进行训练,例如"123456""123 789""456789""201731" 然后模型(借助 RegExp 模式为您的模式特征提供帮助,[\d]{6})应该能够处理其余部分。

您将使用列表实体和新创建的简单实体作为复合实体的子实体。可能是“产品”之类的东西或比它更好的东西。

我想您可能会认为封闭列表是机器学习的,但事实并非如此。它直接与话语匹配,因此如果您的列表实体具有以下内容:

canonicalForm: "ProductId"
synonyms: "AB", "BA", "AB 123456"

并且话语 "BA 123456" 已由模型处理,LUIS 模型会将"BA" 识别为"ProductId",而根本不识别"123456"。通过扩展,整个话语将不会被识别为一个"ProductId"

【讨论】:

  • 我已经尝试过使用复合实体,但使用的是内置编号而不是简单类型。问题仍然存在,只有在“AB”和数字之间有空格的情况下,孩子才会被识别。我知道关闭的列表项不是机器学习的(不幸的是)。我也用简单类型尝试了你的建议,但结果更糟,因为它现在将“AB123456”检测为简单类型。目前,我正在使用正则表达式预处理 .net 中的用户输入,并在组之间添加一个空格,然后将其发送给 luis :(
  • Yuck :( 您可以尝试使用 Authoring API 或进行批量训练,以在您选择标记实体的索引时强制它识别空白(不确定这是否有效,尚未尝试)但这可能是徒劳的,具体取决于标记化。您还需要在您的正则表达式模式中添加一个空格(我应该在最初的回答中想到)。这个空格将在数字之前...跨度>
  • 只有当有没有个空格时才会出现问题。如果我用“AB123456”训练,我不能只标记“AB”。我只能选择整个单词。
【解决方案2】:

这个问题只存在于没有空格的情况下。如果我用“AB123456”训练,我不能只标记“AB”。我只能选择整个单词。

Luis 仅分析文本并帮助您获取工作所需的端点和上下文。它不会执行编程活动,例如读取字符串的某个部分并分配给实体……至少现在还没有

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多