当标点符号存在导致实体被错误解析时,LUIS会在话语中插入空格

时间:2016-07-31 00:04:36

标签: botframework luis

我正在玩这里的路易斯股票代码示例,GitHub MicrosoftBotBuilder Example,它运作良好,话语中的实体已被识别,但世界上有股票代号,其中有句点,如 bt.a

Luis默认预处理话语,其中在标点字符周围插入分词,因此话语是" 什么是bt.a的价格"变成" 什么是bt的价格。一个"因此,路易斯认为该实体是" bt "而不是" bt.a "

有谁知道怎么解决这个问题? THX

2 个答案:

答案 0 :(得分:2)

这就是LUIS如何标记话语,我不认为它会在不久的将来改变。 我想你可以调查两个解决方案中的一个:

  1. 预处理话语并使用标点符号对实体进行规范化(可能将它们保存在地图中),并在调用LUIS并提取实体时反转该过程。
  2. 使用词组列表功能并添加LUIS在其标记形式中未命中的实体,在话语中标记实体标记,并重新训练模型(我建议您在应用程序的克隆中尝试这样做,这样您就不会丢失任何当前进展)

答案 1 :(得分:1)

我需要处理带有网站地址的句子,所以我不得不处理几个不同的符号。我找到了一种适合我的技术,但它不是很优雅。

我在这里假设您有一个实体设置来代表“股票代码”

以下是您的情况。

  1. 检测LUIS获取“股票代码”实体错误的情况。在 你的情况可能是在一段时间内结束。
  2. 当LUIS获取实体错误时,使用空格标记化原始查询 作为分隔符。通过寻找匹配来获取正确的令牌 错误的部分代币。
  3. 所以你的例子......

    “什么是bt.a的价格”

    你会看到“bt”的“股票代码”实体。并且知道这是错误的,因为它在一段时间内结束。然后,您将对查询进行标记,并查找包含“bt。”的标记。这会将“bt.a”标识为请求的符号。

    它不漂亮,但在网站地址的情况下是可靠的。