NLP(自然语言处理)如何用任何方法检测问题?

NLP(自然语言处理)如何用任何方法检测问题?,nlp,Nlp,我寻找一种机器学习方法来检测一些问题 例如 User: Please tell me your name ? AI : (AI find User want to know his name) My name is [AI's name]. 我的数据集如下 [label], [question] 1 , What's your name? 1 , Tell me your name. ... 但问题是在输入中包含

我寻找一种机器学习方法来检测一些问题

例如

 User: Please tell me your name ?     
 AI  : (AI find User want to know his name)   
       My name is [AI's name]. 
我的数据集如下

[label], [question]    
   1   , What's your name?    
   1   , Tell me your name.
   ...
但问题是在输入中包含一些不是问题的东西

例如

User: Hello, my name is [User name]
AI  : (this is not a question)    
      (throw another process)
      (->) Nice to meet you.
问题的类别数量为10~20个,但非问题的句子数量太多


你知道如何解决这个问题或与之相关的任何任务吗?

你可能想把这个问题分成三个部分

  • 首先,您需要将任意长度的文本序列映射到固定长度的向量上。对于这个,你可以看看
  • 一旦你做到了这一点,问题就简化为一个简单的分类任务。您有一组向量和每个映射到的类别。具有一个隐藏层和一个softmax输出层的网络可能就足够了。这将为您提供类别分布
  • 最后,您需要确定每个预测的置信水平。我想到了两种广泛的方法。
  • 首先,您可以为“miscellaneous”引入一个新类别,并添加任何不符合“real”类别的句子。这种方法的缺点是,该类实际上是许多不相关类的并集,因此可能很难学习,因为这些点将分散在整个段落向量空间中,而不是存在于一个漂亮的簇中
  • 或者,在使用softmax进行规范化之前,您可以查看输出神经元的值,如果最可能的类别的值未超过某个阈值,则输出“未知类别”。您可能需要调整阈值,以最大限度地提高验证集的准确性

我不能保证这会起作用,但这是我首先要尝试的方法。

为了澄清,您的数据集有一组问题、标签对,您需要一个系统,在给定一个看不见的问题时,将确定它最有可能属于的类别,或指出它认为某个问题不属于任何类别?我无法详细设想细节,但在我看来,threathold>argmax(问题相关)。。。(如果argmax小于threathold,这不是问题)感谢您的信息。     我担心每个类别的样本数量差异会增加。我担心非疑问句比疑问句多得多。。。不管怎样,我将进行实验。@TakuyaEbata如果有那么多的类外示例,你可以改变最后两个步骤的顺序:首先,有一个网络,只给出它属于任何类的概率,然后是第二个网络,识别它属于哪个类,并且只对属于其中一个类的类进行训练。