在StanfordNLP中查找对所提供名词的所有引用

在StanfordNLP中查找对所提供名词的所有引用,nlp,stanford-nlp,Nlp,Stanford Nlp,我试图解析一些文本以查找对特定项的所有引用。因此,例如,如果我的项目是葵河上的桥,我通过了这个文本,我希望它能找到我用粗体显示的所有实例 桂河大桥是一部1957年英美史诗战争电影 导演大卫·莱恩,主演威廉·霍顿、杰克·霍金斯、亚历克 《吉尼斯世界纪录大全》和《早川芝苏》“他” 及 “笔记本电脑”->“它” 共指是一个活跃的研究领域,即使是最好的系统也只能在一般文本上产生60.0左右的F1,这意味着它经常会出错。我应该在此指出,“这真的不容易做到”将被视为一个有效的答案,如果答案是这样的话。:)非

我试图解析一些文本以查找对特定项的所有引用。因此,例如,如果我的项目是葵河上的桥,我通过了这个文本,我希望它能找到我用粗体显示的所有实例

桂河大桥是一部1957年英美史诗战争电影 导演大卫·莱恩,主演威廉·霍顿、杰克·霍金斯、亚历克 《吉尼斯世界纪录大全》和《早川芝苏》<这部电影是一部虚构的作品,但是 借用1942-1943年缅甸铁路的建设,用于 历史背景这部电影是在锡兰(现在的斯里兰卡)拍摄的。 电影中的桥在基图格拉附近

到目前为止,我一直在尝试遍历每个核心链上的所有提及,并循环遍历那些寻找我的目标字符串的内容。如果我找到目标字符串,我将添加整个CorefChain,因为我认为这意味着该CorefChain中的其他项也引用相同的内容

List<CorefChain> gotRefs = new ArrayList<CorefChain>();
String pQuery = "The Bridge on the River Kwai";

for (CorefChain cc : document.get(CorefCoreAnnotations.CorefChainAnnotation.class).values()) {
    List<CorefChain.CorefMention> corefMentions = cc.getMentionsInTextualOrder();
    boolean addedChain = false;
    for (CorefChain.CorefMention cm : corefMentions) {
        if ((!addedChain) && 
                (pQuery.equals(cm.mentionSpan))) {
            gotRefs.add(cc);
            addedChain = true;
        }
    }
}
List gotRefs=new ArrayList();
String pQuery=“桂河上的桥”;
for(CorefChain cc:document.get(CorefCoreAnnotations.CorefChainAnnotation.class).values()){
List corefments=cc.getReferencesIntextualorder();
布尔加法链=假;
用于(核心链。核心规则cm:核心规则){
如果(!addedChain)和
(pQuery.equals(cm.span))){
gotRefs.add(cc);
addedChain=true;
}
}
}
然后,我循环浏览第二个核心链列表,重新检索每个链的提及,并逐步浏览它们。在这个循环中,我展示了哪些句子可能在句子中提到我的项目

for (CorefChain gr : gotRefs) {
    List<CorefChain.CorefMention> corefMentionsUsing = gr.getMentionsInTextualOrder();
    for (CorefChain.CorefMention cm : corefMentionsUsing) {
        //System.out.println("Got reference to " + cm.mentionSpan + " in sentence #" + cm.sentNum);
    }
}
for(CorefChain gr:gotRefs){
List COREFMATIONSUSING=gr.GetReferencesIntextualorder();
用于(CorefChain.CorefMationCM:CorefMationSusing){
//System.out.println(“在句子#“+cm.sentNum”中获得对“+cm.sinetespan+”的引用);
}
}

它找到了我的一些参考资料,但没有那么多,并且产生了很多误报。从阅读这篇文章可以明显看出,我真的不知道NLP的第一件事——我是不是走错了路?是否有一个StanfordNLP解析器已经完成了我想要的部分工作?我应该以某种方式培训一个模型吗?

我认为您的示例的一个问题是,您正在查找电影标题的引用,而斯坦福CoreNLP不支持识别电影标题、书籍标题等

如果你看这个例子:

“乔买了一台笔记本电脑。他对它很满意。”

您会注意到它连接:

“乔”->“他”

“笔记本电脑”->“它”


共指是一个活跃的研究领域,即使是最好的系统也只能在一般文本上产生60.0左右的F1,这意味着它经常会出错。

我应该在此指出,“这真的不容易做到”将被视为一个有效的答案,如果答案是这样的话。:)非常感谢你!我有没有办法训练它识别这个标题?我不介意它是否认出它是一个人或什么。