Package org.languagetool.rules.de
Class VerbAgreementRule
- java.lang.Object
-
- org.languagetool.rules.Rule
-
- org.languagetool.rules.TextLevelRule
-
- org.languagetool.rules.de.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]
- 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.)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
VerbAgreementRule.BooleanAndFiniteVerb
-
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
-
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
-
-
-
-
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 classorg.languagetool.rules.Rule
-
getDescription
public java.lang.String getDescription()
- Specified by:
getDescription
in classorg.languagetool.rules.Rule
-
match
public org.languagetool.rules.RuleMatch[] match(java.util.List<org.languagetool.AnalyzedSentence> sentences)
- Specified by:
match
in classorg.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 classorg.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 classorg.languagetool.rules.TextLevelRule
-
-