2016-04-26 3 views
0

Angenommen, ich habe einen semantischen Graph g, und dann bekomme ich seine Darstellung durch die folgenden zwei Strings:Wie erstellt man ein SemanticGraph-Objekt aus einem String mit CoreNLP?

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

Nehmen wir an, diese Strings jetzt das einzige, was ich habe (das Objekt g ist nicht mehr sichtbar). Ist es möglich, ein anderes Objekt g2 zu erstellen, das die Zeichenfolgen sg oder dp in irgendeiner Weise verwenden kann, um dasselbe Objekt zu erhalten? Im Idealfall würde es toll, wenn CoreNLP einen Konstruktor für diese zur Verfügung gestellt, zum Beispiel:

SemanticGraph g2 = new SemanticGraph(sg); 

oder

SemanticGraph g2 = new SemanticGraph(dp); 

Irgendwelche Ideen, wie dies in einer effizienten Weise zu tun?

Antwort

1

Können Sie mehr Kontext für Ihr Problem bereitstellen?

Möchten Sie das Diagramm auf Festplatte speichern und später laden und dann den SemanticGraph neu erstellen? Es wäre wahrscheinlich besser, den ProtobufAnnotationSerializer für diesen Anwendungsfall zu verwenden.

Es würde helfen zu verstehen, warum Sie den Zugriff auf den SemanticGraph verlieren.

Wenn Sie wirklich von einer String-Darstellung einer Kanten-Liste zu einem SemanticGraph gehen wollten würden Sie die Token aus dem String wieder aufbauen müssen, bauen SemanticGraphEdges, und dann könnte man SemanticGraphFactory.makeFromEdges verwenden, um eine SemanticGraph von a zu bauen Liste der Kanten.

Klassen, die Sie wollen, betrachten:

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

Danke für die Antwort, obwohl es kein expliziter Code ist, ist diese Richtung auf den Punkt, so dass ich die Antwort zu akzeptieren. Prost! – Belphegor