我在C#中使用Stanford-NLP包。我已經能夠編譯和執行這樣一個軟件包,但是在多次輸入中利用coref軟件包困難重重,特別是試圖在先前輸入的第二個輸入中「預先填充」corefs。在多個問題中提及Corefs
在我的例子程序,我在一組通過標準輸入文本的閱讀,並使用有CoreNLP庫通過解析:
props.setProperty("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref, sentiment");
我做了COREF用一個實例:
CorefCoreAnnotations.CorefChainAnnotation coref = new CorefCoreAnnotations.CorefChainAnnotation();
我用這來解析我輸入:
var annotation = new Annotation(text);
pipeline.annotate(annotation);
我能得到corefs出來的代碼的:
Map graph = (Map)annotation.get(coref.getClass());
Console.WriteLine(graph);
我無法工作的是利用先前輸入的結果作爲下一個輸入的coref。
例如:
Input 1: Jane went to the store. She was purchasing bread.
Coref Result: She -> Jane
Input 2: She also bought apples.
Coref Result: null
我想擁有的是輸入「召回」以前corefs和「知道」的「她」是簡。
雖然我可以將字符串連接在一起,但我正在尋找一個交互過程。
我試圖做到這一點的原因是允許用戶輸入基於以前的輸入是上下文。如果有其他工具可以做到這一點,那就沒問題了。我試圖將此工具用作「對話」,軟件代理會響應用戶輸入。要做到這一點,它需要回憶談話的參考和核心內容,以及衡量整個對話的總體情緒。 因此,由於這是我知道的唯一可以解析和推斷包括corefs在內的情緒的工具,因此我試圖讓它與「以前的圖形」一起工作並獲得我的corefs。 – 2014-10-16 13:50:13
我仍然不明白爲什麼你不能使用「以前的文本」,而不是代表它的「上一個圖」。我不明白這將如何減少交互性(性能是我能想到的唯一問題)。你能給出一個更具體的例子,你想要你的工具的行爲?演示代理和用戶之間的這種對話場景。說明爲什麼連接文本會降低交互性。 – 2014-10-23 09:12:12