Stanford Parser Multithread-Nutzung

8

Stanford Parser ist jetzt ab der Version 2.0 (02.03.2012) threadsicher ). Ich führe gerade die Befehlszeilenwerkzeuge aus und kann nicht herausfinden, wie man meine mehrfachen Kerne benutzt, indem ich das Programm threaded.

In der Vergangenheit wurde diese Frage mit "Stanford Parser ist nicht Thread-sicher" beantwortet, wie es in den FAQ heißt. Ich hoffe, jemanden zu finden, der erfolgreich die neueste Version eingefädelt hat.

Ich habe versucht, -t flag (-t10 und -tLLP) zu verwenden, da dies alles war, was ich in meinen Suchen finden konnte, aber beide werfen Fehler.

Ein Beispiel für einen Befehl, den ich ausstelle, ist:

%Vor%     
earthmeLon 15.02.2012, 01:10
quelle

1 Antwort

16

Ab Version 2.0.5 können Sie nun einfach mehrere Threads mit der Option -nthreads k verwenden. Zum Beispiel kann Ihr Befehl wie folgt aussehen:

%Vor%

(Versionen der Version 2 vor 2013 hatten keine Möglichkeit, Multithreading über die Befehlszeile zu aktivieren, sondern nur bei Verwendung der API.)

Intern können Sie gleichzeitig so viele Parsing-Threads in einem JVM-Prozess ausführen, wie Sie möchten. Sie können dies tun, indem Sie entweder mehrere LexicalizedParserQuery-Objekte abrufen und verwenden (über die parserQuery() -Methode) oder indem Sie implizit apply(...) oder parseTree(...) von einem LexicalizedParser aufrufen. Die Option -nthreads k erledigt dies für Sie, indem Sie aufeinanderfolgende Sätze mit dem Executor -Framework an verschiedene Parser senden. Sie können auch mehrere LexicalizedParser gleichzeitig erstellen, z. B. zum Parsen verschiedener Sprachen.

Mehrere LexicalizedparserQuery-Objekte teilen dieselbe Grammatik (LexicalizedParser), aber die Einsparungen beim Speicherplatz sind nicht groß, da der größte Teil des Speichers auf die in der Diagrammanalyse verwendeten Übergangsstrukturen verwendet wird. Wenn Sie also viele Parsing-Threads gleichzeitig ausführen, müssen Sie der JVM wie im obigen Beispiel viel Speicher zur Verfügung stellen.

ps. Entschuldigung, ja, einige der Dokumentationen müssen noch aktualisiert werden. Aber -tLPP ist ein Flag zum Spezifizieren sprachspezifischer Ressourcen. Der Stanford-Parser hat keine -t-Flagge.

    
Christopher Manning 15.02.2012, 14:35
quelle