Login
Newsletter
Werbung

Do, 6. Dezember 2012, 15:00

LanguageTool-Tutorial – Teil II: Komplexere XML-Regeln

Von gulp21

Beheben von Fehlalarmen

Jetzt gibt es nur noch wenige Fehlalarme, z.B. im Satz »Nachdem sich jedes Teilchen in einem Zustand, der nicht gut war, befunden hatte, ging es weiter«“. Hier ist das »Zustand« das Problem, da es trotz Großschreibung als Verb markiert ist, weil es ja theoretisch am Satzanfang als Verb benutzt werden kann. Das Problem kann umgangen werden, indem explizit verlangt wird, dass das Verb mit einem kleingeschriebenen Buchstaben anfangen soll (regulärer Ausdruck [a-zäüö].*).

<pattern case_sensitive="yes">
    <token skip="-1" regexp="yes">[Nn]achdem</token>
    <marker>
        <token postag_regexp="yes" postag="VER:.*:PRT:.*" regexp="yes">[a-zäüö].*<exception postag_regexp="yes" postag=".*AUX.*"/></token>
    </marker>
    <token>,</token>
</pattern>

Damit der reguläre Ausdruck den gewünschten Effekt hat, wird in der ersten Zeile die Unterscheidung zwischen Groß- und Kleinschreibung aktiviert. Außerdem muss im ersten Token nun der reguläre Ausdruck [Nn]achdem verwendet werden, damit auch großgeschriebene »Nachdem«s bei der Prüfung berücksichtigt werden.

Ein weiteres Problem für die Regel sind verschachtelte Sätze wie »Nachdem er, wie er sagte, zu Hause angekommen war, aß er etwas«. Da das Auffinden eines Fehlers in solchen Konstruktionen mit einfachen Mitteln nicht möglich ist (die deutsche Sprache ermöglicht sehr komplexe Satzgefüge), soll LanguageTool alle Sätze, bei denen zwischen »nachdem« und Verb ein Komma steht, ignorieren. Dies ist wieder über eine Ausnahme möglich:

<token skip="-1" regexp="yes">[Nn]achdem<exception scope="next">,</exception></token>

Um LanguageTool mitzuteilen, dass sich die Ausnahme auf die Tokens zwischen Token eins und zwei bezieht, wird scope="next" verwendet.

Die nun gut funktionierende Regel sieht vollständig so aus:

<rule id="NACHDEM_PRAETERITUM" name="Grammatik: 'nachdem' mit Präteritum">
    <pattern case_sensitive="yes">
        <token skip="-1" regexp="yes">[Nn]achdem<exception scope="next">,</exception></token>
        <marker>
            <token postag_regexp="yes" postag="VER:.*:PRT:.*" regexp="yes">[a-zäüö].*<exception postag_regexp="yes" postag=".*AUX.*"/></token>
        </marker>
        <token>,</token>
    </pattern>
    <message>Die Subjunktion 'nachdem' drückt standardsprachlich Vorzeitigkeit aus und kann daher nicht mit dem Präteritum verwendet werden. Verwenden Sie das Perfekt (Präsens im Hauptsatz) oder Plusquamperfekt (Präteritum im Hauptsatz) oder die Subjunktion 'als' zum Ausdrücken von Gleichzeitigkeit.</message>
    <short>'Nachdem' kann standardsprachlich nicht mit dem Präteritum verwendet werden. Verwenden Sie Perfekt bzw. Plusquamperfekt.</short>
    <example type="correct">Nachdem der Brief <marker>gekommen war</marker>, ging ich nach Hause.</example>
    <example type="incorrect">Nachdem der Brief <marker>kam</marker>, ging ich nach Hause.</example>
    <example type="correct">Nachdem er, wie er <marker>sagte</marker>, zu Hause angekommen war, aß er etwas.</example>
</rule></div>

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung