jWordSplitter MultiThreading

Hi,

wir haben ein paar (Unit)Tests gemacht, wobei mehrere Threads JLanguageTool nutzen, jeweils mit einer eigenen Instanz aber mit “shared” Language Klassen (wie in den API Docs beschrieben). Dabei ist beim Profiling aufgefallen, dass der jWordSplitter sehr oft blockt, wenn man DE als Sprache nutzt.

Jetzt habe ich auf der Projektwebsite folgendes Zitat gefunden: “Je nach Anwendungsfall könnten compound-splitter oder der DictionaryCompoundWordTokenFilter von Lucene eine Alternative zu jWordSplitter sein.”

Um weiteren Testaufwand und evtl. eigene Implementierung zu vermeiden, habt ihr Erfahrungswerte in Richtung MultiThreading? Oder genrell zu Thema Perfomance und WordSplitting. Ziel ist es weniger Blocks zu haben, da wir das LanguageTool in einem Servlet wrappen wollen, um in einer WebApp zu nutzen, wobei es darum geht mögliche Latenzen zu vermeiden.

Deutsch zu checken dauert unabhängig von der Textlänge in unserem Szenario 190ms (in Vergleich dazu andere Sprachen im unteren zweistelligen ms-Bereich). Deaktiviere ich Komposita-Checks, die ja soweit ich verstanden habe exzessiv den jWordSplitter nutzen müssen, scheint auch Deutsch deutlich performanter.

Gruß

Jens

Hallo Jens,

ich kann das Problem nachvollziehen: die GermanSpellerRule legt jedes Mal sogar zwei jwordsplitter an. Besser wäre es, wenn die jwordsplitter, wie Tagger etc., in der Klasse German bereitgehalten würden. Ich schreibe das mal auf meine TODO-Liste, schneller geht es aber, wenn Du einen Patch schickst…

Grüße

Daniel

Sobald wir zum Patchen und testen kommen, werden wir das getreu dem OpenSource Gedanken teilen :slight_smile:

Hallo Jens, seid Ihr an dem Thema dran bzw. habt Ihr einen Zeitplan? In ca. 4 Wochen ist Feature-Freeze für das nächste Release, und es wäre gut, wenn wir das Problem bis dahin beheben könnten.

Hallo,

ja wir sind da dran. Ich kann dir morgen mehr sagen, Zeit technisch.

Gruß

Hallo Daniel,

sorry für die Verzögerung, ich schicke dir eine Nachricht hierzu gleich.

Gruß

Jens

Performance should be better now. It’s still not perfect, see Re-use loaded rules · Issue #14 · languagetool-org/languagetool · GitHub