我是Python和NLP的新手,我的问题是如何找出给定问题的意图,例如我有这样的问题和答案:
question:What is NLP; answer: NLP stands for Natural Language Processing
我在上述问题中针对给定问题做了一些基本的POS tagger
我得到entety [NLP]
我也String Matching
using this algo。
基本上我遇到了以下问题:
what is NLP
,则会返回确切答案meaning of NLP
则失败Definition of NLP
则失败What is Natural Language Processing
则失败那么我应该如何识别给定问题的用户意图,因为在我的情况下,字符串匹配或模式匹配不起作用。
答案 0 :(得分:8)
您可以使用DeepPavlov进行意图识别,它支持多标签分类。更多信息,请参见http://docs.deeppavlov.ai/en/master/components/classifiers.html 演示页面https://demo.ipavlov.ai
答案 1 :(得分:6)
使用它 https://github.com/RasaHQ/rasa_nlu 意图识别和实体提取的良好框架。 它还允许简单的模型培训。
答案 2 :(得分:1)
有关基于问题和答案的系统的一般知识和优秀示例列表,此处列出了行业中NLP的排行榜:unit-sphere 根据您域的复杂性和范围,这个过程实际上可能变得非常复杂。例如,更高级的方法应用一阶+命题逻辑和复杂神经网络。 我见过的一个更令人印象深刻的解决方案是双向注意力流:https://rajpurkar.github.io/SQuAD-explorer/,演示在这里:https://github.com/allenai/bi-att-flow
在实践中,我发现如果您的语料库有更多特定于域的术语,则需要构建自己的词典。在你的例子中," NLP"和#34;自然语言处理"是同一个实体,因此您需要将其包含在字典中。
基本上,如果你能用一种像余弦距离这样纯粹的统计方法,那就认为自己真的很幸运。您可能还需要结合基于词典的方法。我所做的所有NLP项目都有特定领域的术语和"俚语"所以我使用了基于统计和词典的方法,特别是对于主题,意图和实体等特征提取。
答案 3 :(得分:0)
答案 4 :(得分:0)
使用深度学习模型,例如CNN和Word2Vec。
这些模型将能够适应您提到的句子中的变化。
在此处查看Keras实施 - https://github.com/sarweshsuman/keras-text-classification
答案 5 :(得分:0)
您可以将深度学习模型与单词嵌入模型和字符嵌入模型一起使用。 您可以使用RNN或CNN(根据我的说法,CNN速度更快,而RNN对于NLP则更稳定)。您可以使用任何word2vec模型,例如google-news,spacy,g手套等。