jlanguagetool不忽略单词中的数字

fdbelqdn  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(422)

我正在使用jlanguagetool和德语( de-DE )对于拼写检查,请注意数字似乎用作单词分隔符(就像空格?)。例如 We8lt 不是一个不正确的单词,而是两个拼写错误(一个是 We 一个给我 lt ). 或者举个例子 bis8 根本不作为错误报告。
示例调用(我将其用作java库,但行为是相同的):

$ echo "Hallo We8lt bis8 Test" | java -jar languagetool-commandline.jar -l de-DE -
Expected text language: German (Germany)
Working on STDIN...

1.) Line 1, column 7, Rule ID: GERMAN_SPELLER_RULE prio=-3
Message: Möglicher Tippfehler gefunden.
Suggestion: WE; Der; Den; Des; Dem
Hallo We8lt bis8 Test 
      ^^              

2.) Line 1, column 10, Rule ID: GERMAN_SPELLER_RULE prio=-3
Message: Möglicher Tippfehler gefunden.
Suggestion: LT; als; lag; alt; elf
Hallo We8lt bis8 Test 
         ^^           

Time: 1618ms for 1 sentences (0.6 sentences/sec)

这是一个很大的问题,例如单词和数字之间的空格没有找到。如何使库/工具不将数字视为分词符?谢谢。

mwg9r5ms

mwg9r5ms1#

是的,你说得对:在德语中,languagetool把数字当作分词符。
要修改此行为,您必须更改源代码,并在germanspellerrule.java中从

String pattern = "(" + nonWordPattern.pattern() + "|(?<=[\\d°])-|-(?=\\d+))";

String pattern = ("(" + nonWordPattern.pattern() + "|(?<=[\\d°])-|-(?=\\d+))").replace("{L}", "{L}\\d");

或者,您可以向grammar.xml添加另一条规则,该规则抱怨数字前后缺少空格:

<rule id="RULE" name="rule">
<pattern>
    <token regexp="yes">[a-zäöüß]+\d+[a-zäöüß]*</token>
</pattern>
<message>Fehlt hier ein Leerzeichen?</message>
<example correction=""><marker>P4sswort</marker>.</example>

相关问题