lemmatizer: let LemmatizationRule.validChildClasses be a set

This commit is contained in:
2026-03-02 11:46:40 +09:00
parent ab28b5788b
commit 1f8bc8bac5
4 changed files with 65 additions and 65 deletions

View File

@@ -18,7 +18,7 @@ class LemmatizationRule {
final String name;
final AllomorphPattern pattern;
final WordClass wordClass;
final List<WordClass>? validChildClasses;
final Set<WordClass>? validChildClasses;
final bool terminal;
const LemmatizationRule({
@@ -38,7 +38,7 @@ class LemmatizationRule {
required String pattern,
required String? replacement,
required WordClass wordClass,
List<WordClass>? validChildClasses,
Set<WordClass>? validChildClasses,
bool terminal = false,
List<Pattern> lookAheadBehind = const [''],
LemmatizationRuleType type = LemmatizationRuleType.suffix,

View File

@@ -17,7 +17,7 @@ final LemmatizationRule godanVerbBase = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -37,7 +37,7 @@ final LemmatizationRule godanVerbNegative = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -53,7 +53,7 @@ final LemmatizationRule godanVerbPast = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -68,7 +68,7 @@ final LemmatizationRule godanVerbTe = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -83,7 +83,7 @@ final LemmatizationRule godanVerbTeiru = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -98,7 +98,7 @@ final LemmatizationRule godanVerbTeita = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -116,7 +116,7 @@ final LemmatizationRule godanVerbConditional = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -135,7 +135,7 @@ final LemmatizationRule godanVerbVolitional = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -153,7 +153,7 @@ final LemmatizationRule godanVerbPotential = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -171,7 +171,7 @@ final LemmatizationRule godanVerbPassive = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -189,7 +189,7 @@ final LemmatizationRule godanVerbCausative = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -207,7 +207,7 @@ final LemmatizationRule godanVerbCausativePassive = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -226,7 +226,7 @@ final LemmatizationRule godanVerbImperative = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -246,7 +246,7 @@ final LemmatizationRule godanVerbNegativePast = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -266,7 +266,7 @@ final LemmatizationRule godanVerbNegativeTe = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -286,7 +286,7 @@ final LemmatizationRule godanVerbNegativeConditional = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -305,7 +305,7 @@ final LemmatizationRule godanVerbNegativeVolitional = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -323,7 +323,7 @@ final LemmatizationRule godanVerbNegativePotential = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -341,7 +341,7 @@ final LemmatizationRule godanVerbNegativePassive = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -359,7 +359,7 @@ final LemmatizationRule godanVerbNegativeCausative = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -377,7 +377,7 @@ final LemmatizationRule godanVerbNegativeCausativePassive = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -397,7 +397,7 @@ final LemmatizationRule godanVerbNegativeImperative = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -416,7 +416,7 @@ final LemmatizationRule godanVerbDesire = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -436,7 +436,7 @@ final LemmatizationRule godanVerbNegativeDesire = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -455,7 +455,7 @@ final LemmatizationRule godanVerbPastDesire = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);
@@ -475,7 +475,7 @@ final LemmatizationRule godanVerbNegativePastDesire = LemmatizationRule(
},
type: LemmatizationRuleType.suffix,
),
validChildClasses: [WordClass.godanVerb],
validChildClasses: {WordClass.godanVerb},
wordClass: WordClass.godanVerb,
);

View File

@@ -5,7 +5,7 @@ final LemmatizationRule iAdjectiveBase = LemmatizationRule.simple(
terminal: true,
pattern: '',
replacement: '',
validChildClasses: [WordClass.iAdjective],
validChildClasses: {WordClass.iAdjective},
wordClass: WordClass.iAdjective,
);
@@ -13,7 +13,7 @@ final LemmatizationRule iAdjectiveNegative = LemmatizationRule.simple(
name: 'I adjective - negative form',
pattern: 'くない',
replacement: '',
validChildClasses: [WordClass.iAdjective],
validChildClasses: {WordClass.iAdjective},
wordClass: WordClass.iAdjective,
);
@@ -21,7 +21,7 @@ final LemmatizationRule iAdjectivePast = LemmatizationRule.simple(
name: 'I adjective - past form',
pattern: 'かった',
replacement: '',
validChildClasses: [WordClass.iAdjective],
validChildClasses: {WordClass.iAdjective},
wordClass: WordClass.iAdjective,
);
@@ -29,7 +29,7 @@ final LemmatizationRule iAdjectiveNegativePast = LemmatizationRule.simple(
name: 'I adjective - negative past form',
pattern: 'くなかった',
replacement: '',
validChildClasses: [WordClass.iAdjective],
validChildClasses: {WordClass.iAdjective},
wordClass: WordClass.iAdjective,
);
@@ -37,7 +37,7 @@ final LemmatizationRule iAdjectiveTe = LemmatizationRule.simple(
name: 'I adjective - te-form',
pattern: 'くて',
replacement: '',
validChildClasses: [WordClass.iAdjective],
validChildClasses: {WordClass.iAdjective},
wordClass: WordClass.iAdjective,
);
@@ -45,7 +45,7 @@ final LemmatizationRule iAdjectiveConditional = LemmatizationRule.simple(
name: 'I adjective - conditional form',
pattern: 'ければ',
replacement: '',
validChildClasses: [WordClass.iAdjective],
validChildClasses: {WordClass.iAdjective},
wordClass: WordClass.iAdjective,
);
@@ -53,7 +53,7 @@ final LemmatizationRule iAdjectiveVolitional = LemmatizationRule.simple(
name: 'I adjective - volitional form',
pattern: 'かろう',
replacement: '',
validChildClasses: [WordClass.iAdjective],
validChildClasses: {WordClass.iAdjective},
wordClass: WordClass.iAdjective,
);
@@ -61,7 +61,7 @@ final LemmatizationRule iAdjectiveContinuative = LemmatizationRule.simple(
name: 'I adjective - continuative form',
pattern: '',
replacement: '',
validChildClasses: [WordClass.iAdjective],
validChildClasses: {WordClass.iAdjective},
wordClass: WordClass.iAdjective,
);

View File

@@ -34,7 +34,7 @@ final LemmatizationRule ichidanVerbBase = LemmatizationRule.simple(
pattern: '',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -43,7 +43,7 @@ final LemmatizationRule ichidanVerbNegative = LemmatizationRule.simple(
pattern: 'ない',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
final LemmatizationRule ichidanVerbPast = LemmatizationRule.simple(
@@ -51,7 +51,7 @@ final LemmatizationRule ichidanVerbPast = LemmatizationRule.simple(
pattern: '',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -60,7 +60,7 @@ final LemmatizationRule ichidanVerbTe = LemmatizationRule.simple(
pattern: '',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -69,7 +69,7 @@ final LemmatizationRule ichidanVerbTeiru = LemmatizationRule.simple(
pattern: 'ている',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -78,7 +78,7 @@ final LemmatizationRule ichidanVerbTeita = LemmatizationRule.simple(
pattern: 'ていた',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -87,7 +87,7 @@ final LemmatizationRule ichidanVerbConditional = LemmatizationRule.simple(
pattern: 'れば',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -96,7 +96,7 @@ final LemmatizationRule ichidanVerbVolitional = LemmatizationRule.simple(
pattern: 'よう',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -105,7 +105,7 @@ final LemmatizationRule ichidanVerbPotential = LemmatizationRule.simple(
pattern: 'られる',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -114,7 +114,7 @@ final LemmatizationRule ichidanVerbPassive = LemmatizationRule.simple(
pattern: 'られる',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -123,7 +123,7 @@ final LemmatizationRule ichidanVerbCausative = LemmatizationRule.simple(
pattern: 'させる',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -132,7 +132,7 @@ final LemmatizationRule ichidanVerbCausativePassive = LemmatizationRule.simple(
pattern: 'させられる',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -141,7 +141,7 @@ final LemmatizationRule ichidanVerbImperative = LemmatizationRule.simple(
pattern: '',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -150,7 +150,7 @@ final LemmatizationRule ichidanVerbNegativePast = LemmatizationRule.simple(
pattern: 'なかった',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -159,7 +159,7 @@ final LemmatizationRule ichidanVerbNegativeTe = LemmatizationRule.simple(
pattern: 'なくて',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -169,7 +169,7 @@ final LemmatizationRule ichidanVerbNegativeConditional =
pattern: 'なければ',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -179,7 +179,7 @@ final LemmatizationRule ichidanVerbNegativeConditionalVariant1 =
pattern: 'なきゃ',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -189,7 +189,7 @@ final LemmatizationRule ichidanVerbNegativeConditionalVariant2 =
pattern: 'なくちゃ',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -199,7 +199,7 @@ final LemmatizationRule ichidanVerbNegativeConditionalVariant3 =
pattern: 'ないと',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -209,7 +209,7 @@ final LemmatizationRule ichidanVerbNegativeVolitional =
pattern: 'なかろう',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -218,7 +218,7 @@ final LemmatizationRule ichidanVerbNegativePotential = LemmatizationRule.simple(
pattern: 'られない',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -227,7 +227,7 @@ final LemmatizationRule ichidanVerbNegativePassive = LemmatizationRule.simple(
pattern: 'られない',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -236,7 +236,7 @@ final LemmatizationRule ichidanVerbNegativeCausative = LemmatizationRule.simple(
pattern: 'させない',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -246,7 +246,7 @@ final LemmatizationRule ichidanVerbNegativeCausativePassive =
pattern: 'させられない',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -256,7 +256,7 @@ final LemmatizationRule ichidanVerbNegativeImperative =
pattern: 'るな',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -265,7 +265,7 @@ final LemmatizationRule ichidanVerbDesire = LemmatizationRule.simple(
pattern: 'たい',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -274,7 +274,7 @@ final LemmatizationRule ichidanVerbNegativeDesire = LemmatizationRule.simple(
pattern: 'たくない',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -283,7 +283,7 @@ final LemmatizationRule ichidanVerbPastDesire = LemmatizationRule.simple(
pattern: 'たかった',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);
@@ -293,7 +293,7 @@ final LemmatizationRule ichidanVerbNegativePastDesire =
pattern: 'たくなかった',
replacement: '',
lookAheadBehind: _lookBehinds,
validChildClasses: [WordClass.ichidanVerb],
validChildClasses: {WordClass.ichidanVerb},
wordClass: WordClass.ichidanVerb,
);