基本上我正在编写一个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."
我猜这是非常不可能的,因为这对人类来说有时甚至很难。
答案 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算法,在SLP或this question中的某处描述。