在斯坦福解析器的文档中,给出了以下例句:
官员们今天表示,印度有史以来最强的降雨导致孟买金融中心关闭,通讯线路中断,机场关闭,数千人被迫在办公室睡觉或晚上步行回家。
这将产生解析树:
[ROOT [S [S [NP [NP [DT] [JJS 最强] [NN 雨]] [VP [ADVP [RB 曾经]] [VBN 记录][PP [IN] [NP [NNP 印度]]] ] ] [VP [VP [VBD 关闭] [PRT [RP down] ] [NP [NP [DT] [JJ 金融] [NN hub] ] [PP [IN] [NP [NNP Mumbai] ] ] ] [, ,] [VP [VBD 捕捉] [NP [NN 通信] [NNS 线路] ] [, ,] [VP [VBD 关闭] [NP [NNS 机场]] ] [CC 和] [VP [VBD 强制] [NP [NP [NNS 数千] ] [PP [IN 的] [NP [NNS 人] ] ] [S [VP [TO 到] [VP [VP [VB 睡眠] [PP [IN] [NP [PRP $他们] [NNS 办公室] ] ] [CC or] [VP [VB walk] [NP [NN home] ] [PP [IN during] [NP [DT the] [NN night] ] ] ] ] ] ] ] [, ,] [NP [NNS 官员] ] [VP [VBD 说] [NP-TMP [NN 今天] ] ] [。.] ] ]
(见http://i.imgur.com/mZLBDmh.png)。
什么样的 NLP 工具能够从上述复杂句子示例中输出句子主语和宾语?期望的输出:
sentence_subj_phrase = "the strongest rain ever recorded in India"
sentence_obj_phrase = "the financial hub of Mumbai"
来自 ORIGINAL OP 的帖子(这只是关于他认为不起作用的细节):
在句子中提取主语和宾语的一种简单方法是找到紧接在动词之前和之后的名词短语。然而,在复杂的句子中,有多个动词,因此有多个主语和宾语。可以将这样的复杂句子视为多个句子(使用独立子句的第一部分作为“根”,并将第二部分替换为每个从属子句),但通常第一个子句是最重要的,并且可以被认为是句子的主要“主题”。
做一个简单的 BFS 来找到动词之前的第一个 NP 将导致“官员”成为主语,因为它处于最低深度级别。这没有捕捉到包含主语的第一个子句的直觉。我尝试的一种方法是在第一个“基本” S 节点(即,以 S 节点为根的最低级别子树)中搜索 NP,但在这种情况下,它将捕获以 S 3为根的节点。