Class SubjectVerbAgreementRule


  • public class SubjectVerbAgreementRule
    extends org.languagetool.rules.Rule
    Check subject verb agreement for verb forms "ist", "sind", "war" and "waren". For example, it detects the errors in:
    • Das Auto sind schnell.
    • Das Auto waren schnell.
    • Die Autos ist schnell.
    • Die Katze und der Hund ist schön.
    See our wiki for documentation of the steps this rule relies on.
    Since:
    2.9
    • 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.List<java.lang.String> CURRENCIES  
      private German language  
      private static org.languagetool.chunking.ChunkTag NPP  
      private static org.languagetool.chunking.ChunkTag NPS  
      private static java.util.List<SubjectVerbAgreementRule.SingularPluralPair> PAIRS  
      private java.util.Set<java.lang.String> plural  
      private static org.languagetool.chunking.ChunkTag PP  
      private static java.util.List<java.lang.String> QUESTION_PRONOUNS  
      private java.util.Set<java.lang.String> singular  
      private GermanTagger tagger  
      • Fields inherited from class org.languagetool.rules.Rule

        messages
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private boolean containsOnlyInfinitivesToTheLeft​(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)  
      private boolean containsRegexToTheLeft​(java.lang.String regex, org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)  
      int estimateContextForSureMatch()  
      java.util.List<org.languagetool.tagging.disambiguation.rules.DisambiguationPatternRule> getAntiPatterns()  
      java.lang.String getDescription()  
      java.lang.String getId()  
      private java.lang.String getPluralFor​(java.lang.String token)  
      private @Nullable org.languagetool.rules.RuleMatch getPluralMatchOrNull​(org.languagetool.AnalyzedTokenReadings[] tokens, int i, org.languagetool.AnalyzedTokenReadings token, java.lang.String tokenStr, org.languagetool.AnalyzedSentence sentence)  
      private java.lang.String getSingularFor​(java.lang.String token)  
      private @Nullable org.languagetool.rules.RuleMatch getSingularMatchOrNull​(org.languagetool.AnalyzedTokenReadings[] tokens, int i, org.languagetool.AnalyzedTokenReadings token, java.lang.String tokenStr, org.languagetool.AnalyzedSentence sentence)  
      java.net.URL getUrl()  
      private boolean hasQuestionPronounToTheLeft​(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)  
      private boolean hasUnknownTokenAt​(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos, int endPos)  
      private boolean hasUnknownTokenToTheLeft​(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)  
      private boolean hasUnknownTokenToTheRight​(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)  
      private boolean hasVerbToTheLeft​(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)  
      private boolean isCurrency​(org.languagetool.AnalyzedTokenReadings token)  
      (package private) boolean isFollowedByNominativePlural​(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)  
      org.languagetool.rules.RuleMatch[] match​(org.languagetool.AnalyzedSentence sentence)  
      (package private) boolean prevChunkIsNominative​(org.languagetool.AnalyzedTokenReadings[] tokens, int startPos)  
      • Methods inherited from class org.languagetool.rules.Rule

        addExamplePair, getCategory, getConfigureText, getCorrectExamples, getDefaultValue, getErrorTriggeringExamples, getIncorrectExamples, getLocQualityIssueType, getMaxConfigurableValue, getMinConfigurableValue, getSentenceWithImmunization, 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

      • NPS

        private static final org.languagetool.chunking.ChunkTag NPS
      • NPP

        private static final org.languagetool.chunking.ChunkTag NPP
      • PP

        private static final org.languagetool.chunking.ChunkTag PP
      • QUESTION_PRONOUNS

        private static final java.util.List<java.lang.String> QUESTION_PRONOUNS
      • CURRENCIES

        private static final java.util.List<java.lang.String> CURRENCIES
      • singular

        private final java.util.Set<java.lang.String> singular
      • plural

        private final java.util.Set<java.lang.String> plural
      • ANTI_PATTERNS

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

        private final German language
    • Constructor Detail

      • SubjectVerbAgreementRule

        public SubjectVerbAgreementRule​(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
      • estimateContextForSureMatch

        public int estimateContextForSureMatch()
        Overrides:
        estimateContextForSureMatch in class org.languagetool.rules.Rule
      • getAntiPatterns

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

        public java.net.URL getUrl()
        Overrides:
        getUrl in class org.languagetool.rules.Rule
      • match

        public org.languagetool.rules.RuleMatch[] match​(org.languagetool.AnalyzedSentence sentence)
                                                 throws java.io.IOException
        Specified by:
        match in class org.languagetool.rules.Rule
        Throws:
        java.io.IOException
      • getSingularMatchOrNull

        @Nullable
        private @Nullable org.languagetool.rules.RuleMatch getSingularMatchOrNull​(org.languagetool.AnalyzedTokenReadings[] tokens,
                                                                                  int i,
                                                                                  org.languagetool.AnalyzedTokenReadings token,
                                                                                  java.lang.String tokenStr,
                                                                                  org.languagetool.AnalyzedSentence sentence)
                                                                           throws java.io.IOException
        Throws:
        java.io.IOException
      • getPluralMatchOrNull

        @Nullable
        private @Nullable org.languagetool.rules.RuleMatch getPluralMatchOrNull​(org.languagetool.AnalyzedTokenReadings[] tokens,
                                                                                int i,
                                                                                org.languagetool.AnalyzedTokenReadings token,
                                                                                java.lang.String tokenStr,
                                                                                org.languagetool.AnalyzedSentence sentence)
      • isCurrency

        private boolean isCurrency​(org.languagetool.AnalyzedTokenReadings token)
      • prevChunkIsNominative

        boolean prevChunkIsNominative​(org.languagetool.AnalyzedTokenReadings[] tokens,
                                      int startPos)
      • hasUnknownTokenToTheLeft

        private boolean hasUnknownTokenToTheLeft​(org.languagetool.AnalyzedTokenReadings[] tokens,
                                                 int startPos)
      • hasUnknownTokenToTheRight

        private boolean hasUnknownTokenToTheRight​(org.languagetool.AnalyzedTokenReadings[] tokens,
                                                  int startPos)
      • hasUnknownTokenAt

        private boolean hasUnknownTokenAt​(org.languagetool.AnalyzedTokenReadings[] tokens,
                                          int startPos,
                                          int endPos)
      • hasQuestionPronounToTheLeft

        private boolean hasQuestionPronounToTheLeft​(org.languagetool.AnalyzedTokenReadings[] tokens,
                                                    int startPos)
      • hasVerbToTheLeft

        private boolean hasVerbToTheLeft​(org.languagetool.AnalyzedTokenReadings[] tokens,
                                         int startPos)
      • containsRegexToTheLeft

        private boolean containsRegexToTheLeft​(java.lang.String regex,
                                               org.languagetool.AnalyzedTokenReadings[] tokens,
                                               int startPos)
      • containsOnlyInfinitivesToTheLeft

        private boolean containsOnlyInfinitivesToTheLeft​(org.languagetool.AnalyzedTokenReadings[] tokens,
                                                         int startPos)
                                                  throws java.io.IOException
        Throws:
        java.io.IOException
      • isFollowedByNominativePlural

        boolean isFollowedByNominativePlural​(org.languagetool.AnalyzedTokenReadings[] tokens,
                                             int startPos)
      • getSingularFor

        private java.lang.String getSingularFor​(java.lang.String token)
      • getPluralFor

        private java.lang.String getPluralFor​(java.lang.String token)