Ich habe gerade ein Programm implementiert, das den Stanford POS-Tagger in Java verwendet.
Ich habe eine Eingabedatei von einigen KB Größe verwendet, die aus ein paar hundert Wörtern besteht. Ich habe sogar die Größe des Heapspeichers auf 600 MB gesetzt.
Aber es ist immer noch langsam und manchmal läuft der Heapspeicher aus. Wie kann ich die Ausführungsgeschwindigkeit und die Speicherleistung erhöhen? Ich würde gerne ein paar MB als Eingabe verwenden können.
%Vor% Der wichtigste erste Ratschlag lautet, den wsj-0-18-left3words-distsim.tagger
(oder besser, den english-left3words-distsim.tagger
in neueren Versionen, für allgemeinen Text) anstelle von wsj-0-18-bidirectional-distsim.tagger
zu verwenden. Während die Tagging-Leistung des bidirektionalen Taggers fraktional besser ist, ist sie etwa 6 mal langsamer und benötigt etwa doppelt so viel Speicher. Eine Zahl FWIW: Auf einem MacBook Pro 2012, wenn genug Text zum "Aufwärmen" gegeben wurde, markiert der left3words
Tagger Text mit ungefähr 35000 Wörtern pro Sekunde.
Der andere Ratschlag zur Speicherbenutzung ist, dass Sie, wenn Sie eine große Menge an Text haben, diese in tagString()
in Brocken vernünftiger Größe übergeben, nicht alle als ein riesiger String, da dieser ganze String sein wird Tokenized sofort, die Speicheranforderungen hinzufügen.
Tags und Links java nlp stanford-nlp pos-tagger