Python NLP意图识别

时间:2017-05-27 06:07:05

标签: python machine-learning nlp

我是Python和NLP的新手,我的问题是如何找出给定问题的意图,例如我有这样的问题和答案:

question:What is NLP; answer: NLP stands for Natural Language Processing

我在上述问题中针对给定问题做了一些基本的POS tagger我得到entety [NLP]我也String Matching using this algo

基本上我遇到了以下问题:

  1. 如果用户询问what is NLP,则会返回确切答案
  2. 如果用户询问meaning of NLP则失败
  3. 如果用户询问Definition of NLP则失败
  4. 如果用户询问What is Natural Language Processing则失败
  5. 那么我应该如何识别给定问题的用户意图,因为在我的情况下,字符串匹配或模式匹配不起作用。

6 个答案:

答案 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)

我认为这实际上取决于您的问题和域名的框架。 Here是一个可能对问题类型分类有用的数据集,而here是一个实现。

这些说法,我认为你需要注释你的文本,可能是ChunkerSRL等,并提取有趣的模式。

答案 4 :(得分:0)

使用深度学习模型,例如CNN和Word2Vec。

这些模型将能够适应您提到的句子中的变化。

在此处查看Keras实施 - https://github.com/sarweshsuman/keras-text-classification

答案 5 :(得分:0)

您可以将深度学习模型与单词嵌入模型和字符嵌入模型一起使用。 您可以使用RNN或CNN(根据我的说法,CNN速度更快,而RNN对于NLP则更稳定)。您可以使用任何word2vec模型,例如google-news,spacy,g手套等。