gpt4 book ai didi

nlp - 是否有一个相当准确的启发式方法来检测英语句子的主语和宾语?

转载 作者:行者123 更新时间:2023-12-01 17:16:25 27 4
gpt4 key购买 nike

我意识到从句子中完美地分离主语名词短语和宾语名词短语是一个开放的研究问题,在这里不容易解释,但是有没有一种聪明的方法可以做到这一点(假设我已经有一个带有词性标记的句子)哪个适用于大多数句子,或者至少适用于相对简单的句子?我知道简单地假设第一个名词短语是主语是一个很好的近似,但是在以介词短语开头的句子中(例如,“Across the Clearing and through the Stream ran the freened deer.”),这是失败的。理想情况下,我想要一些能够识别本例中主题的东西。

作为引用,该示例句子使用斯坦福解析器给出了以下解析树:

[ROOT [S [PP [IN 穿越]] [NP [NP [DT]] [NN 清除]] [CC 和] [NP [IN 穿越]]]] [NP [DT] [NN流]][VP[VBD跑][NP[DT][ADJP[JJ吓坏了]][NNS鹿]]][。 .] ] ]

我目前的策略如下:

  1. 主题:在树上进行 BFS,寻找第一个 NP。

  2. 动词:在树上进行 BFS,寻找第一个 VP。在此子树上,执行 BFS 寻找 VB(D|G|N|P|Z)。

  3. 目标:在上面找到的 VP 子树上执行 BFS,寻找 NP。

对于我的示例,此策略会产生以下结果:SUBJECT:(NP(DT)(NN流)),VERB:(VBD跑),OBJECT:(NP(DT)(ADJP(JJ受惊))(NNS鹿))

如果可能的话,我想修改我的策略,以免在这些情况下失败,并最终在更复杂的情况下失败。

最佳答案

编辑:好的,您正在使用斯坦福解析器。然后解析器会给你结果。例如,如果我在在伦敦,我的 friend 吃了一个大苹果和一个梨。上运行它,我得到:

    (ROOT
(S
(PP (IN In)
(NP (NNP London)))
(, ,)
(NP (PRP$ my) (NN friend))
(VP (VBD ate)
(NP
(NP (DT a) (JJ big) (NN apple))
(CC and)
(NP (DT a) (NN pear))))
(. .)))

那么主语是S下的NP(我的 friend ),宾语是S下的VP下的NP(一个大苹果和一个梨)。实际上是依赖解析:

prep_in(ate-6, London-2)
poss(friend-5, my-4)
nsubj(ate-6, friend-5)
root(ROOT-0, ate-6)
det(apple-9, a-7)
amod(apple-9, big-8)
dobj(ate-6, apple-9)
det(pear-12, a-11)
dobj(ate-6, pear-12)
conj_and(apple-9, pear-12)

告诉你主语( friend )和直接宾语(苹果,梨)的中心词是什么。

显然,解析器并非没有错误,实际上在带有倒装的句子中(主语在动词后面)它会感到困惑:

(ROOT
(S
(PP (IN Across)
(NP
(NP (DT the) (NN clearing))
(CC and)
(NP (IN through))))
(NP (DT the) (NN stream))
(VP (VBD ran)
(NP (DT the)
(ADJP (JJ frightened))
(NNS deer)))
(. .)))

正确的解析是

(ROOT
(S
(PP
(PP (IN Across)
(NP (DT the) (NN clearing)))
(CC and)
(PP (IN through)
(NP (DT the) (NN stream))))
(VP (VBD ran))
(NP (DT the)
(ADJP (JJ frightened))
(NNS deer))
(. .)))

然后您就可以正确地将受惊的鹿识别为主题。

对此该怎么办?您可以尝试通过在更多像这样的句子上重新训练解析器来改进解析器(除了他们训练过的句子之外),但这需要大量工作。或者你可以尝试找出不正确的句子类型,并专注于找出错误。也不容易。您还可以尝试不同的解析器,例如 LinGO project 中使用的解析器。 ,但是使用起来要困难得多(我认为它需要 lisp 或类似的东西)

<小时/>(这是旧答案,在我知道我们有解析器的结果之前)

除了 POS 标记器之外,我还会得到 chunker然后:

  • 主语是第一个(顶级)NP(名词短语)。在你的整个清除句子中,NP将是介词短语(PP)的一部分,所以你不会拿起它;由于存在反转,它仍然会失败。
  • 宾语是紧随有限动词(如果有)的(顶级)NP。

根据分块器的不同,您可能会错过协调的 NP,可能会剥夺 NP 的 PP(得到我的 friend ,而不是我来自纽约的 friend )。

如果您无力运行分块器,只需查找主语/宾语的头部: - N 或主语代词(we,但不是 us),位于有限动词之前(但请记住,有类似 John and me gone to the store< 的句子。 - N 或宾语代词(us 但不是 we),如果有的话。您应该添加一个检查,以确保 NP(N 是其中的一部分)紧跟在动词之后,并且它不是 PP 的一部分)。假设您可以检查动词后紧跟着 (Det) ((Adv) Adj)* N)

您还应该考虑问题(其中主语跟随有限动词,宾语跟随基本动词:Do YOU​​ see THE APPLE?)。您还可以通过要求主语并在动词之后查找它(如果您之前没有找到它)来处理倒装,但这会导致祈使句出现问题(吃鹿!)。不确定是否值得。

显然,稍微不寻常的句子(例如具有无限依赖关系的句子)会让您感到困惑(Kim,Sandy 知道 Chris 信任,其中 Kimtrusts< 的对象)。如果在这种情况下您需要合理的答案,您需要运行一个真正的解析器。

关于nlp - 是否有一个相当准确的启发式方法来检测英语句子的主语和宾语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18968457/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com