我正在嘗試解析某些文本以查找對特定項目的所有引用。因此,例如,如果我的項目是The Bridge on the River Kwai
,並且我將該文本傳遞給它,我希望它找到所有我以粗體顯示的實例。在StanfordNLP中查找對提供的名詞的所有引用
上桂河大橋是由大衛執導1957年英美戰爭史詩電影 精益和主演威廉·霍爾登,傑克·霍金斯,亞歷克·吉尼斯 和早川雪洲。 電影是一部小說,但 借鑑了1942年至1943年的緬甸鐵路建設歷史背景爲 。 電影在錫蘭(現在的斯里蘭卡)拍攝。 電影中的橋接近Kitulgala。
到目前爲止,我的嘗試是通過所有附加到每個CorefChain的提及,並通過那些尋找我的目標字符串循環。如果我找到目標字符串,則添加整個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;
}
}
}
我然後依次通過CorefChains的該第二列表中,重新檢索提到的每個鏈,並通過它們的步驟。在那個循環中,我會顯示哪些句子可能會提到我的項目。
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);
}
}
它找到了我的一些引用,但沒有那麼多,並且產生了很多誤報。可能完全顯然,從閱讀本文來看,我並不真正瞭解NLP的第一件事情 - 我是否完全錯誤地進行了這種研究?有沒有一個斯坦福NLP解析器,已經可以做一些我所追求的?我應該以某種方式訓練模型嗎?
我應該在這裏指出,「這不可能輕易完成」將被接受爲一個有效的答案,如果這就是答案。 :) –