From a4ee09f26c9c3dd452e9250d493cdb69f7023cf4 Mon Sep 17 00:00:00 2001 From: Khai Truong <56820749+khaitruong922@users.noreply.github.com> Date: Sat, 20 Jul 2024 20:14:59 +0700 Subject: [PATCH] =?UTF-8?q?[ja]=20Add=20deinflection=20rule=20for=20?= =?UTF-8?q?=E3=80=9C=E9=81=8E=E3=81=8E=E3=82=8B=20(#1245)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add sugiru kanji form * Fix test --- .../japanese-language-transformer.bench.js | 4 +++ ext/js/language/ja/japanese-transforms.js | 31 +++++++++++++++++++ test/language/japanese-transforms.test.js | 17 ++++++++++ 3 files changed, 52 insertions(+) diff --git a/benches/japanese-language-transformer.bench.js b/benches/japanese-language-transformer.bench.js index 7f4922c2e5..57d26df362 100644 --- a/benches/japanese-language-transformer.bench.js +++ b/benches/japanese-language-transformer.bench.js @@ -28,6 +28,7 @@ describe('japanese language transformer', () => { '愛しい', '愛しそう', '愛しすぎる', + '愛し過ぎる', '愛しかったら', '愛しかったり', '愛しくて', @@ -67,6 +68,7 @@ describe('japanese language transformer', () => { '食べなさい', '食べそう', '食べすぎる', + '食べ過ぎる', '食べたい', '食べたら', '食べたり', @@ -118,6 +120,7 @@ describe('japanese language transformer', () => { 'きなさい', 'きそう', 'きすぎる', + 'き過ぎる', 'きたい', 'きたら', 'きたり', @@ -170,6 +173,7 @@ describe('japanese language transformer', () => { 'しなさい', 'しそう', 'しすぎる', + 'し過ぎる', 'したい', 'したら', 'したり', diff --git a/ext/js/language/ja/japanese-transforms.js b/ext/js/language/ja/japanese-transforms.js index 9931087fc0..3c7b4a4f72 100644 --- a/ext/js/language/ja/japanese-transforms.js +++ b/ext/js/language/ja/japanese-transforms.js @@ -409,6 +409,37 @@ export const japaneseTransforms = { suffixInflection('來すぎる', '來る', ['v1'], ['vk']), ], }, + '-sugiru-kanji': { + name: '-sugiru', + description: 'Shows something "is too..." or someone is doing something "too much".\n' + + 'Usage: Attach 過ぎる to the continuative form (renyoukei) of verbs, or to the stem of adjectives.', + i18n: [ + { + language: 'ja', + name: '~過ぎる', + description: '程度や限度を超える', + }, + ], + rules: [ + suffixInflection('過ぎる', 'い', ['v1'], ['adj-i']), + suffixInflection('過ぎる', 'る', ['v1'], ['v1']), + suffixInflection('い過ぎる', 'う', ['v1'], ['v5']), + suffixInflection('き過ぎる', 'く', ['v1'], ['v5']), + suffixInflection('ぎ過ぎる', 'ぐ', ['v1'], ['v5']), + suffixInflection('し過ぎる', 'す', ['v1'], ['v5']), + suffixInflection('ち過ぎる', 'つ', ['v1'], ['v5']), + suffixInflection('に過ぎる', 'ぬ', ['v1'], ['v5']), + suffixInflection('び過ぎる', 'ぶ', ['v1'], ['v5']), + suffixInflection('み過ぎる', 'む', ['v1'], ['v5']), + suffixInflection('り過ぎる', 'る', ['v1'], ['v5']), + suffixInflection('じ過ぎる', 'ずる', ['v1'], ['vz']), + suffixInflection('し過ぎる', 'する', ['v1'], ['vs']), + suffixInflection('為過ぎる', '為る', ['v1'], ['vs']), + suffixInflection('き過ぎる', 'くる', ['v1'], ['vk']), + suffixInflection('来過ぎる', '来る', ['v1'], ['vk']), + suffixInflection('來過ぎる', '來る', ['v1'], ['vk']), + ], + }, '-tai': { name: '-tai', description: '1. Expresses the feeling of desire or hope.\n' + diff --git a/test/language/japanese-transforms.test.js b/test/language/japanese-transforms.test.js index 4899038b52..35ec68477b 100644 --- a/test/language/japanese-transforms.test.js +++ b/test/language/japanese-transforms.test.js @@ -29,6 +29,7 @@ const tests = [ {term: '愛しい', source: '愛しい', rule: 'adj-i', reasons: []}, {term: '愛しい', source: '愛しそう', rule: 'adj-i', reasons: ['-sou']}, {term: '愛しい', source: '愛しすぎる', rule: 'adj-i', reasons: ['-sugiru']}, + {term: '愛しい', source: '愛し過ぎる', rule: 'adj-i', reasons: ['-sugiru-kanji']}, {term: '愛しい', source: '愛しかったら', rule: 'adj-i', reasons: ['-tara']}, {term: '愛しい', source: '愛しかったり', rule: 'adj-i', reasons: ['-tari']}, {term: '愛しい', source: '愛しくて', rule: 'adj-i', reasons: ['-te']}, @@ -78,6 +79,7 @@ const tests = [ {term: '食べる', source: '食べなさい', rule: 'v1', reasons: ['-nasai']}, {term: '食べる', source: '食べそう', rule: 'v1', reasons: ['-sou']}, {term: '食べる', source: '食べすぎる', rule: 'v1', reasons: ['-sugiru']}, + {term: '食べる', source: '食べ過ぎる', rule: 'v1', reasons: ['-sugiru-kanji']}, {term: '食べる', source: '食べたい', rule: 'v1', reasons: ['-tai']}, {term: '食べる', source: '食べたがる', rule: 'v1', reasons: ['-tai', '-garu']}, {term: '食べる', source: '食べたら', rule: 'v1', reasons: ['-tara']}, @@ -133,6 +135,7 @@ const tests = [ {term: '買う', source: '買いなさい', rule: 'v5', reasons: ['-nasai']}, {term: '買う', source: '買いそう', rule: 'v5', reasons: ['-sou']}, {term: '買う', source: '買いすぎる', rule: 'v5', reasons: ['-sugiru']}, + {term: '買う', source: '買い過ぎる', rule: 'v5', reasons: ['-sugiru-kanji']}, {term: '買う', source: '買いたい', rule: 'v5', reasons: ['-tai']}, {term: '買う', source: '買いたがる', rule: 'v5', reasons: ['-tai', '-garu']}, {term: '買う', source: '買ったら', rule: 'v5', reasons: ['-tara']}, @@ -188,6 +191,7 @@ const tests = [ {term: '行く', source: '行きなさい', rule: 'v5', reasons: ['-nasai']}, {term: '行く', source: '行きそう', rule: 'v5', reasons: ['-sou']}, {term: '行く', source: '行きすぎる', rule: 'v5', reasons: ['-sugiru']}, + {term: '行く', source: '行き過ぎる', rule: 'v5', reasons: ['-sugiru-kanji']}, {term: '行く', source: '行きたい', rule: 'v5', reasons: ['-tai']}, {term: '行く', source: '行きたがる', rule: 'v5', reasons: ['-tai', '-garu']}, {term: '行く', source: '行いたら', rule: 'v5', reasons: ['-tara']}, @@ -243,6 +247,7 @@ const tests = [ {term: '泳ぐ', source: '泳ぎなさい', rule: 'v5', reasons: ['-nasai']}, {term: '泳ぐ', source: '泳ぎそう', rule: 'v5', reasons: ['-sou']}, {term: '泳ぐ', source: '泳ぎすぎる', rule: 'v5', reasons: ['-sugiru']}, + {term: '泳ぐ', source: '泳ぎ過ぎる', rule: 'v5', reasons: ['-sugiru-kanji']}, {term: '泳ぐ', source: '泳ぎたい', rule: 'v5', reasons: ['-tai']}, {term: '泳ぐ', source: '泳ぎたがる', rule: 'v5', reasons: ['-tai', '-garu']}, {term: '泳ぐ', source: '泳いだら', rule: 'v5', reasons: ['-tara']}, @@ -297,6 +302,7 @@ const tests = [ {term: '話す', source: '話しなさい', rule: 'v5', reasons: ['-nasai']}, {term: '話す', source: '話しそう', rule: 'v5', reasons: ['-sou']}, {term: '話す', source: '話しすぎる', rule: 'v5', reasons: ['-sugiru']}, + {term: '話す', source: '話し過ぎる', rule: 'v5', reasons: ['-sugiru-kanji']}, {term: '話す', source: '話したい', rule: 'v5', reasons: ['-tai']}, {term: '話す', source: '話したがる', rule: 'v5', reasons: ['-tai', '-garu']}, {term: '話す', source: '話したら', rule: 'v5', reasons: ['-tara']}, @@ -354,6 +360,7 @@ const tests = [ {term: '待つ', source: '待ちなさい', rule: 'v5', reasons: ['-nasai']}, {term: '待つ', source: '待ちそう', rule: 'v5', reasons: ['-sou']}, {term: '待つ', source: '待ちすぎる', rule: 'v5', reasons: ['-sugiru']}, + {term: '待つ', source: '待ち過ぎる', rule: 'v5', reasons: ['-sugiru-kanji']}, {term: '待つ', source: '待ちたい', rule: 'v5', reasons: ['-tai']}, {term: '待つ', source: '待ちたがる', rule: 'v5', reasons: ['-tai', '-garu']}, {term: '待つ', source: '待ったら', rule: 'v5', reasons: ['-tara']}, @@ -409,6 +416,7 @@ const tests = [ {term: '死ぬ', source: '死になさい', rule: 'v5', reasons: ['-nasai']}, {term: '死ぬ', source: '死にそう', rule: 'v5', reasons: ['-sou']}, {term: '死ぬ', source: '死にすぎる', rule: 'v5', reasons: ['-sugiru']}, + {term: '死ぬ', source: '死に過ぎる', rule: 'v5', reasons: ['-sugiru-kanji']}, {term: '死ぬ', source: '死にたい', rule: 'v5', reasons: ['-tai']}, {term: '死ぬ', source: '死にたがる', rule: 'v5', reasons: ['-tai', '-garu']}, {term: '死ぬ', source: '死んだら', rule: 'v5', reasons: ['-tara']}, @@ -463,6 +471,7 @@ const tests = [ {term: '遊ぶ', source: '遊びなさい', rule: 'v5', reasons: ['-nasai']}, {term: '遊ぶ', source: '遊びそう', rule: 'v5', reasons: ['-sou']}, {term: '遊ぶ', source: '遊びすぎる', rule: 'v5', reasons: ['-sugiru']}, + {term: '遊ぶ', source: '遊び過ぎる', rule: 'v5', reasons: ['-sugiru-kanji']}, {term: '遊ぶ', source: '遊びたい', rule: 'v5', reasons: ['-tai']}, {term: '遊ぶ', source: '遊びたがる', rule: 'v5', reasons: ['-tai', '-garu']}, {term: '遊ぶ', source: '遊んだら', rule: 'v5', reasons: ['-tara']}, @@ -517,6 +526,7 @@ const tests = [ {term: '飲む', source: '飲みなさい', rule: 'v5', reasons: ['-nasai']}, {term: '飲む', source: '飲みそう', rule: 'v5', reasons: ['-sou']}, {term: '飲む', source: '飲みすぎる', rule: 'v5', reasons: ['-sugiru']}, + {term: '飲む', source: '飲み過ぎる', rule: 'v5', reasons: ['-sugiru-kanji']}, {term: '飲む', source: '飲みたい', rule: 'v5', reasons: ['-tai']}, {term: '飲む', source: '飲みたがる', rule: 'v5', reasons: ['-tai', '-garu']}, {term: '飲む', source: '飲んだら', rule: 'v5', reasons: ['-tara']}, @@ -571,6 +581,7 @@ const tests = [ {term: '作る', source: '作りなさい', rule: 'v5', reasons: ['-nasai']}, {term: '作る', source: '作りそう', rule: 'v5', reasons: ['-sou']}, {term: '作る', source: '作りすぎる', rule: 'v5', reasons: ['-sugiru']}, + {term: '作る', source: '作り過ぎる', rule: 'v5', reasons: ['-sugiru-kanji']}, {term: '作る', source: '作りたい', rule: 'v5', reasons: ['-tai']}, {term: '作る', source: '作りたがる', rule: 'v5', reasons: ['-tai', '-garu']}, {term: '作る', source: '作ったら', rule: 'v5', reasons: ['-tara']}, @@ -630,6 +641,7 @@ const tests = [ {term: '為る', source: '為なさい', rule: 'vs', reasons: ['-nasai']}, {term: '為る', source: '為そう', rule: 'vs', reasons: ['-sou']}, {term: '為る', source: '為すぎる', rule: 'vs', reasons: ['-sugiru']}, + {term: '為る', source: '為過ぎる', rule: 'vs', reasons: ['-sugiru-kanji']}, {term: '為る', source: '為たい', rule: 'vs', reasons: ['-tai']}, {term: '為る', source: '為たがる', rule: 'vs', reasons: ['-tai', '-garu']}, {term: '為る', source: '為たら', rule: 'vs', reasons: ['-tara']}, @@ -686,6 +698,7 @@ const tests = [ {term: 'する', source: 'しなさい', rule: 'vs', reasons: ['-nasai']}, {term: 'する', source: 'しそう', rule: 'vs', reasons: ['-sou']}, {term: 'する', source: 'しすぎる', rule: 'vs', reasons: ['-sugiru']}, + {term: 'する', source: 'し過ぎる', rule: 'vs', reasons: ['-sugiru-kanji']}, {term: 'する', source: 'したい', rule: 'vs', reasons: ['-tai']}, {term: 'する', source: 'したがる', rule: 'vs', reasons: ['-tai', '-garu']}, {term: 'する', source: 'したら', rule: 'vs', reasons: ['-tara']}, @@ -737,6 +750,7 @@ const tests = [ {term: '来る', source: '来なさい', rule: 'vk', reasons: ['-nasai']}, {term: '来る', source: '来そう', rule: 'vk', reasons: ['-sou']}, {term: '来る', source: '来すぎる', rule: 'vk', reasons: ['-sugiru']}, + {term: '来る', source: '来過ぎる', rule: 'vk', reasons: ['-sugiru-kanji']}, {term: '来る', source: '来たい', rule: 'vk', reasons: ['-tai']}, {term: '来る', source: '来たがる', rule: 'vk', reasons: ['-tai', '-garu']}, {term: '来る', source: '来たら', rule: 'vk', reasons: ['-tara']}, @@ -787,6 +801,7 @@ const tests = [ {term: '來る', source: '來なさい', rule: 'vk', reasons: ['-nasai']}, {term: '來る', source: '來そう', rule: 'vk', reasons: ['-sou']}, {term: '來る', source: '來すぎる', rule: 'vk', reasons: ['-sugiru']}, + {term: '來る', source: '來過ぎる', rule: 'vk', reasons: ['-sugiru-kanji']}, {term: '來る', source: '來たい', rule: 'vk', reasons: ['-tai']}, {term: '來る', source: '來たがる', rule: 'vk', reasons: ['-tai', '-garu']}, {term: '來る', source: '來たら', rule: 'vk', reasons: ['-tara']}, @@ -837,6 +852,7 @@ const tests = [ {term: 'くる', source: 'きなさい', rule: 'vk', reasons: ['-nasai']}, {term: 'くる', source: 'きそう', rule: 'vk', reasons: ['-sou']}, {term: 'くる', source: 'きすぎる', rule: 'vk', reasons: ['-sugiru']}, + {term: 'くる', source: 'き過ぎる', rule: 'vk', reasons: ['-sugiru-kanji']}, {term: 'くる', source: 'きたい', rule: 'vk', reasons: ['-tai']}, {term: 'くる', source: 'きたがる', rule: 'vk', reasons: ['-tai', '-garu']}, {term: 'くる', source: 'きたら', rule: 'vk', reasons: ['-tara']}, @@ -899,6 +915,7 @@ const tests = [ {term: '論ずる', source: '論じなさい', rule: 'vz', reasons: ['-nasai']}, {term: '論ずる', source: '論じそう', rule: 'vz', reasons: ['-sou']}, {term: '論ずる', source: '論じすぎる', rule: 'vz', reasons: ['-sugiru']}, + {term: '論ずる', source: '論じ過ぎる', rule: 'vz', reasons: ['-sugiru-kanji']}, {term: '論ずる', source: '論じたい', rule: 'vz', reasons: ['-tai']}, {term: '論ずる', source: '論じたがる', rule: 'vz', reasons: ['-tai', '-garu']}, {term: '論ずる', source: '論じたら', rule: 'vz', reasons: ['-tara']},