【问题标题】:JLanguageTool do not ignore digits in wordsJLanguageTool 不会忽略单词中的数字
【发布时间】:2023-03-05 16:19:01
【问题描述】:

我正在使用带有德语 (de-DE) 的 JLanguageTool 进行拼写检查,并注意到数字似乎被用作单词分隔符(就像空格一样?)。例如,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)

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

【问题讨论】:

    标签: java numbers tokenize digits languagetool


    【解决方案1】:

    是的,你是对的:LanguageTool 在德语中将数字视为单词分隔符。

    要修改此行为,您必须更改源代码并将this line in 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-25
      • 2021-04-05
      • 2020-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      相关资源
      最近更新 更多