【问题标题】:How to remove luis entity marker from utterance如何从话语中删除 luis 实体标记
【发布时间】:2019-06-11 02:21:41
【问题描述】:

我正在使用 LUIS 来确定客户居住在哪个州。我已经设置了一个名为“state”的列表实体,其中包含 50 个州及其两个字母缩写作为同义词,如文档中所述。 LUIS 正在返回某些两个字母的单词,例如“hi”或“in”作为状态实体。

我已经使用诸如“我的州是俄勒冈州”、“我来自西澳”等短语设置了一个意图。在意图内部,如果话语中包含“in”一词,例如在话语中“我住在肯塔基州”,“in”一词被 LUIS 自动标记为州实体,我无法删除该标记。

以下是 LUIS json 对“我住在肯塔基州”这句话的响应的片段。如您所见,响应包括印第安纳州和肯塔基州作为实体,而应该只有肯塔基州。

 "query": "I live in Kentucky",
  "topScoringIntent": {
    "intent": "STATE_INQUIRY",
    "score": 0.9338141
  },
....
    "entities": [
....
    {
      "entity": "in",
      "type": "state",
      "startIndex": 7,
      "endIndex": 8,
      "resolution": {
        "values": [
          "indiana"
        ]
      }
    },
    {
      "entity": "kentucky",
      "type": "state",
      "startIndex": 10,
      "endIndex": 17,
      "resolution": {
        "values": [
          "kentucky"
        ]
      }
    }
  ], ....

如果我无法从话语中删除意图标记,我如何训练 LUIS 在这种情况下不将“in”和“hi”标记为状态?

【问题讨论】:

    标签: azure-language-understanding


    【解决方案1】:

    在这种特殊情况下(使用州缩写/名称填充列表实体),使用 geographyV2 预构建实体或 Places.AbsoluteLocation 预构建域实体会更好。 (请注意,在撰写本文时,geographyV2 预建实体存在轻微错误,因此使用预建域实体会是更好的选择。

    原因有两个:

    第一,地理位置已经融入 LUIS,它们不会与“in”、“hi”或“me”等常规句法单词发生冲突。我通过创建一个包含“ct”作为归一化值和“ct scan”作为同义词的 [Medical] 列表来反向测试这一点。当我输入“get me a ct in CT”时,结果是“get me a [Medical] in [Medical]”。为了解决这个问题,我选择了第二个“CT”值并将其重新分配给 Places.AbsoluteLocation 实体。再培训后,我测试了“当在 CT 中显示我的 ct 选项”,它正确地导致了“当在 [Places.AbsoluteLocation] 中显示我 [医疗] 选项”。进一步的示例和培训将完善结果。

    第二,列表适用于具有可以引用一个的不同单词的单词。这个tutorial 显示了一个简单的示例,其中松散关联的单词被分配为规范名称(标准化值)的同义词。

    希望有帮助!

    【讨论】:

    • 感谢@StevenKanberg,这是有用的信息,但我真的只需要知道状态。 GeographyV2 区分地理类型(可以通过检查 builtin.geographyV2.state 的实体类型来验证)但 Places.AbsoluteLocation 不区分。所以我无法检查类型是州还是城市。 GeographyV2 中的小错误会影响状态吗?或者我可以安全地使用它吗?
    • 嗯,问题是 geographyV2 预构建的并不总是能识别每个应该识别的状态,也没有办法强制它识别。该问题正在审查中。但是,在您的情况下,它可能工作得很好。试一试,测试和监控。
    • 我发现了一个新问题。显然 geographyV2 prebuilt 不识别两个字母的状态缩写。那是错误的一部分吗?没有它,它对我的​​情况不是很有用。
    【解决方案2】:

    @StevenKanberg 的回答非常有帮助,但不幸的是,我的情况并不完整。我尝试实现 geographyV2 和 Places.AbsoluteLocation (分别)。两者都没有完全按照我需要的方式工作(以一种可以从响应中的实体查询的方式识别状态及其两个字母的缩写)。

    所以我的选择是:

    1. 创建我自己的状态列表,使用状态名称和两个字母的缩写作为同义词,如列表描述本身所述。除了两个字母缩写也是单词,例如“in”,“hi”和“me”,这有效。
    2. 使用 geographyV2 预建的,它不允许同义词并且根本不识别两个字母的缩写,或者
    3. 使用 Places.AbsoluteLocation 可以识别州的两个字母缩写,不会将它们与单词混淆,还可以获取所有位置,包括城市、国家和地址,并且不区分它们,因此我无法解析哪个实体是像“我住在华盛顿州斯诺霍米什县史蒂文斯湖”这样的话语中的状态。

    解决方案:如果我将 1 与 3 结合起来,我可以查询同时具有这两种类型的实体。如果 LUIS 将单词“in”标记为州(印第安纳州),然后我可以检查该单词是否也被标记为 AbsoluteLocation。如果没有,那么我可以安全地丢弃该实体。这并不理想,但可以解决问题。

    【讨论】:

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