使用NLP切换性别

时间:2012-08-02 12:37:00

标签: java nlp opennlp

基本上我正在编写一个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."

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

1 个答案:

答案 0 :(得分:2)

根据示例,您可以尝试将his替换为hers而不是her,只要它是节点的唯一子节点,这是我对英语的了解(不是母语人士)对应于“hers”,“mine”等词语的使用

# 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算法,在SLPthis question中的某处描述。