2017-05-27 618 views
1

我在Python和NLP新手,我的问题是如何找出给定问题的意向,比如我有套试题和答案是这样的:的Python NLP意图识别

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

我做了一些基本的POS tagger在给出的问题上面的问题我得到entety [NLP]我也做了String Matchingusing this algo

基本上我遇到以下问题:

  1. 如果用户要求what is NLP那么它将返回精确的答案
  2. 如果用户要求meaning of NLP那么它失败
  3. 如果用户要求Definition of NLP那么它失败
  4. 如果用户询问What is Natural Language Processing则失败

因此,我应该如何识别给定问题的用户意图,因为在我的情况下,字符串匹配或模式匹配不起作用。

+0

这是一个没有简单(或确定)答案的难题。如果你是NLP新手,这不是一个好的开始。 – lenz

+0

什么是“意图”? – Daniel

+0

@Daniel'Intent'意思是用户提问的意图例如:'位置,是否,命令,定义等'为了更多检查这个[chat bot architecture](http://pavel.surmenok.com/2016/09/11 /聊天机器人架构/) – Yogesh

回答

0

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

这些被说,我认为你需要注释您的文本,可能由Chunker,SRL等,并提取有趣的模式。

1

对于一般的知识和对问题的很好的例子列表,并回答为基础的系统,NLP的在同行业中领先这里列出:https://rajpurkar.github.io/SQuAD-explorer/ 这个过程实际上可以得到真正取决于您的域名的复杂性和范围。例如,更高级的方法应用一阶+命题逻辑和复杂的神经网络。 一个更令人印象深刻的解决方案我看到的是双向的关注流量:https://github.com/allenai/bi-att-flow,演示是在这里:http://beta.moxel.ai/models/strin/bi-att-flow/latest

在实践中,我发现,如果你的语料库有多个域专用术语,你需要建立自己的自己的字典。在您的示例中,“NLP”和“自然语言处理”是相同的实体,因此您需要将其包含在字典中。

基本上,如果你能像纯余弦距离那样纯粹的统计方法逃脱,那么认为自己真的很幸运。您可能还需要结合基于词典的方法。我所做的所有NLP项目都有特定于领域的术语和“俚语”,所以我将基于统计和基于词典的方法结合使用,特别是用于主题,意图和实体等特征提取。