基本上我正在编写一个 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."
我的猜测是这几乎是不可能的,因为这对人类来说有时甚至很难。