我的问题是:LUIS知道什么是正确的名词吗?如果是这样,是什么使LUIS的专有名词?因此,我怎样才能让它可靠地识别一个名称,例如,在不同情境中的意图中的$ ContactName?例如,用语句或PhraseList训练它会有帮助吗?
我正在与LUIS合作创建在正确的上下文中将正确名称作为联系人的行。我很难让它始终如一地工作。
我尝试过使用话语和短语列表。短语列表看起来效果不好,而言语看起来效果很好。
我的过程是创建一个Book.Meeting意图,一个[$ Contact]实体,并从三个话语开始:
meeting with [john]
meeting with [john smith]
meeting with [john van smith]
然后我训练了应用程序并测试了一些输入:
input: output:
Meeting with john meeting with [$Contact]
Meeting with john smith meeting with [$Contact]
Meeting with smith john meeting with [$Contact]
Meeting with john van smith meeting with [$Contact]
Meeting with smith van john meeting with [$Contact]
Meeting with john smith van meeting with [$Contact] van
Meeting with smith john van meeting with [$Contact]
所以我发现顺序在大多数时候似乎并不重要,除非vanho这个词似乎不知道它的单词,不属于已知的专有名词。所以我想在这些条件下看看它会被视为[联系方式]。我运行了一些测试,看看其他单词的输出结果,包括专有名词,形容词和副词:
input: output:
Meeting with blue meeting with [$Contact]
Meeting with blue smith meeting with [$Contact]
Meeting with blue van smith meeting with [$Contact]
Meeting with blue della smith meeting with [$Contact]
Meeting with blue della table meeting with [$Contact] table
Meeting with table della blue meeting with [$Contact] blue
Meeting with blue van table meeting with [$Contact]
Meeting with table van blue meeting with [$Contact]
Meeting with hungry meeting with [$Contact]
Meeting with sad meeting with [$Contact]
Meeting with shut meeting with [$Contact]
Meeting with shut door meeting with [$Contact]
Meeting with shut door now meeting with [$Contact] now
Meeting with shut open door meeting with [$Contact] door
所以我发现在正确的语境中,LUIS会拾取其wordhoard中的任何单词,所以代替" john" for" smith",或名词" table",形容词" blue"甚至是诸如"关闭"等副词,LUIS将把它作为联系人实体接收。然而,它似乎最喜欢双字的名字。另外,有些单词并不像其他单词一样有效,所以它似乎比专有名词更像是名词(比如,#34; john"超过" van" )。似乎如果一个单词不在其单词中,例如" blazoops",它就不知道如何处理它。问题在于许多专有名词不会出现在它的字典中。因此,我试图训练它,以识别它所认为的胡言乱语,就像它所知道的专有名词一样,只要它在正确的语境中。我扔掉了测试应用程序并重新开始。我做了一系列的话语,将正确名词的顺序与不断增长的单词中的乱语混合在一起,以包括一个人的全名。
Book a meeting with [john]
Book a meeting with [john smith]
Book a meeting with [john aishsds]
Book a meeting with [jskjhd smith]
Book a meeting with [john skjsdkj smith]
Book a meeting with [kjsdjkhsd john smith]
Book a meeting with [ljksjd skjsdk smith]
Book a meeting with [john smith] and [jane doe]
Book a meeting with [john sikhsd] and [jane skdjsd]
Book a meeting with [sdsd smith] and [sdsd doe]
然后我发现,只要它在这种情况下,它就会一直捡到我扔的任何名字。在我的话语中不包含任何内容,它还包括带撇号(O' Brien)和连字符(Smith-Jones)的名称。但是,仅使用那些话语尝试该命令的不同变体会导致问题。例如,当我输入:
I'd like to book a meeting with kjhasiuhd sihdh and iojoia shhds
它给了我输出:
[I'd like to] book a meeting with [kjhasiuhd sihdh] and [iojoia shhds]
所以它正在接受"我想要"在一开始作为联系人/姓名。我能够通过添加那个话语并告诉LUIS起始词实际上不是$ Contact来解决这个问题。那句话似乎足以解决那个打嗝。
我注意到的另一件事是它理解了关键字"和"分隔了两个名字,但如果它不是关键字旁边的已知专有名词,则并不总是理解完整的双字或更多名称的开始和结束位置。例如,在"与sdsd smith和jane soidjsd"会面时找到完整的双字名称。更容易被理解而不是与约翰ssds和asdsd smith"会面。
但是现在大多数情况下它都是在话语结尾处将任意一串字作为名字。所以下一步是设置更多意图。我设置了$ datetime意图和$ Location意图。然后我给了它更多的话语:
Book a meeting with [hsdsd kjsjs] and [sjhsd aoowj] for [12pm]
Book a meeting with [kjhskjhd sjasd] and [jaskdhsd sjdhkshd] for [12pm] at [the eatery]
通过这些话语,我可以让它在正确的上下文中将任何内容识别为$ Contact名称,并使用正确的关键字分隔。它也适用于已知同义词的模式,因此,例如,以下也运作良好:
organise an appointment with [hsdsd kjsjs] and [sjhsd aoowj] for [9am]
我将这些话语导入到我正在处理的更大的应用程序的副本中,其中包含更多的意图和实体,以了解LUIS如何以更高的复杂性解析它。我很高兴看到将这些话语编程到Book中。主应用程序中的会议意图不仅像在迷你测试应用程序中那样工作,它还会延续到其他意图中,因此"预订会议[blah zippity] ..."和#34;查找[blah zippity]"意图和实体都被正确识别。
我希望通过避免需要几十个话语而不是只编写一个PhraseList来使这一切变得更加简单。我采用了相同的整体逻辑,并创建了PhraseLists,如:
约翰,简,约翰·史密斯,简·史密斯,约翰·奥' brien,jane o'奥布莱恩,罗伯特,托马斯·威尔逊,威廉姆斯,霍华德,埃塞尔,琼斯,阿卡什,刘成,米尔德里德,佛罗伦萨,托斯卡纳,兰开斯特,魏,马里昂,沃尔特斯,海伦,切斯特,丽晶,贾,约翰斯顿,哈里森,绿林, julie,dennis,connie,sharon,douglas,craig,greg,lisa,brian,sarah,peter,karen,van schmidt,james,scott,jackson,davis,david,michael,keith,andrew,lee,franklin,kjhskdhk sdfkjhdsfhm, kjksdfkhj john,john jhskjdsd,john askjdhs sksdsd,askdjhsdk john skjhdk,shkhoihwd asdjkhsd smith
我希望这会更好用,因为它可以为LUIS提供更多丰富的例子。但是,将PhraseList和示例话语作为开头,不能产生任何一致的结果。据我所知,它没有对待同义词'在识别实体时,在PhraseList中。
总之,使用上述话语方法使名称识别工作得相当好,但仍然不是100%。有没有人有类似的问题,并找到一个良好,一致的修复LUIS识别名称?无论如何,我希望这可以帮助任何人解决类似的问题。
答案 0 :(得分:0)
使用具有适当意图和关键字的模式作为模式的一部分
示例模式:
使用[名称]预订会议...只要“使用...预订会议”措辞相同,则实体[名称]可以使用任何名称
为意图添加对话性互补的模式变体。