假设我有一个语义图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);
任何想法如何有效地做到这一点?
最佳答案
您能否为您的问题提供更多背景信息?
您是否打算将图形存储在磁盘上并稍后加载,然后重新构建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