From 1f8bc8bac54cacd83f13866ddc87f126aa80f215 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Mon, 2 Mar 2026 11:46:40 +0900 Subject: [PATCH] lemmatizer: let `LemmatizationRule.validChildClasses` be a set --- lib/util/lemmatizer/lemmatizer.dart | 4 +- lib/util/lemmatizer/rules/godan_verbs.dart | 52 +++++++++--------- lib/util/lemmatizer/rules/i_adjectives.dart | 16 +++--- lib/util/lemmatizer/rules/ichidan_verbs.dart | 58 ++++++++++---------- 4 files changed, 65 insertions(+), 65 deletions(-) diff --git a/lib/util/lemmatizer/lemmatizer.dart b/lib/util/lemmatizer/lemmatizer.dart index 1fbe80a..d516981 100644 --- a/lib/util/lemmatizer/lemmatizer.dart +++ b/lib/util/lemmatizer/lemmatizer.dart @@ -18,7 +18,7 @@ class LemmatizationRule { final String name; final AllomorphPattern pattern; final WordClass wordClass; - final List? validChildClasses; + final Set? validChildClasses; final bool terminal; const LemmatizationRule({ @@ -38,7 +38,7 @@ class LemmatizationRule { required String pattern, required String? replacement, required WordClass wordClass, - List? validChildClasses, + Set? validChildClasses, bool terminal = false, List lookAheadBehind = const [''], LemmatizationRuleType type = LemmatizationRuleType.suffix, diff --git a/lib/util/lemmatizer/rules/godan_verbs.dart b/lib/util/lemmatizer/rules/godan_verbs.dart index 4dc3ec1..36430a1 100644 --- a/lib/util/lemmatizer/rules/godan_verbs.dart +++ b/lib/util/lemmatizer/rules/godan_verbs.dart @@ -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, ); diff --git a/lib/util/lemmatizer/rules/i_adjectives.dart b/lib/util/lemmatizer/rules/i_adjectives.dart index 3165153..1cc5390 100644 --- a/lib/util/lemmatizer/rules/i_adjectives.dart +++ b/lib/util/lemmatizer/rules/i_adjectives.dart @@ -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, ); diff --git a/lib/util/lemmatizer/rules/ichidan_verbs.dart b/lib/util/lemmatizer/rules/ichidan_verbs.dart index 29a17f7..f4fd49a 100644 --- a/lib/util/lemmatizer/rules/ichidan_verbs.dart +++ b/lib/util/lemmatizer/rules/ichidan_verbs.dart @@ -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, );