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