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

标签 java algorithm nlp data-mining text-processing

是否有用于查找特定文本是否是问题的开源 Java 库/算法?
我正在开发一个问答系统,该系统需要分析用户输入的文本是否是问题。
我认为这个问题可能可以通过使用开源 NLP 库来解决,但它显然比简单的词性标记更复杂。因此,如果有人可以通过使用现有的开源 NLP 库来告诉算法,那也很好。
如果您知道使用数据挖掘来解决此问题的库/工具包,也请告诉我。虽然很难获得足够的数据用于训练目的,但我将能够使用堆栈交换数据进行训练。

最佳答案

在一个问题的句法分析中,正确的结构将是:

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

因此,使用任何可用的句法解析器,具有嵌入 SQ(可选)的 SBARQ 节点的树将指示输入是问题。 WH+ 节点(WHNP/WHADVP/WHADJP)包含问题词干(who/what/when/where/why/how),SQ 包含倒置短语。

即:

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

当然,有很多前面的子句会导致解析中的错误(可以解决),写得不好的问题也会如此。例如,这篇文章的标题“如何判断一个句子是否是一个问题?”会有一个 SBARQ,但没有一个 SQ。

关于java - 如何判断一个句子是否是疑问句(疑问句)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3573872/

相关文章:

algorithm - 使用稳定排序算法与使用原始索引来解决关系的不稳定排序相比有什么优势?

c - 算法与设计模式有何不同?

php - 使用 PHP 进行文本挖掘

parsing - 如何使用 StanfordNLP Python 包做依赖解析?

nlp - 如何解释对齐工具 fast_align 的对齐分数?

java - GWT-Ext 中的 ThemeChanger

Java 休息客户端 : jax-rs & automatic type mapping

c++ - 第 n 个斐波那契数的调用次数

java - Spring boot 2 + AWS Beanstalk 设置堆大小

java - 使用声明性服务的 OSGi+Pax-Web 中的 GWT 问题