diff options
author | Alex Yatskov <alex@foosoft.net> | 2016-12-19 21:23:17 -0800 |
---|---|---|
committer | Alex Yatskov <alex@foosoft.net> | 2016-12-19 21:23:17 -0800 |
commit | 28b8bae6a7cbea7b34faed2ea396b95b5de3b426 (patch) | |
tree | 9405c939b046ddb40513ea11206c306150b6e47d | |
parent | 0aa603694c6ab912b4e74c9e87b73295ae393ee2 (diff) |
deinflector optimizations
-rw-r--r-- | ext/bg/data/deinflect.json | 1276 | ||||
-rw-r--r-- | ext/bg/js/deinflector.js | 35 | ||||
-rw-r--r-- | ext/bg/js/translator.js | 75 |
3 files changed, 683 insertions, 703 deletions
diff --git a/ext/bg/data/deinflect.json b/ext/bg/data/deinflect.json index 3fd45771..256633e0 100644 --- a/ext/bg/data/deinflect.json +++ b/ext/bg/data/deinflect.json @@ -3,72 +3,72 @@ { "kanaIn": "えば", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "けば", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "げば", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "せば", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "てば", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ねば", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "べば", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "めば", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "れば", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "v5", "vk", @@ -78,8 +78,8 @@ { "kanaIn": "ければ", "kanaOut": "い", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "adj-i" ] } @@ -88,10 +88,10 @@ { "kanaIn": "ちゃう", "kanaOut": "る", - "tagsIn": [ + "rulesIn": [ "v5" ], - "tagsOut": [ + "rulesOut": [ "v1", "vk" ] @@ -99,120 +99,120 @@ { "kanaIn": "いじゃう", "kanaOut": "ぐ", - "tagsIn": [ + "rulesIn": [ "v5" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "いちゃう", "kanaOut": "く", - "tagsIn": [ + "rulesIn": [ "v5" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "きちゃう", "kanaOut": "くる", - "tagsIn": [ + "rulesIn": [ "v5" ], - "tagsOut": [ + "rulesOut": [ "vk" ] }, { "kanaIn": "しちゃう", "kanaOut": "す", - "tagsIn": [ + "rulesIn": [ "v5" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "しちゃう", "kanaOut": "する", - "tagsIn": [ + "rulesIn": [ "v5" ], - "tagsOut": [ + "rulesOut": [ "vs" ] }, { "kanaIn": "っちゃう", "kanaOut": "う", - "tagsIn": [ + "rulesIn": [ "v5" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "っちゃう", "kanaOut": "く", - "tagsIn": [ + "rulesIn": [ "v5" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "っちゃう", "kanaOut": "つ", - "tagsIn": [ + "rulesIn": [ "v5" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "っちゃう", "kanaOut": "る", - "tagsIn": [ + "rulesIn": [ "v5" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "んじゃう", "kanaOut": "ぬ", - "tagsIn": [ + "rulesIn": [ "v5" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "んじゃう", "kanaOut": "ぶ", - "tagsIn": [ + "rulesIn": [ "v5" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "んじゃう", "kanaOut": "む", - "tagsIn": [ + "rulesIn": [ "v5" ], - "tagsOut": [ + "rulesOut": [ "v5" ] } @@ -221,8 +221,8 @@ { "kanaIn": "なさい", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -230,88 +230,88 @@ { "kanaIn": "いなさい", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きなさい", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きなさい", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "ぎなさい", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "しなさい", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "しなさい", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "ちなさい", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "になさい", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "びなさい", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "みなさい", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "りなさい", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] } @@ -320,16 +320,16 @@ { "kanaIn": "そう", "kanaOut": "い", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "adj-i" ] }, { "kanaIn": "そう", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -337,88 +337,88 @@ { "kanaIn": "いそう", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きそう", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きそう", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "ぎそう", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "しそう", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "しそう", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "ちそう", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "にそう", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "びそう", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "みそう", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "りそう", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] } @@ -427,20 +427,20 @@ { "kanaIn": "すぎる", "kanaOut": "い", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "adj-i" ] }, { "kanaIn": "すぎる", "kanaOut": "る", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v1", "vk" ] @@ -448,110 +448,110 @@ { "kanaIn": "いすぎる", "kanaOut": "う", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "きすぎる", "kanaOut": "く", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "きすぎる", "kanaOut": "くる", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "vk" ] }, { "kanaIn": "ぎすぎる", "kanaOut": "ぐ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "しすぎる", "kanaOut": "す", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "しすぎる", "kanaOut": "する", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "vs" ] }, { "kanaIn": "ちすぎる", "kanaOut": "つ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "にすぎる", "kanaOut": "ぬ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "びすぎる", "kanaOut": "ぶ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "みすぎる", "kanaOut": "む", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "りすぎる", "kanaOut": "る", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] } @@ -560,10 +560,10 @@ { "kanaIn": "たい", "kanaOut": "る", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v1", "vk" ] @@ -571,110 +571,110 @@ { "kanaIn": "いたい", "kanaOut": "う", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "きたい", "kanaOut": "く", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "きたい", "kanaOut": "くる", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "vk" ] }, { "kanaIn": "ぎたい", "kanaOut": "ぐ", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "したい", "kanaOut": "す", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "したい", "kanaOut": "する", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "vs" ] }, { "kanaIn": "ちたい", "kanaOut": "つ", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "にたい", "kanaOut": "ぬ", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "びたい", "kanaOut": "ぶ", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "みたい", "kanaOut": "む", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "りたい", "kanaOut": "る", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] } @@ -683,8 +683,8 @@ { "kanaIn": "たら", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -692,96 +692,96 @@ { "kanaIn": "いたら", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "いだら", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きたら", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "したら", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "したら", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "ったら", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ったら", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ったら", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "んだら", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "んだら", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "んだら", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "かったら", "kanaOut": "い", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "adj-i" ] } @@ -790,8 +790,8 @@ { "kanaIn": "たり", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -799,96 +799,96 @@ { "kanaIn": "いたり", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "いだり", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きたり", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "したり", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "したり", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "ったり", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ったり", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ったり", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "んだり", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "んだり", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "んだり", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "かったり", "kanaOut": "い", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "adj-i" ] } @@ -897,8 +897,8 @@ { "kanaIn": "て", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -906,104 +906,104 @@ { "kanaIn": "いて", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "いで", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きて", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "くて", "kanaOut": "い", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "adj-i" ] }, { "kanaIn": "して", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "して", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "って", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "って", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "って", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "って", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "んで", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "んで", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "んで", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] } @@ -1012,8 +1012,8 @@ { "kanaIn": "ず", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -1021,88 +1021,88 @@ { "kanaIn": "かず", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "がず", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "こず", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "さず", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "せず", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "たず", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "なず", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ばず", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "まず", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "らず", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "わず", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] } @@ -1111,8 +1111,8 @@ { "kanaIn": "ぬ", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -1120,88 +1120,88 @@ { "kanaIn": "かぬ", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "がぬ", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "こぬ", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "さぬ", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "せぬ", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "たぬ", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "なぬ", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ばぬ", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "まぬ", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "らぬ", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "わぬ", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] } @@ -1210,8 +1210,8 @@ { "kanaIn": "く", "kanaOut": "い", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "adj-i" ] } @@ -1220,40 +1220,40 @@ { "kanaIn": "かせる", "kanaOut": "く", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "がせる", "kanaOut": "ぐ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "させる", "kanaOut": "する", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "vs" ] }, { "kanaIn": "させる", "kanaOut": "る", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v1", "vk" ] @@ -1261,70 +1261,70 @@ { "kanaIn": "たせる", "kanaOut": "つ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "なせる", "kanaOut": "ぬ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "ばせる", "kanaOut": "ぶ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "ませる", "kanaOut": "む", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "らせる", "kanaOut": "る", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "わせる", "kanaOut": "う", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "こさせる", "kanaOut": "くる", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "vk" ] } @@ -1333,120 +1333,120 @@ { "kanaIn": "い", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "え", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "け", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "げ", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "せ", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "て", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ね", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "べ", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "め", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "よ", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "れ", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ろ", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "こい", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "しろ", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "せよ", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] } @@ -1455,8 +1455,8 @@ { "kanaIn": "な", "kanaOut": "", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "v5", "vk", @@ -1468,248 +1468,248 @@ { "kanaIn": "い", "kanaOut": "いる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "い", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "え", "kanaOut": "える", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "き", "kanaOut": "きる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "き", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ぎ", "kanaOut": "ぎる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "ぎ", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "け", "kanaOut": "ける", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "げ", "kanaOut": "げる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "し", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "じ", "kanaOut": "じる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "せ", "kanaOut": "せる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "ぜ", "kanaOut": "ぜる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "ち", "kanaOut": "ちる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "ち", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "て", "kanaOut": "てる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "で", "kanaOut": "でる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "に", "kanaOut": "にる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "に", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ね", "kanaOut": "ねる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "ひ", "kanaOut": "ひる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "び", "kanaOut": "びる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "び", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "へ", "kanaOut": "へる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "べ", "kanaOut": "べる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "み", "kanaOut": "みる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "み", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "め", "kanaOut": "める", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "り", "kanaOut": "りる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] }, { "kanaIn": "り", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "れ", "kanaOut": "れる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1" ] } @@ -1718,10 +1718,10 @@ { "kanaIn": "ない", "kanaOut": "る", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v1", "vk" ] @@ -1729,120 +1729,120 @@ { "kanaIn": "かない", "kanaOut": "く", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "がない", "kanaOut": "ぐ", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "くない", "kanaOut": "い", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "adj-i" ] }, { "kanaIn": "こない", "kanaOut": "くる", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "vk" ] }, { "kanaIn": "さない", "kanaOut": "す", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "しない", "kanaOut": "する", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "vs" ] }, { "kanaIn": "たない", "kanaOut": "つ", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "なない", "kanaOut": "ぬ", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "ばない", "kanaOut": "ぶ", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "まない", "kanaOut": "む", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "らない", "kanaOut": "る", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "わない", "kanaOut": "う", - "tagsIn": [ + "rulesIn": [ "adj-i" ], - "tagsOut": [ + "rulesOut": [ "v5" ] } @@ -1851,8 +1851,8 @@ { "kanaIn": "さ", "kanaOut": "い", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "adj-i" ] } @@ -1861,80 +1861,80 @@ { "kanaIn": "かれる", "kanaOut": "く", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "がれる", "kanaOut": "ぐ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "される", "kanaOut": "する", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "vs" ] }, { "kanaIn": "たれる", "kanaOut": "つ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "なれる", "kanaOut": "ぬ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "ばれる", "kanaOut": "ぶ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "まれる", "kanaOut": "む", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "われる", "kanaOut": "う", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] } @@ -1943,10 +1943,10 @@ { "kanaIn": "される", "kanaOut": "す", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] } @@ -1955,8 +1955,8 @@ { "kanaIn": "た", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -1964,104 +1964,104 @@ { "kanaIn": "いた", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "いだ", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きた", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "した", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "した", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "った", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "った", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "った", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "った", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "んだ", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "んだ", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "んだ", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "かった", "kanaOut": "い", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "adj-i" ] } @@ -2070,8 +2070,8 @@ { "kanaIn": "ます", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -2079,88 +2079,88 @@ { "kanaIn": "います", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きます", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きます", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "ぎます", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "します", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "します", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "ちます", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "にます", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "びます", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "みます", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ります", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] } @@ -2169,8 +2169,8 @@ { "kanaIn": "ません", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -2178,96 +2178,96 @@ { "kanaIn": "いません", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きません", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きません", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "ぎません", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "しません", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "しません", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "ちません", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "にません", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "びません", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "みません", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "りません", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "くありません", "kanaOut": "い", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "adj-i" ] } @@ -2276,8 +2276,8 @@ { "kanaIn": "ました", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -2285,88 +2285,88 @@ { "kanaIn": "いました", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きました", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きました", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "ぎました", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "しました", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "しました", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "ちました", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "にました", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "びました", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "みました", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "りました", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] } @@ -2375,8 +2375,8 @@ { "kanaIn": "ませんでした", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -2384,96 +2384,96 @@ { "kanaIn": "いませんでした", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きませんでした", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きませんでした", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "ぎませんでした", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "しませんでした", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "しませんでした", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "ちませんでした", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "にませんでした", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "びませんでした", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "みませんでした", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "りませんでした", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "くありませんでした", "kanaOut": "い", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "adj-i" ] } @@ -2482,8 +2482,8 @@ { "kanaIn": "ましょう", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -2491,88 +2491,88 @@ { "kanaIn": "いましょう", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きましょう", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "きましょう", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "ぎましょう", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "しましょう", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "しましょう", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] }, { "kanaIn": "ちましょう", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "にましょう", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "びましょう", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "みましょう", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "りましょう", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] } @@ -2581,90 +2581,90 @@ { "kanaIn": "える", "kanaOut": "う", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "ける", "kanaOut": "く", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "げる", "kanaOut": "ぐ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "せる", "kanaOut": "す", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "てる", "kanaOut": "つ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "ねる", "kanaOut": "ぬ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "べる", "kanaOut": "ぶ", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "める", "kanaOut": "む", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v5" ] }, { "kanaIn": "れる", "kanaOut": "る", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v1", "v5", "vk" @@ -2673,10 +2673,10 @@ { "kanaIn": "これる", "kanaOut": "くる", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "vk" ] } @@ -2685,10 +2685,10 @@ { "kanaIn": "られる", "kanaOut": "る", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "v1", "v5", "vk" @@ -2697,10 +2697,10 @@ { "kanaIn": "こられる", "kanaOut": "くる", - "tagsIn": [ + "rulesIn": [ "v1" ], - "tagsOut": [ + "rulesOut": [ "vk" ] } @@ -2709,72 +2709,72 @@ { "kanaIn": "おう", "kanaOut": "う", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "こう", "kanaOut": "く", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ごう", "kanaOut": "ぐ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "そう", "kanaOut": "す", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "とう", "kanaOut": "つ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "のう", "kanaOut": "ぬ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "ぼう", "kanaOut": "ぶ", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "もう", "kanaOut": "む", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "よう", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v1", "vk" ] @@ -2782,24 +2782,24 @@ { "kanaIn": "ろう", "kanaOut": "る", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "v5" ] }, { "kanaIn": "こよう", "kanaOut": "くる", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vk" ] }, { "kanaIn": "しよう", "kanaOut": "する", - "tagsIn": [], - "tagsOut": [ + "rulesIn": [], + "rulesOut": [ "vs" ] } diff --git a/ext/bg/js/deinflector.js b/ext/bg/js/deinflector.js index 5cfb7f75..5ed191cd 100644 --- a/ext/bg/js/deinflector.js +++ b/ext/bg/js/deinflector.js @@ -23,24 +23,25 @@ class Deinflection { this.term = term; this.rules = rules; this.reason = reason; + this.definitions = []; } - deinflect(validator, reasons, entry=false) { + deinflect(definer, reasons, entry=false) { const validate = () => { - if (entry) { - return Promise.resolve(true); - } - - return validator(this.term).then(sets => { - for (const rules of sets) { + return definer(this.term).then(definitions => { + if (entry) { + this.definitions = definitions; + } else { for (const rule of this.rules) { - if (rules.includes(rule)) { - return true; + for (const definition of definitions) { + if (definition.rules.includes(rule)) { + this.definitions.push(definition); + } } } } - return false; + return this.definitions.length > 0; }); }; @@ -74,7 +75,7 @@ class Deinflection { const child = new Deinflection(term, variant.rulesOut, reason); promises.push( - child.deinflect(validator, reasons).then(valid => { + child.deinflect(definer, reasons).then(valid => { if (valid) { this.children.push(child); } @@ -90,12 +91,18 @@ class Deinflection { gather() { if (this.children.length === 0) { - return [{root: this.term, rules: this.rules, reasons: []}]; + return [{ + root: this.term, + rules: this.rules, + definitions: this.definitions, + reasons: [] + }]; } const paths = []; for (const child of this.children) { for (const path of child.gather()) { + path.definitions = path.definitions.concat(this.definitions); if (this.reason.length > 0) { path.reasons.push(this.reason); } @@ -119,8 +126,8 @@ class Deinflector { this.reasons = reasons; } - deinflect(term, validator) { + deinflect(term, definer) { const node = new Deinflection(term); - return node.deinflect(validator, this.reasons, true).then(success => success ? node.gather() : []); + return node.deinflect(definer, this.reasons, true).then(success => success ? node.gather() : []); } } diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index 7d19b5f9..472211e0 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -88,68 +88,41 @@ class Translator { } findDeinflectionGroups(text, dictionaries) { - const deinflectionGroups = {}; - const deinflectionPromises = []; + const definer = term => this.database.findTerm(term, dictionaries); + const groups = {}; + const promises = []; for (let i = text.length; i > 0; --i) { - deinflectionPromises.push( - this.deinflector.deinflect(text.slice(0, i), term => { - return this.database.findTerm(term, dictionaries).then(definitions => definitions.map(definition => definition.rules)); - }).then(deinflections => { - const processPromises = []; + promises.push( + this.deinflector.deinflect(text.slice(0, i), definer).then(deinflections => { for (const deinflection of deinflections) { - processPromises.push( - this.processDeinflection( - deinflectionGroups, - deinflection.source, - deinflection.rules, - deinflection.reasons, - deinflection.root, - dictionaries - ) - ); + this.processDeinflection(groups, deinflection); } - - return Promise.all(processPromises); }) ); } - return Promise.all(deinflectionPromises).then(() => deinflectionGroups); + return Promise.all(promises).then(() => groups); } - processDeinflection(groups, source, rules, reasons, root, dictionaries) { - return this.database.findTerm(root, dictionaries).then(definitions => { - for (const definition of definitions) { - if (definition.id in groups) { - continue; - } - - let matched = rules.length === 0; - for (const rule of rules) { - if (definition.rules.includes(rule)) { - matched = true; - break; - } - } - - if (!matched) { - continue; - } - - const tags = definition.tags.map(tag => buildTag(tag, definition.tagMeta)); - groups[definition.id] = { - source, - reasons, - score: definition.score, - dictionary: definition.dictionary, - expression: definition.expression, - reading: definition.reading, - glossary: definition.glossary, - tags: sortTags(tags) - }; + processDeinflection(groups, {source, rules, reasons, root, definitions}, dictionaries) { + for (const definition of definitions) { + if (definition.id in groups) { + continue; } - }); + + const tags = definition.tags.map(tag => buildTag(tag, definition.tagMeta)); + groups[definition.id] = { + source, + reasons, + score: definition.score, + dictionary: definition.dictionary, + expression: definition.expression, + reading: definition.reading, + glossary: definition.glossary, + tags: sortTags(tags) + }; + } } processKanji(definitions) { |