Java 如何复制代词(代词)及其先行词

Java 如何复制代词(代词)及其先行词,java,nlp,stanford-nlp,Java,Nlp,Stanford Nlp,鉴于以下案文: 病人:很好,这部电影很吸引人。它被称为第一天使,是关于林肯的——我想它是根据一本书改编的。但那是关于林肯八岁时的事。整部电影都发生在那时。在这段时间里,我的意思是他大概有八九岁,他的母亲死于某种疾病,而且,嗯,他有一个表亲,表亲的父母也去世了。所以表哥和他住在一起。表哥的声音,表哥讲了这个故事。你很少听到林肯讲话。然后,嗯,你了解了他和他父亲的关系,他父亲离开他们去找了一个妻子,带着一个妻子和几个孩子回来了。” 我需要复制“他的,她,我的,他们的…”的提及及其实际的前因后果。当我

鉴于以下案文:

病人:很好,这部电影很吸引人。它被称为第一天使,是关于林肯的——我想它是根据一本书改编的。但那是关于林肯八岁时的事。整部电影都发生在那时。在这段时间里,我的意思是他大概有八九岁,他的母亲死于某种疾病,而且,嗯,他有一个表亲,表亲的父母也去世了。所以表哥和他住在一起。表哥的声音,表哥讲了这个故事。你很少听到林肯讲话。然后,嗯,你了解了他和他父亲的关系,他父亲离开他们去找了一个妻子,带着一个妻子和几个孩子回来了。”

我需要复制“他的,她,我的,他们的…”的提及及其实际的前因后果。当我使用Stanford coref.resolution时,它给了我很多没有用的提及,比如“他的父亲”对“他的父亲”,甚至“他的父亲”对“他的”。我需要文本中有“林肯的父亲”或“林肯的母亲”。我有提及的列表: [619, 625]=[647, 653], [565, 575]=[588, 598], [565, 575]=[588, 591].....
我可以用一种丑陋的编程方式来解决这个问题,但我想知道是否有任何方法或途径可以清除额外的提及,或者有一种方法可以帮助将实际的名字替换他们的代词?

据我所知,CoreNLP中没有一种干净的方式可以用其规范的提及来替换代词。这至少部分是出于设计:这是在一般情况下,这种替换会产生一系列令人讨厌的细微差别:例如,“原始文本”注释是否应该更改?字符偏移是否应该更改?是否可以恢复原始句子


当我们需要这个时,我们附加了一个附加注释(称为,例如,
AntecedentAnotation
)指向共同引用链中提及的标记,指向规范提及。您可以使用该函数获取规范提及。

是的,我有一个偏移量更改的解决方案。您可以根据提及偏移量进行降序排序,并从文本的尾部向头部进行更改。这样,任何更改都不会影响pr以前的偏移量。我使用代表性提及方法,但它仍然给我带来一些混乱…@Christopher Manning我希望你对这个问题有一个答案…你的回答将是最值得赞赏的问题是什么?你是建议我们在CoreNLP中编写一个函数来实现这一点,还是你在问你评论中的方法是否有效?@Gab或者Angeli是的,我想知道在我的评论中建议的方法是否合理?该方法似乎合理。字符偏移量不会代表原始文本中的实际字符偏移量,你应该小心克隆有问题的CoreLabels,但听起来应该可行。真的,我建议在al之后这样做l注释员已经运行,否则您将冒发生奇怪事情的风险。