Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确定一个句子是否是疑问句?_Java_Algorithm_Nlp_Data Mining_Text Processing - Fatal编程技术网

Java 如何确定一个句子是否是疑问句?

Java 如何确定一个句子是否是疑问句?,java,algorithm,nlp,data-mining,text-processing,Java,Algorithm,Nlp,Data Mining,Text Processing,是否有一个开源Java库/算法用于查找特定文本是否为问题? 我正在开发一个问答系统,需要分析用户输入的文本是否为问题。 我认为这个问题可能可以通过使用开源NLP库来解决,但它显然比简单的词性标注更复杂。因此,如果有人可以通过使用现有的开源NLP库来告诉它的算法,那也很好。 如果您知道使用数据挖掘解决此问题的库/工具包,请告诉我。虽然很难获得足够的数据用于培训目的,但我将能够使用堆栈交换数据进行培训。许多准问题/信息请求是以语句的语法形式提出的;e、 g.“我想知道是谁偷了我的自行车” 我将

是否有一个开源Java库/算法用于查找特定文本是否为问题?
我正在开发一个问答系统,需要分析用户输入的文本是否为问题。
我认为这个问题可能可以通过使用开源NLP库来解决,但它显然比简单的词性标注更复杂。因此,如果有人可以通过使用现有的开源NLP库来告诉它的算法,那也很好。

如果您知道使用数据挖掘解决此问题的库/工具包,请告诉我。虽然很难获得足够的数据用于培训目的,但我将能够使用堆栈交换数据进行培训。

许多准问题/信息请求是以语句的语法形式提出的;e、 g.“我想知道是谁偷了我的自行车”

我将放弃从其结构中确定用户输入是否为问题的所有希望,而简单地假设它是一个问题,除非它明确地不是一个问题。您可以采取迭代、交互式的方法,以便系统能够完善其对用户输入的“理解”:

     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.

在对问题进行句法分析时,正确的结构将采用以下形式:

(SBARQ (WH+ (W+) ...)
       (SQ ...*
           (V+) ...*)
       (?))
因此,使用任何一种可用的语法分析器,一个带有SBARQ节点的树(可选)具有一个嵌入的SQ,这将是一个指示输入是一个问题的指标。WH+节点(WHNP/WHADVP/WHADJP)包含问句干(who/what/when/where/why/how),SQ包含倒装短语

i、 e:

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

当然,前面有很多从句会导致语法错误(这是可以解决的),写得很差的问题也是如此。例如,这篇文章的标题“如何找出一个句子是否是一个问题?”将有一个SBARQ,而不是SQ。

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

@Noel希腊语呢?他们使用
。“生存还是毁灭”也是如此。是不是一个问题?因为这就是问题所在。不能期望用户总是以?结束他们的问题?。“生存还是毁灭”也是一个问题@贝里萨里乌斯:那会花太长时间;)@belisarius这是千真万确的,有点愚蠢;-)这是一个很好的方法。我可以假设这纯粹是理论上的。@Lee:你对“做它”有什么问题吗?s/任何一个可用的语法分析器/任何使用Penn Treebank格式的分析器/对于英国广播公司制作的英国科幻电视节目《陈述医生》,Penn Treebank格式是(TOP)(NP(NP)(NNP Doctor))SBAR(WHNP(WP-Who))(S(VP(VBZ-is))(NP(NP(dta)(JJ-British)(NN-science)(NN-fiction)(NN-television)(NN-programme))(VP(VBN-producted)(PP(IN-by)(NP(DT-the)(NNP-BBC‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘)它失败了)····FYI