2016-06-13 12 views
1

Bis jetzt hatte ich Ruta-Skripte von einem Maven-Projekt ausgeführt, indem ich AnalysisEngine und CAS erstellt und die Engine verarbeitet habe. Um dies zu tun, hatte ich alle Skripte und Deskriptor-Dateien (Engine & TypeSystem) in den Ordner scr/main/resources des Maven-Projekts gestellt.Wie man externe Ruta-Skripte von einem Maven-Projekt ausführt, ohne das Skript oder sein Typsystem in den Klassenpfad zu stellen?

Jetzt möchte ich die Skripte und TypeSystem-Dateien in einem externen Pfad und übergeben Sie den Pfad dynamisch zu meinem Java-Code, der die Skripts ausführt. Ist es möglich, es zu tun? Wenn das so ist, wie ?

Ich legte einfach die Dateien (Skript & Deskriptor) in einen externen Pfad und übergab den neuen Pfad, um die AnalysisEngine wie unten zu instanziieren;

final AnalysisEngine engine = AnalysisEngineFactory.createEngine("home/admin/Desktop/TEST_ScriptFolder/com/textjuicer/ruta/date/Dazzle_ChapRef_UpdatedEngine"); 

Fehler

org.apache.uima.util.InvalidXMLException: Ein Import nicht aufgelöst werden konnte. Keine Datei mit dem Namen "home/admin/Desktop/TEST_ScriptFolder/com/textjuicer/ruta/date/Dazzle_ChapRef_UpdatedEngine.xml" wurde im Klassenpfad oder Datenpfad gefunden. (Deskriptor:) bei org.apache.uima.resource.metadata.impl.Import_impl.findAbsoluteUrl (Import_impl.java:117) bei org.apache.uima.fit.factory.AnalysisEngineFactory.createEngineDescription (AnalysisEngineFactory.java:869) bei org.apache.uima.fit.factory.AnalysisEngineFactory.createEngine (AnalysisEngineFactory.java:107) bei com.textjuicer.ruta.date.ArtifactAnnotator.getAllAnnotations (ArtifactAnnotator.java:93) bei ApplyingStyle.XmiTransformer.parseXMI (XmiTransformer.java:33) bei ApplyingStyle.ApplyStyle.applyStyleOnDocx (ApplyStyle.java:76)

Antwort

1

Es gibt zwei Schichten:

  1. Die RutaEngine braucht die Skripte/resources/Deskriptoren Einfuhren von Deskriptoren
  2. UIMA muss in der Lage zu finden

Die Ressourcensuche in Ruta hat zwei Stufen zu lösen, sucht es für sie in den absoluten Pfade angegeben in den Konfigurationsparametern. Wenn die Ressource nicht gefunden wird, sucht sie im Klassenpfad nach dieser Ressource. Sie müssen also die Konfigurationsparameter festlegen: Skripte befinden sich in scriptPaths, Deskriptoren befinden sich in descriptorPaths und Wortlisten befinden sich in resourcePaths. Weitere Informationen finden Sie unter documentation.

Die Probleme mit den Importen in Deskriptoren können entweder durch Setzen des Datenpfades im UIMA ResourceManager oder durch Ändern des Imports in "location" anstelle von "name" gelöst werden. Der Datenpfad kann als Ersatz für den Klassenpfad verwendet werden. Die Ruta-Beschreibungen verwenden Import nach Ort, wenn sie im Ruta-Maven-Plugin angegeben wurden.

HAFTUNGSAUSSCHLUSS: Ich bin ein Entwickler von UIMA Ruta

+0

Dank! Ist es möglich, eine Variable (Pfad) zu setzen anstatt den Pfad in der Engine-Datei hart zu codieren? Weil ich den Pfad dynamisch (java) holen und ihn an die Engine-Datei übergeben möchte. Gibt es eine Möglichkeit, es direkt zu machen? –

+0

Oder ... ist es möglich, den aktuellen Pfad innerhalb der Engine-Datei abzurufen und denselben wie den Scriptpfad, den Ressourcenpfad und den Deskriptorpfad festzulegen? –

+0

Sie können die Analyse-Engine (Ändern der Parameterwerte) immer programmgesteuert neu konfigurieren.Wenn die Analyse-Engine-Beschreibung auf einem XML-Deskriptor basiert, speichert sie auch ihre ursprüngliche URL. –