gpt4 book ai didi

c# - 在多个问题中引用 Corefs

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:20 27 4
gpt4 key购买 nike

我在 C# 中使用 Stanford-NLP 包。我已经能够编译和执行这样的包,但是在跨多个输入利用 coref 包方面遇到了困难,特别是尝试在先前输入的第二个输入上“预填充”coref。

在我的示例程序中,我通过标准输入读取了一组文本,并让 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 并“知道”“她”是简。

虽然我可以将字符串连接在一起,但我正在寻找一个交互式过程。

最佳答案

在我看来,连接字符串是唯一的方法。这个工具(StanfordCoreNLP)的一般工作方式是,你给它输入文本,然后你收到一个图形作为输出。因此,假设文本 A 生成图形 A。您要做的是将文本 B 和图形 A 作为生成图形 B 的输入,但只能输入文本。这与将文本 A+B 作为输入来生成图形 B 有何不同?

具体来说,我发现让管道工作的唯一方法是在管道的注释函数中提供注释输入(就像您所做的那样)。以下是该工具的 java 文档中对 Annotation 的描述:

An annotation representing a span of text in a document. Basically just an implementation of CoreMap that knows about text. You're meant to use the annotation keys in CoreAnnotations for common cases, but can define bespoke ones for unusual annotations.

如果可以的话,使用您示例中的变量:

pipeline.annotate(annotation,graph);

然后您可以考虑以前的图表。但为什么要添加该图表而不是其各自的文本?

我可能在这里遗漏了一些东西。我知道这不是您要找的答案。坦率地说,我想把它留作评论(但不能,因为有赏金)。尽管我目前在 Java 中使用 StanfordCoreNLP,但对于共同引用以外的事情,很可能有更好(或实际)的答案,以及更有资格给出它的人。

关于c# - 在多个问题中引用 Corefs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26105714/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com