如何判断一个句子是否是疑问句(疑问句)?

23

是否有一个开源的Java库/算法可以判断特定的文本是否是问题?
我正在开发一个问答系统,需要分析用户输入的文本是否是问题。
我认为这个问题可能可以通过使用开源的NLP库来解决,但显然不仅仅是简单的词性标注那么简单。因此,如果有人能告诉我如何使用现有的开源NLP库来解决这个问题,那就太好了。
如果您知道一个使用数据挖掘来解决这个问题的库/工具包,请让我知道。虽然获取足够的训练数据将会很困难,但我可以使用堆栈交换数据进行训练。


@Noel 希腊语呢?他们使用; - whiskeysierra
4
“生存还是毁灭,这是一个问题吗?因为那正是问题所在。” - polygenelubricants
5
不能期望用户总是以问号结尾。"生存还是毁灭,这是一个问题"也是一个问题。 :) - nabeelmukhtar
@belisarius 那会花费太长时间 ;) - Aaron Novstrup
@nabeelmukhtar 你好,问题解决了吗?我也在做同样的事情。想知道你的方法.. - Danyal Sandeelo
显示剩余3条评论
3个回答

13
在一个问题的句法分析中,正确的结构应该是这样的形式:
(SBARQ (WH+ (W+) ...)
       (SQ ...*
           (V+) ...*)
       (?))

因此,使用任何可用的语法分析器,具有嵌套SQ(可选)的SBARQ节点的树将表明输入是问题。 WH +节点(WHNP / WHADVP / WHADJP)包含问题主干(谁/什么/何时/在哪里/为什么/如何),而SQ保持倒置短语。

即:

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

当然,拥有大量的前置从句会导致解析错误(可以通过解决方法来解决),而糟糕的问题撰写也会导致解析错误。例如,本篇文章标题“如何判断一个句子是否是疑问句?”将具有SBARQ,但不会有SQ。


1
使用Penn Treebank格式的任何解析器中的任何一个。 - Fred Foo
对于该语句Doctor Who is a British science fiction television programme produced by the BBCPenn Treebank格式如下(TOP (NP (NP (NNP Doctor)) (SBAR (WHNP (WP Who)) (S (VP (VBZ is) (NP (NP (DT a) (JJ British) (NN science) (NN fiction) (NN television) (NN programme)) (VP (VBN produced) (PP (IN by) (NP (DT the) (NNP BBC))))))))))它失败了... - Arun A K
请注意,F#/C#的解析器可作为NuGet软件包使用:http://sergeytihon.wordpress.com/2013/07/11/stanford-parser-is-available-on-nuget/ - J c
我们能否在Python NLTK Penn Treebank中解析相同的结构? - Nitesh kumar

2
许多准问题/信息请求以陈述语法形式提出,例如:“我想知道谁偷了我的自行车”。
我建议不要从句子结构中确定用户输入是否为问题,而是假定它是一个问题,除非它明显不是一个问题。您可以采取迭代交互的方法,使系统能够改进对用户输入的“理解”。
     User: I would like to know how many angels fit on the head of a pin. 
     System: Do you have a question about angels?
     User: Yes.          
     System: Do you want to know if angels are fit?
     User: No.
     System: Do you want to know if angels have heads?
     User: Possibly.         
     System: Do you want to know if angels have pins?
     User: No.         
     System: Do you want to know if angels are numerous?
     User: No.
     System: Do you want to know the dimensions of an angel?
     User: Yes.
     System: Do you mean angels in paintings?
     User: No.
     System: Do you mean angels in myth and religious writing?
     User: Yes.
     System: Angels are metaphysical beings.


     User: I hear that Pennsylvania was founded by William Penn. Is that true?
     System: Do you have a question about hearing?
     User: No.
     System: Do you have a question about Pennsylvania?
     User: Yes.         
     System: Pennsylvania was founded by William Penn.
     User: When?         
     System: 1682.
     User: What does the name mean?
     System: What name?
     User: Pennsylvania!
     System: Do you want to know the meaning of Pennsylvania?
     User: Yes.
     System: Pennsylvania means Penn's Woods.

1
这是一种很好的方法。我可以假设这纯粹是理论上的吗? - Opal
7
@Lee: 你对“做这件事”有问题吗? - Tim

1

看一下Link Grammar Parser它是基于句子中相关单词的链接对概念构建的多语言解析器。它用C编写,但也有Java JNI接口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接