1

基本上我正在编写一个 Java 模块,它应该采用英文文本并切换代词的性别。例如,如果你给它“她把盒子放在桌子上”,它会给你回“他把盒子放在桌子上”。如果你给它“他的脚受伤”,它会给你回“她的脚受伤”。

这很容易,除了“她的”这个词。有时他=她,有时他=她。

我一直在研究 NLP,对此我几乎一无所知,并且我尝试了 OpenNLP,但它让我失望了(由于许可问题,我无法使用 Standford NLP)。POS 标记器和 Chunker 会与她/她的混淆,解析器也是如此。例如:

盒子是他的。

(TOP (S (NP (DT The) (NN box)) (VP (VBD was) (NP (PRP$ his))) (. .)))

盒子是她的。

(TOP (S (NP (DT The) (NN box)) (VP (VBD was) (ADJP (JJ hers))) (. .)))

盒子是他的盒子。

(TOP (S (NP (DT The) (NN box)) (VP (VBD was) (NP (PRP$ his) (NN box))) (. .)))

那个盒子就是她的盒子。

(TOP (S (NP (DT The) (NN box)) (VP (VBD was) (NP (PRP$ her) (NN box))) (. .)))

它正确地将“hers”识别为形容词短语,但是当以完全相同的方式在谓词中使用“his”时,它错误地将其识别为所有格代词,就好像它在修饰某些名词一样,如第三个和第四个示例..

这只是训练集的问题吗?是否有可能创建我自己的训练集来做得更好,基本上是一个只有他/她的大量句子的集?

如果您能告诉我是否有任何方法可以使用 NLP 来确定代词的先行词,则可以加分。例如:

"Wanda gave a watch to a girl named Lucy.  She loved it."

我的猜测是这几乎是不可能的,因为这对人类来说有时甚至很难。

4

1 回答 1

2

从示例来看,您可以尝试替换hishers而不是her每当它出现为节点的唯一子节点时,据我对英语(不是母语人士)的了解,这对应于“她的”、“我的”等词的使用,等等

IE

# NP with one child
(NP (PRP$ his))  ==>  (ADJP (JJ hers))

# NP with two children, "his" and "box"
(NP (PRP$ his) (NN box))  ==>  (NP (PRP$ her) (NN box))

(我已经很久没有对语法树做过任何事情了,但是在第一个示例中,NP标签似乎是解析器的错误。)

如果您能告诉我是否有任何方法可以使用 NLP 来确定代词的先行词,则可以加分。

这被称为代词解析,或更一般的照应解析,并且存在大量关于这个问题的文献。此任务的基线算法称为 Hobbs 算法,并在SLP此问题中的某处进行了描述。

于 2012-08-02T12:41:10.273 回答