是否存在识别句子中不同查询/问题的算法?

时间:2014-10-15 13:35:34

标签: machine-learning nlp stanford-nlp text-mining

我想在句子中识别不同的查询。

赞 - Who is Bill Gates and where he was born?Who is Bill Gates, where he was born?包含两个查询

  1. 比尔盖茨是谁?
  2. 比尔盖茨出生的地方
  3. 我参与了Coreference解决方案,因此我可以确定he指向Bill Gates所以解决的句子是“比尔盖茨出生的比尔盖茨是谁”

    同样聪明

    MGandhi is good guys, Where he was born?
    single query
    who is MGandhi and where was he born?
    2 queries
    who is MGandhi, where he was born and died?
    3 queries
    India won world cup against Australia, when?
    1 query (when India won WC against Auz)
    

    我可以执行Coreference解析但不知道如何区分其中的查询。 这该怎么做?

    我检查了各种句子解析器,但由于这是纯粹的nlp内容,句子解析器无法识别它。

    我试图找到“句子消歧”,比如“词义消歧”,但没有像这样存在。

    任何帮助或建议都会非常明显。

1 个答案:

答案 0 :(得分:2)

自然语言充满了例外。特别是在英语中,人们常说除了规则之外还有更多例外。因此,几乎不可能获得一个完全准确的解决方案每次,但使用解析器,您可以获得相当好的性能。

我喜欢使用Berkeley parser来执行此类任务。他们的online demo包括解析树的图形表示,在尝试制定启发式时非常有用。

例如,考虑问题" 谁是比尔盖茨,他出生在哪里?"。解析树看起来像这样:

parse-tree

显然,您可以在中心连接(CC)节点拆分树以提取单个查询。通常,如果解析的句子很简单(只有一个查询)或复合(通过查看连接节点可以拆分各个查询,如上所述),这将很容易。

你问题中另一个更复杂的例子有三个查询,例如" 谁是甘地,他在哪里工作和生活?"。解析树:

parse-tree

同样,你可以看到分裂" 谁是甘地"的连接节点。和"他在哪里工作和生活*"。但是,解析不会将第二个查询拆分为两个,就像您理想的那样。这就把我们带到了你想要做的最艰难的部分:处理(当然,计算)所谓的right node raising。这是一种语言结构,其中公共部分共享

例如,考虑问题" 他何时以及如何遭遇挫折?"。真正要求的是(a)他什么时候遭遇挫折?(b)他是如何遭遇挫折的?仅通过解析树无法解决右节点引发问题。事实上,它是计算语言学中较难解决的问题之一,属于核心学术研究领域。