如何使用CoreNLP从字符串中创建SemanticGraph对象?

时间:2016-04-26 12:55:44

标签: java nlp stanford-nlp

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

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

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

SemanticGraph g2 = new SemanticGraph(sg);

SemanticGraph g2 = new SemanticGraph(dp);

有任何想法如何以有效的方式做到这一点?

1 个答案:

答案 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