Class VerbAgreementRule


  • public class VerbAgreementRule
    extends org.languagetool.rules.TextLevelRule
    Simple agreement checker for German verbs and subject. Checks agreement in:
    • VER:1:SIN w/o ich: e.g. "Max bin da." (incorrect) [same for VER:2:SIN w/o du, VER:1:PLU w/o wir]
    • ich + VER:[123]:.* (not VER:1:SIN): e.g. "ich bist" (incorrect) [same for du, er, wir]
    TODO:
    • wenn nur ein mögliches finites Verb -> das nehmen (Max machen das.)
    • Sie (i>1)
    • bei ich/du/er/wir sofort prüfen, damit alle vorkommen geprüft werden (Ich geht jetzt nach Hause und dort gehe ich sofort unter die Dusche.) [aber: isNear]
    • Alle Verbvorkommen merken (Er präsentieren wollte und Video hätte keine Pläne.)
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.util.List<java.util.List<org.languagetool.rules.patterns.PatternToken>> ANTI_PATTERNS  
      private static java.util.Set<java.lang.String> BIN_IGNORE  
      private static java.util.Set<java.lang.String> CONJUNCTIONS  
      private German language  
      private static java.util.Set<java.lang.String> QUOTATION_MARKS  
      • Fields inherited from class org.languagetool.rules.Rule

        messages
    • Constructor Summary

      Constructors 
      Constructor Description
      VerbAgreementRule​(java.util.ResourceBundle messages, German language)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.List<org.languagetool.tagging.disambiguation.rules.DisambiguationPatternRule> getAntiPatterns()  
      java.lang.String getDescription()  
      java.lang.String getId()  
      private java.util.List<java.lang.String> getPronounSuggestions​(org.languagetool.AnalyzedTokenReadings verb, boolean toUppercase)  
      private java.util.List<java.lang.String> getVerbSuggestions​(org.languagetool.AnalyzedTokenReadings verb, java.lang.String expectedVerbPOS, boolean toUppercase)  
      private boolean hasUnambiguouslyPersonAndNumber​(org.languagetool.AnalyzedTokenReadings tokenReadings, java.lang.String person, java.lang.String number)  
      private boolean isFiniteVerb​(org.languagetool.AnalyzedTokenReadings token)  
      private boolean isNear​(int a, int b)  
      private boolean isQuotationMark​(org.languagetool.AnalyzedTokenReadings token)  
      org.languagetool.rules.RuleMatch[] match​(java.util.List<org.languagetool.AnalyzedSentence> sentences)  
      private java.util.List<org.languagetool.rules.RuleMatch> match​(org.languagetool.AnalyzedSentence sentence, int pos)  
      int minToCheckParagraph()  
      private boolean nextButOneIsModal​(org.languagetool.AnalyzedTokenReadings[] tokens, int pos)  
      private org.languagetool.rules.RuleMatch ruleMatchWrongVerb​(org.languagetool.AnalyzedTokenReadings token, int pos, org.languagetool.AnalyzedSentence sentence)  
      private org.languagetool.rules.RuleMatch ruleMatchWrongVerbSubject​(org.languagetool.AnalyzedTokenReadings subject, org.languagetool.AnalyzedTokenReadings verb, java.lang.String expectedVerbPOS, int pos, org.languagetool.AnalyzedSentence sentence)  
      private VerbAgreementRule.BooleanAndFiniteVerb verbDoesMatchPersonAndNumber​(org.languagetool.AnalyzedTokenReadings token1, org.languagetool.AnalyzedTokenReadings token2, java.lang.String person, java.lang.String number, org.languagetool.AnalyzedTokenReadings finiteVerb)  
      • Methods inherited from class org.languagetool.rules.TextLevelRule

        estimateContextForSureMatch, match, match
      • Methods inherited from class org.languagetool.rules.Rule

        addExamplePair, getCategory, getConfigureText, getCorrectExamples, getDefaultValue, getErrorTriggeringExamples, getIncorrectExamples, getLocQualityIssueType, getMaxConfigurableValue, getMinConfigurableValue, getSentenceWithImmunization, getUrl, hasConfigurableValue, isDefaultOff, isDefaultTempOff, isDictionaryBasedSpellingRule, isOfficeDefaultOff, isOfficeDefaultOn, makeAntiPatterns, setCategory, setCorrectExamples, setDefaultOff, setDefaultOn, setDefaultTempOff, setErrorTriggeringExamples, setIncorrectExamples, setLocQualityIssueType, setOfficeDefaultOff, setOfficeDefaultOn, setUrl, supportsLanguage, toRuleMatchArray, useInOffice
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • ANTI_PATTERNS

        private static final java.util.List<java.util.List<org.languagetool.rules.patterns.PatternToken>> ANTI_PATTERNS
      • BIN_IGNORE

        private static final java.util.Set<java.lang.String> BIN_IGNORE
      • CONJUNCTIONS

        private static final java.util.Set<java.lang.String> CONJUNCTIONS
      • QUOTATION_MARKS

        private static final java.util.Set<java.lang.String> QUOTATION_MARKS
      • language

        private final German language
    • Constructor Detail

      • VerbAgreementRule

        public VerbAgreementRule​(java.util.ResourceBundle messages,
                                 German language)
    • Method Detail

      • getId

        public java.lang.String getId()
        Specified by:
        getId in class org.languagetool.rules.Rule
      • getDescription

        public java.lang.String getDescription()
        Specified by:
        getDescription in class org.languagetool.rules.Rule
      • match

        public org.languagetool.rules.RuleMatch[] match​(java.util.List<org.languagetool.AnalyzedSentence> sentences)
        Specified by:
        match in class org.languagetool.rules.TextLevelRule
      • match

        private java.util.List<org.languagetool.rules.RuleMatch> match​(org.languagetool.AnalyzedSentence sentence,
                                                                       int pos)
      • getAntiPatterns

        public java.util.List<org.languagetool.tagging.disambiguation.rules.DisambiguationPatternRule> getAntiPatterns()
        Overrides:
        getAntiPatterns in class org.languagetool.rules.Rule
      • nextButOneIsModal

        private boolean nextButOneIsModal​(org.languagetool.AnalyzedTokenReadings[] tokens,
                                          int pos)
      • isNear

        private boolean isNear​(int a,
                               int b)
        Returns:
        true if |a - b| < 5, and a != -1
      • isQuotationMark

        private boolean isQuotationMark​(org.languagetool.AnalyzedTokenReadings token)
      • hasUnambiguouslyPersonAndNumber

        private boolean hasUnambiguouslyPersonAndNumber​(org.languagetool.AnalyzedTokenReadings tokenReadings,
                                                        java.lang.String person,
                                                        java.lang.String number)
        Returns:
        true if the verb @param token (if it is a verb) matches @param person and @param number, and matches no other person/number
      • isFiniteVerb

        private boolean isFiniteVerb​(org.languagetool.AnalyzedTokenReadings token)
        Returns:
        true if @param token is a finite verb, and it is no participle, pronoun or number
      • verbDoesMatchPersonAndNumber

        private VerbAgreementRule.BooleanAndFiniteVerb verbDoesMatchPersonAndNumber​(org.languagetool.AnalyzedTokenReadings token1,
                                                                                    org.languagetool.AnalyzedTokenReadings token2,
                                                                                    java.lang.String person,
                                                                                    java.lang.String number,
                                                                                    org.languagetool.AnalyzedTokenReadings finiteVerb)
        Returns:
        false if neither the verb @param token1 (if any) nor @param token2 match @param person and @param number, and none of them is "und" or "," if a finite verb is found, it is saved in finiteVerb
      • getVerbSuggestions

        private java.util.List<java.lang.String> getVerbSuggestions​(org.languagetool.AnalyzedTokenReadings verb,
                                                                    java.lang.String expectedVerbPOS,
                                                                    boolean toUppercase)
        Parameters:
        toUppercase - true when the suggestions should be capitalized
        Returns:
        a list of forms of @param verb which match @param expectedVerbPOS (person:number)
      • getPronounSuggestions

        private java.util.List<java.lang.String> getPronounSuggestions​(org.languagetool.AnalyzedTokenReadings verb,
                                                                       boolean toUppercase)
        Parameters:
        toUppercase - true when the suggestions should be capitalized
        Returns:
        a list of pronouns which match the person and number of @param verb
      • ruleMatchWrongVerb

        private org.languagetool.rules.RuleMatch ruleMatchWrongVerb​(org.languagetool.AnalyzedTokenReadings token,
                                                                    int pos,
                                                                    org.languagetool.AnalyzedSentence sentence)
      • ruleMatchWrongVerbSubject

        private org.languagetool.rules.RuleMatch ruleMatchWrongVerbSubject​(org.languagetool.AnalyzedTokenReadings subject,
                                                                           org.languagetool.AnalyzedTokenReadings verb,
                                                                           java.lang.String expectedVerbPOS,
                                                                           int pos,
                                                                           org.languagetool.AnalyzedSentence sentence)
      • minToCheckParagraph

        public int minToCheckParagraph()
        Specified by:
        minToCheckParagraph in class org.languagetool.rules.TextLevelRule