确定句子是否是查询
nlp
4
0

如何检测搜索查询是否为问题形式?

例如,客户可能搜索“如何跟踪我的订单”(注意,没有问号)。

我猜最直接的问题将符合特定的语法。

很简单的猜测方法:

START WORDS = [who, what, when, where, why, how, is, can, does, do]

isQuestion(sentence):
  sentence ends with '?'
  OR sentence starts with one of START WORDS

起始字词列表可能更长。范围是一个网站搜索框,因此我认为列表中不需要包含太多单词。

有没有比我的简单猜测方法更好的库?我的方法有什么改进吗?

参考资料:
Stack Overflow
收藏
评论
共 5 个回答
高赞 时间 活跃

另请参阅: 如何找出一个句子是否是一个问题(疑问句)?

我对这个问题的回答:

在问题的句法解析中(通过类似nltk的工具包获得),正确的结构将采用以下形式:

(SBARQ (WH+ (W+) ...)
       (SQ ...*
           (V+) ...*)
       (?))

因此,使用任何可用的语法解析器,带有SBARQ节点且具有嵌入式SQ(可选)的树将指示输入是否为问题。 WH +节点(WHNP / WHADVP / WHADJP)包含问题词干(谁/什么/何时/何地/为什么/如何),并且SQ包含倒置短语。

即:

(SBARQ 
  (WHNP 
    (WP What)) 
  (SQ 
    (VBZ is) 
    (NP 
      (DT the) 
      (NN question)))
  (. ?))

当然,拥有大量的前置子句会导致解析错误(可以解决),以及写得不好的问题。例如,该帖子的标题“如何找出一个句子是否是一个问题?”将具有SBARQ,但没有SQ。

收藏
评论

要确定疑问句的起始词,您应该经过一个大型文本语料库,以寻找以?结尾的句子? ,并找出您在其中找到的最常见的起始词。

您会想到的一些遗漏包括,上午,上午,是,曾经,可能,可能,可以,可能,将会,应该,会,应该,已经,曾经,曾经和已经发生。也许还和WHEN一起去。还应考虑IN,AT,TO,FROM和ON,以及UNDER和OVER。所有这些都取决于您拥有的查询系统的种类以及希望为用户提供的自然语言查询的自由度。

同样的,你应该检查所有自己的查询,人们已经在相同的光发,发现其中他们的问题实际上是终端的?以帮助识别相似的事物,但不能。

那应该找到很多疑问。势在必行吗?

根据您想要获得的幻想,您可能会考虑使用Wordnet之类的词作为词性标记的开始。它主要用于同义词集,包括上位词,下位词,全名和副词信息,但我相信它也会包含您要查找的其他信息。

维基百科上有几篇关于问答自然语言搜索引擎的文章 。两者都有您可能会追求的参考。您也可以浏览以下PDF论文:

最后,麻省理工学院的START自然语言问答系统似乎很有趣。

收藏
评论

找出句子是否是一个问题并不是一件容易的事,因为人们提出问题的方式有很多,其中许多都不遵循语法规则。因此,很难找到一个好的检测规则集。在这种情况下,我会去机器学习并使用带注释的文本语料库训练算法(创建语料库并选择功能集可能需要一些时间)。与基于规则的方法相比,基于机器学习的识别应该为您提供更好的回忆。以下是分步说明:

  1. 手动创建火车数据集:获取带注释的文本(如果有问题,则提供相关信息),文本收集或自行创建这样的语料库(应包含100多个文档,许多问题不能是简单的问题)
  2. 查找最重要的功能-提取词性,5W1H(什么,哪个,...,如何),在每个句子中获取动词的位置以及其他对识别问题有用的内容
  3. 根据提取的信息为特征句子中的每个句子创建一个向量(您需要正例和负例),例如,

    |已 ? |第二位置的动词有5W1H |句子的第一位置是5W1H吗? ... |句子长度|有问题吗?

  4. 使用向量来训练机器学习算法 ,例如MaximumEntropy, SVM (可以使用WekkaKnime

  5. 使用训练有素的算法进行问题识别。

  6. 如果需要(新问题示例),请重复步骤。

收藏
评论

您将需要一种更高级的语言分析形式来实现这一目标。需要证明吗?好的...

确实是母鹿。

有志者,事竟成。

时间到了,我会跳!

为什么不呢我没有裸露的镍。

收藏
评论

为了支持JohnFx的回答,情况变得更糟。以下是明确的问题:

  • 你有什么问题吗
  • 这个答案足够吗
  • 一个问题,那是什么

然后您会发现用户开始输入以下类型的查询:

  • 我想知道是什么问题。

这甚至是一个问题吗?从句法上讲,不是,但是确实值得一个可以轻易称为答案的答复。 (这些查询可能很常见,具体取决于您的用户群。)

底线:如果您不打算以一种特殊的,语言复杂的方式来处理问题(例如使用自然语言生成直接答案),那么识别它们甚至可能不会很有趣。从查询中选择正确的关键字可能会更有意义。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号