假设我有一个语义图g,然后通过以下两个字符串获取它的表示形式:

String sg = g.toCompactString();
String dp = g.typedDependencies().toString();


假设这些字符串现在是我唯一拥有的(对象g不再可见)。是否可以创建另一个对象g2,该对象可以某种方式使用字符串sgdp以获得同一对象?理想情况下,如果CoreNLP为此提供了一个构造函数,那就太好了,例如:

SemanticGraph g2 = new SemanticGraph(sg);


要么

SemanticGraph g2 = new SemanticGraph(dp);


任何想法如何有效地做到这一点?

最佳答案

您能否为您的问题提供更多背景信息?

您是否打算将图形存储在磁盘上并稍后加载,然后重新构建SemanticGraph?对于该用例,最好使用ProtobufAnnotationSerializer。

这将有助于您了解为什么无法访问SemanticGraph。

如果您真的想从边缘列表的String表示形式转到SemanticGraph,则必须从String重建标记,构建SemanticGraphEdges,然后可以使用SemanticGraphFactory.makeFromEdges从边缘列表构建SemanticGraph。

您要查看的课程:

edu.stanford.nlp.ling.IndexedWord
edu.stanford.nlp.semgraph.SemanticGraphEdge
edu.stanford.nlp.semgraph.SemanticGraphFactory

09-06 23:31