Machine learning NLP解析单个查询中包含的多个问题

Machine learning NLP解析单个查询中包含的多个问题,machine-learning,nlp,chatbot,Machine Learning,Nlp,Chatbot,如果用户的单个查询包含多个属于不同类别的问题,如何识别、拆分和解析这些问题 例如 User - what is the weather now and tell me my next meeting Parser - {:weather => "what is the weather", :schedule => "tell me my next meeting"} 解析器识别句子中问题属于两个不同类别的部分 解析器识别只属于一个类别的问题,但有额外的步骤来微调答案,并根据

如果用户的单个查询包含多个属于不同类别的问题,如何识别、拆分和解析这些问题

例如

User - what is the weather now and tell me my next meeting  
Parser - {:weather => "what is the weather", :schedule => "tell me my next meeting"}  
解析器识别句子中问题属于两个不同类别的部分

解析器识别只属于一个类别的问题,但有额外的步骤来微调答案,并根据要采取的步骤创建一个有序的数组

据我所知,这需要一个分句器多标签分类器共同参考分辨率

但我遇到的句子分段器在很大程度上依赖于语法和标点符号

多标签分类器,就像经过良好训练的朴素贝叶斯分类器一样,在大多数情况下都能工作,但由于它们是多标签的,所以大多数情况下会为明显属于一个类别的句子输出多个类别。仅依靠阵列输出检查存在的标签将失败

如果使用多类分类器,这也有助于检查可能类别的数组输出,但显然它们不能非常准确地说出句子的不同部分,更不用说以何种方式进行下一步了


作为第一步,我如何调整segmenter以在没有任何严格语法规则的情况下正确分割句子。良好的准确度将对分类有很大帮助。

如果您想要不严重依赖语法的切分,则会想到分块。在NLTK的书中有。作者在这里采用的方法仅依赖于词性标记

顺便说一句,Jurafsky和Martin的第三版包含解析章节中关于组块的信息,它还包含关于信息检索和聊天机器人的章节

作为第一步,我如何调整分句器,以便在没有任何严格语法规则的情况下正确分割句子

与其这样做,我建议您直接使用解析树(依赖关系解析或选区解析)

这里我展示了依赖项解析的输出,您可以看到这两个段通过一个“CONJ”箭头分开:

(从这里开始:)

我想尝试的另一个解决方案是克劳西:

是,此方法很有帮助。然而,对于酒店这句话来说,这将变得困难。这适用于程序尚不知道查询是否包含两个或多个标签的句子。有什么想法吗?你能举个例子吗?我需要更好地理解您所说的……为了清楚起见,对于您在演示中给出的第一个查询,查看依赖关系树以确定是否存在多个查询非常有帮助。但对于第二个查询,例如hotel,在解析器确定查询只有一个标签之后,我们可以只提取名词短语。所以问题是,为了确定这个问题有1个或多个查询,还需要在图中查找哪些其他内容。在clausie-for 1st query中,conj直接出现在root下,因此解析器可以判断可能存在第二个标签,但在hotel示例中,conj也以相同的方式出现。如何处理?看看这个conj的依赖项提取-这个例子没有连接指示符,但有两个语句,但没有一个明显的方法来找到答案-名词短语组块只会聚集某些短语。您是否建议通过分类器运行它们,以查看它是否属于同一类别或不同类别?我认为这需要一个新的培训来确定解析器应该如何决定如何处理块。我建议将此作为一个步骤,以找出哪些部分可能被用作适当的问题。
User - show me hotels in san francisco for tomorrow that are less than $300 but not less than $200 are pet friendly have a gym and a pool with 3 or 4 stars staying for 2 nights and dont include anything that doesnt have wifi  
Parser - {:hotels => ["show me hotels in san francisco",  
          "for tomorrow", "less than $300 but not less than $200",
          "pet friendly have a gym and a pool",
          "with 3 or 4 stars", "staying for 2 nights", "with wifi"]}