LUIS - 了解任何人的姓名

时间:2018-01-10 08:09:53

标签: bots botframework luis

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

我们理解的是用户实体无法识别所有名称。我们已经创建了一个短语列表,但据我们所知,短语列表有限制(10K或者即使它的100K)并且世界上的名称永远不会有限制。我们想到的另一种方式是不用话语训练实体。但是,如果我们拥有100个拥有1000个用户的客户,那么在这种情况下,话语就不是一个好主意。

我没有看到任何其他处理这种情况的方法。可能我在这里遗漏了一些东西?任何人遇到类似的问题以及如何处理?

最糟糕的情况是为每个客户创建一个单独的LUIS实例,但这真的是一件大事,因为我们无法处理名称。

2 个答案:

答案 0 :(得分:3)

正如您可能已经知道的那样,一个人的名字实际上可以是任何东西:例如:动物,汽车,月份或颜色。因此,没有任何明确的方法可以将某些东西识别为名称。您最接近的是通过文本分析词性,或者猜测或比较现有列表。 LUIS或任何其他NLP工具不太可能对此有所帮助。这是一种可能更好的方法。尝试像Microsoft的Text Analytics认知服务,使用POST到Key Phrases端点,如下所示:

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."
    }
  ]
}

返回:

{
  "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"可能是,让你更好地了解这个名字是什么。此外,如果您有客户名称数据库,则可以将该值与客户名称(精确值或soundex)进行比较,以提高您对该名称的信心。

有时候,这些服务并不能给你100%的回答,你必须要有创造性的解决方法。有关详细信息,请参阅Text Analytics API docs

答案 1 :(得分:0)

已向我所在地区的少数MS人员提出这个问题,但似乎LUIS目前无法识别名称。

它不像NLP那样好,它无法处理这样的事情:(

我发现wit.ai(最好的到目前为止)识别名称,IBM Watson在某种程度上也很好。让我们看看它们将来会如何发展,但现在我切换到https://wit.ai