我们正在LUIS / Microsoft Bot framework上构建产品,我们对其中一个疑问就是人名理解。只要注册我们的网站,任何人都可以使用该产品。这意味着任何正在注册的公司都可以拥有任意数量的员工。
我们理解的是用户实体无法识别所有名称。我们已经创建了一个短语列表,但据我们所知,短语列表有限制(10K或者即使它的100K)并且世界上的名称永远不会有限制。我们想到的另一种方式是不用话语训练实体。但是,如果我们拥有100个拥有1000个用户的客户,那么在这种情况下,话语就不是一个好主意。
我没有看到任何其他处理这种情况的方法。可能我在这里遗漏了一些东西?任何人遇到类似的问题以及如何处理?
最糟糕的情况是为每个客户创建一个单独的LUIS实例,但这真的是一件大事,因为我们无法处理名称。
答案 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