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

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

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

Like - 谁是比尔·盖茨,他出生在哪里?谁是比尔·盖茨,他出生在哪里? 包含两个查询

  1. 比尔·盖茨是谁?
  2. 比尔盖茨出生的地方

我从事共指解析工作,因此我可以识别出指向比尔盖茨,因此解析的句子是“谁是比尔盖茨,比尔盖茨出生的地方”

同样

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)

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

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

我试图找到像“词义消歧”一样的“句子消歧”,但不存在这样的东西。

任何帮助或建议都将非常感激。

最佳答案

自然语言充满了异常(exception)。尤其是在英语中,人们常说异常(exception)多于规则。因此,几乎不可能获得每次都有效的完全准确的解决方案,但是使用解析器,您可以获得相当好的性能。

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

例如,考虑以下问题“比尔·盖茨是谁,他在哪里出生?”。解析树如下所示:

parse-tree

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

您问题中的另一个更复杂的示例包含三个查询,例如“谁是甘地,他在哪里工作和生活?”。解析树:

parse-tree

您再次可以看到连接节点将“谁是甘地”和“他在哪里工作和生活*”分开。但是,解析不会将第二个查询分成两个,正如您理想的那样。这将我们带到了您正在尝试做的事情中最困难的部分:处理(当然,通过计算)所谓的 right node raising 。这是一种语言结构,其中公共(public)部分共享

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

关于machine-learning - 是否存在识别句子中不同查询/问题的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26384001/

相关文章:

pandas - 使用交叉验证分数获得零分

python - 在sklearn中对cross_val_score使用LeaveOneGroupOut策略

nlp - 安装YamCha包时出错

nlp - spaCy Tokenizer LEMMA 和 ORTH 异常不起作用

python - NER 标记器的替代品用于长的、异构的短语?

java - 如何从 Stanford Core NLP 包中获取短语级情绪

machine-learning - 查找两个短句子或文章之间语义相似性的最新方法(在概念级别)

r - 最近邻图中第 k 个邻居的奇怪距离

java - 斯坦福 CoreNLP (Java) 中的浅解析与深度解析

java - 如何运行StanfordCoreNlpDemo.java