假设我有一个语义图g
,然后通过以下两个字符串得到它的表示:
String sg = g.toCompactString();
String dp = g.typedDependencies().toString();
假设这些字符串现在是我唯一拥有的东西(对象g
不再可见)。是否可以创建另一个对象g2
,它可以以某种方式使用字符串sg
或dp
来获取相同的对象?理想情况下,如果CoreNLP为此提供构造函数,那将是很好的,例如:
SemanticGraph g2 = new SemanticGraph(sg);
或
SemanticGraph g2 = new SemanticGraph(dp);
有任何想法如何以有效的方式做到这一点?
答案 0 :(得分:1)
您能为您的问题提供更多背景信息吗?
您是否尝试将图形存储在磁盘上并稍后加载,然后重建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