LUIS——理解任何人的名字

LUIS - understand any person name

我们正在 LUIS / Microsoft Bot framework 上构建产品,我们的疑问之一是对人名的理解。只需在我们的网站上注册,任何人都可以使用该产品。这意味着任何注册的公司都可以拥有任意数量的任意姓名的员工。

据我们了解,用户实体无法识别所有名称。我们已经创建了一个短语列表,但据我们所知,短语列表是有限制的(10K 甚至 100K),世界上的名字永远不会有限制。我们考虑的另一种方式是不要用话语来训练实体。但是,如果我们有 100 个客户,每个客户有 1000 个用户,那么在这种情况下,话语将不是一个好主意。

我看不出有任何其他方法可以处理这种情况。可能我在这里遗漏了什么?任何人都遇到过类似的问题以及如何处理?

最坏的情况是为每个客户创建一个单独的 LUIS 实例,但这确实是一项艰巨的任务,只是因为我们无法处理名称。

您可能已经知道,一个人的名字可以是任何字面意思:例如动物、汽车、月份或颜色。因此,没有任何明确的方法可以将某物识别为名称。最接近的方法是通过文本分析词性,然后进行猜测或与现有列表进行比较。 LUIS 或任何其他 NLP 工具不太可能对此提供帮助。这是一种可能效果更好的方法。尝试类似 Microsoft 的文本分析认知服务,使用 POST 到关键短语端点,如下所示:

https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/keyPhrases

和正文:

{
  "documents": [
    {
      "language": "en-us",
      "id": "myid",
      "text": "Please book a flight for John Smith at 2:30pm on Wednesday."
    }
  ]
}

那个returns:

{
  "languageDetection": {
    "documents": [
      {
        "id": "e4263091-2d54-4ab7-b660-d2b393c4a889",
        "detectedLanguages": [
          {
            "name": "English",
            "iso6391Name": "en",
            "score": 1.0
          }
        ]
      }
    ],
    "errors": []
  },
  "keyPhrases": {
    "documents": [
      {
        "id": "e4263091-2d54-4ab7-b660-d2b393c4a889",
        "keyPhrases": [
          "John Smith",
          "flight"
        ]
      }
    ],
    "errors": []
  },
  "sentiment": {
    "documents": [
      {
        "id": "e4263091-2d54-4ab7-b660-d2b393c4a889",
        "score": 0.5
      }
    ],
    "errors": []
  }
}

请注意,您得到 "John Smith" 和 "flight" 作为关键短语。 "flight" 绝对不是名称,但 "John Smith" 可能是,让您更好地了解名称是什么。此外,如果您有一个客户名称数据库,您可以将该值与客户名称进行比较,无论是准确的还是 soundex,以增加您对名称的信心。

有时,服务不会给您 100% 的答复,您必须创造性地解决问题。请参阅 Text Analytics API docs 了解更多信息。

我已经向我所在地区的几个 MS 人员问过这个问题,但 LUIS 目前似乎无法识别姓名。

它不如 NLP,它不能处理这样的事情:(

我发现 wit.ai(迄今为止最好的)在识别名字方面,IBM Watson 在某种程度上也很好。让我们看看他们将来会如何,但现在我切换到 https://wit.ai