summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/string.fnl8
-rw-r--r--parser/parser.fnl2
-rw-r--r--spellfix.fnl503
3 files changed, 243 insertions, 270 deletions
diff --git a/lib/string.fnl b/lib/string.fnl
index ca29da0..1696a64 100644
--- a/lib/string.fnl
+++ b/lib/string.fnl
@@ -8,8 +8,8 @@
(= "string" (type str))
(string.format "letters(): str must be string, %s given" (type str)))
(var result [])
- (for [i 1 (must (luna.utf.len str))]
- (table.insert result (must (luna.utf.sub str i 1))))
+ (for [i 1 (must (luna.utf8.len str))]
+ (table.insert result (must (luna.utf8.sub str i 1))))
result)
(fn split [str]
@@ -27,9 +27,9 @@
(fn truncate [str len ellipsis]
(if (and (= (type str) "string")
(< 0 (# str)))
- (if (< (must (luna.utf.len str)) len)
+ (if (< (must (luna.utf8.len str)) len)
str
- (.. (trim (must (luna.utf.sub str 1 len))) (or ellipsis "...")))
+ (.. (trim (must (luna.utf8.sub str 1 len))) (or ellipsis "...")))
""))
{: letters : empty? : split : ends-with : trim : truncate}
diff --git a/parser/parser.fnl b/parser/parser.fnl
index 97cc6e7..acc8a19 100644
--- a/parser/parser.fnl
+++ b/parser/parser.fnl
@@ -107,7 +107,7 @@
;; FIXME: make guessing case insensitive
(fn guess-tags [text]
- (local text (if text (must (luna.utf.lower text)) ""))
+ (local text (if text (must (luna.utf8.lower text)) ""))
(if (: (anywhere (peg.P "зеленый чай")) :match text)
["Зеленый чай"]
diff --git a/spellfix.fnl b/spellfix.fnl
index 24d381c..00642ac 100644
--- a/spellfix.fnl
+++ b/spellfix.fnl
@@ -3,179 +3,169 @@
(local str (require :lib.string))
(local {: must} (require :lib.utils))
-(local vocabulary ["абрикосовый" "агар" "агарвуд" "агат" "агатис" "алая" "али"
- "алишань" "алтарь" "альба" "амазонка" "аметист" "амино"
- "антивирус" "антиквариат" "антикварный" "антилопа" "ань"
- "аньси" "аньхуа" "аравана" "арахис" "арахисом" "арован"
- "арована" "аромат" "ароматный" "ароматов" "ароматы" "архат"
- "архатов" "архаты" "ассортименте" "асфальт" "атомы"
- "атрибуты" "аура" "бабочка" "бабочки" "багрянник" "базальт"
- "базовая" "бай" "бакелит" "баклажан" "баклажане" "бамбук"
- "бамбука" "бамбуке" "бамбуковая" "бамбуковые" "бамбуковый"
- "бан" "банвэй" "бандун" "банка" "бань" "бао" "баоянь"
- "барабанчик" "баран" "бацзе" "бегемот" "бежевая" "бежевый"
+(local vocabulary ["агар" "агарвуд" "агат" "агатис" "али" "алишань" "алтарь"
+ "альба" "амазонка" "аметист" "амино" "антивирус"
+ "антиквариат" "антикварный" "антилопа" "ань" "аньси"
+ "аньхуа" "аравана" "арахис" "арахисом" "арован" "арована"
+ "аромат" "ароматный" "архат" "асфальт" "атомы" "атрибуты"
+ "аура" "бабочка" "бабочки" "багрянник" "базальт" "базовая"
+ "бай" "бакелит" "баклажан" "бамбук" "бамбуковая"
+ "бамбуковые" "бамбуковый" "бан" "банвэй" "бандун" "банка"
+ "бань" "бао" "баоянь" "барабанчик" "баран" "бацзе" "бегемот"
"беззаботный" "бекас" "белая" "белые" "белый" "беседа"
- "беседка" "бесконечное" "бессмертие" "бессмертия"
- "бессмертных" "билочунь" "бин" "биндао" "бирюза"
- "благовоний" "благовония" "благоденствие" "благопожелание"
- "благостей" "ближе" "блик" "блин" "блина" "блэк" "блюдо"
- "бмм" "богатство" "богомол" "бодрящий" "бодхи"
- "бодхидхарма" "боковая" "большая" "большеротая" "больших"
+ "беседка" "бессмертие" "билочунь" "бин" "биндао" "бирюза"
+ "благовония" "благоденствие" "благопожелание" "ближе" "блик"
+ "блин" "блэк" "блюдо" "богатство" "богомол" "бодрящий"
+ "бодхи" "бодхидхарма" "боковая" "большая" "большеротая"
"большое" "большой" "борец" "бохун" "бочонка" "бочонок"
- "браслет" "бронза" "бронзовая" "будда" "будде" "будды"
- "будет" "буйвол" "булан" "бульдог" "бумаги" "буонарроти"
- "бусин" "бусина" "бусинмм" "бусины" "бутон" "бутылка"
- "бутылки" "бхмм" "бык" "быки" "быть" "бьянка" "бэй"
- "бюрюза" "бяо" "ваджра" "ваза" "вазочка" "вальдшнеп" "ван"
- "вань" "варки" "васнецов" "ведрко" "великая" "великий"
- "венге" "версия" "весеннее" "весенние" "весна" "весны"
- "весы" "ветвях" "ветка" "ветке" "веточка" "вечным" "вижу"
- "виктор" "винил" "винсент" "вишнвое" "вместе" "внеземной"
- "вода" "водопад" "воды" "водяная" "водяной" "волнам"
- "воробей" "воробьиные" "восемь" "восьми" "врата"
+ "браслет" "бронза" "бронзовая" "будда" "будды" "буйвол"
+ "булан" "бульдог" "буонарроти" "бусин" "бусина" "бусины"
+ "бутон" "бутылка" "бутылки" "бык" "быки" "быть" "бьянка"
+ "бэй" "бюрюза" "бяо" "ваджра" "ваза" "вазочка" "вальдшнеп"
+ "ван" "вань" "варки" "васнецов" "ведерко" "ведро" "великая"
+ "великий" "венге" "версия" "весеннее" "весенние" "весна"
+ "весны" "весы" "ветвях" "ветка" "ветке" "веточка" "вечным"
+ "вижу" "виктор" "винил" "винсент" "вишнвое" "вместе"
+ "внеземной" "вода" "водопад" "воды" "водяная" "водяной"
+ "волнам" "воробей" "воробьиные" "восемь" "восьми" "врата"
"встроенным" "выдвижным" "выдержанный" "выращивание"
- "высокая" "высокий" "высокой" "высокотемпературный"
- "высший" "вьюнки" "вэй" "вэн" "вэнь" "габа" "габаулун"
- "габашен" "гайван" "гайвань" "гайваньсиборидаси" "галька"
- "гамма" "ган" "гань" "гао" "гаомиду" "гаошань" "гармония"
- "гаруда" "гвоздика" "ггр" "гейша" "геккон" "гималайский"
- "гинкго" "главных" "гладкий" "глаз" "глазурь" "глазурью"
+ "высокая" "высокий" "высокотемпературный" "высший" "вьюнки"
+ "вэй" "вэн" "вэнь" "габа" "габаулун" "габашен" "гайвань"
+ "галька" "гамма" "ган" "гань" "гао" "гаомиду" "гаошань"
+ "гармония" "гаруда" "гвоздика" "гейша" "геккон"
+ "гималайский" "гинкго" "главных" "гладкий" "глаз" "глазурь"
"глина" "глины" "глициния" "гог" "год" "годов" "гои"
- "голова" "головы" "голубая" "голубой" "голубь" "гор" "гора"
- "горах" "горизонтом" "горная" "горном" "горный" "горшок"
- "горшочек" "горы" "гоу" "грамм" "гранат" "гранатами"
- "граненый" "графит" "грецкий" "гриб" "грибной" "грибом"
- "грибы" "грин" "грифовая" "груша" "грушевый" "гуа" "гуан"
- "гуанси" "гуань" "гуаньинь" "гуй" "гун" "гунтин" "гунфу"
- "гуси" "густав" "гусь" "гушу" "гэланхэ" "дабайхао"
- "дабайча" "дали" "дан" "дань" "дао" "даос" "даоское"
- "дарума" "дарумы" "дарующий" "дары" "дасюэшань" "дахунпао"
- "два" "двоих" "двойное" "дворянский" "денежная" "день"
- "дерева" "деревня" "дерево" "деревьев" "деревянная"
- "деревянном" "деревянный" "деревянным" "дескрипторов"
- "дети" "джу" "джэй" "дикая" "дикие" "дикий" "диких"
- "дикого" "дикой" "дин" "динь" "диск" "длинный" "для" "дном"
- "добродушный" "долголетие" "долголетия" "дораэмон" "доска"
- "достаток" "доу" "драгоценная" "дракон" "дракона"
+ "голова" "голубая" "голубой" "голубь" "гор" "гора" "горах"
+ "горизонтом" "горная" "горном" "горный" "горшок" "горшочек"
+ "горы" "гоу" "грамм" "гранат" "граненый" "графит" "грецкий"
+ "гриб" "грибной" "грибом" "грибы" "грин" "грифовая" "груша"
+ "грушевый" "гуа" "гуан" "гуанси" "гуань" "гуаньинь" "гуй"
+ "гун" "гунтин" "гунфу" "гуси" "густав" "гусь" "гушу"
+ "гэланхэ" "дабайхао" "дабайча" "дали" "дан" "дань" "дао"
+ "даос" "даоское" "дарума" "дарумы" "дарующий" "дары"
+ "дасюэшань" "дахунпао" "два" "двоих" "двойное" "дворянский"
+ "денежная" "день" "дерева" "деревня" "дерево" "деревьев"
+ "деревянная" "деревянном" "деревянный" "деревянным"
+ "дескрипторов" "дети" "джу" "джэй" "дикая" "дикие" "дикий"
+ "диких" "дикого" "дикой" "дин" "динь" "диск" "длинный" "для"
+ "дном" "добродушный" "долголетие" "долголетия" "дораэмон"
+ "доска" "достаток" "доу" "драгоценная" "дракон" "дракона"
"драконом" "драконхранитель" "драконы" "древа" "древесина"
"древний" "дровяной" "дуань" "дуаньни" "дун" "дух" "дымка"
"дьен" "дэхуа" "дянь" "дяньхун" "дяочань" "европейский"
"естественность" "жаба" "жабадракон" "жабе" "жан" "жаровня"
"жасминовый" "жезл" "жезлом" "железо" "желтая" "желтые"
- "желтый" "жемчуг" "жемчужина" "жемчужиной" "жемчужины"
- "жен" "жень" "жернов" "жертвенный" "жесть" "жестяная"
- "жидкое" "жизнь" "жлтая" "жлтой" "жлтый" "жоу" "жуйтюань"
- "жунтянь" "журавлей" "журавли" "журавль" "жэнь" "забором"
- "заваривай" "заваривания" "заварочная" "заварочный"
- "завертка" "загадка" "зайчик" "заря" "затерянные"
- "затеряться" "заяц" "звезда" "зверк" "зеленая" "зеленый"
- "зелная" "зелное" "зелной" "зелные" "зелный" "земли"
- "земляники" "земной" "зернами" "зимний" "зимняя"
- "зимородок" "зип" "знакомства" "знакомство" "значок"
- "золота" "золотая" "золоте" "золотистая" "золотистый"
- "золото" "золотое" "золотой" "золотом" "золотые" "золотым"
- "зрнах" "игла" "иглы" "игра" "играют" "игрунка" "иероглиф"
- "иероглифы" "извергающая" "изгиб" "изобилия" "изображением"
- "изогнутый" "изумрудная" "изумрудные" "изящество" "или"
- "император" "императора" "индэ" "инженерное" "инкрустацией"
- "инструмент" "инструментов" "инструменты" "инь" "исинская"
- "исинский" "исинской" "искусство" "истинная" "истинно"
- "история" "йеллоу" "йон" "йоу" "каждый" "каи" "каллиграфии"
- "каллиграфия" "камень" "камне" "камня" "камфара"
- "камфорный" "камфоры" "као" "капля" "капюшоне" "карамель"
- "карамельный" "карпы" "картина" "картины" "кашпо"
- "каштановая" "каштаны" "квадрат" "квадратная" "квадратное"
- "квадратный" "кварц" "кедр" "керамика" "керамики" "кибер"
- "киноварная" "киноварный" "киноварь" "киноварьбхмм"
- "кипячения" "кирпич" "кирпичик" "кисет" "кистей" "кисть"
- "китайский" "китайским" "классика" "классическая" "клетка"
- "климт" "клипса" "книгами" "кнопкой" "коала" "кобальт"
- "кобальтовая" "кобальтовые" "кобальтовый" "ковка" "кожа"
- "колба" "колбы" "коленце" "коллекционная" "колодец"
- "колокол" "колосья" "колотый" "кольцами" "кольцо" "кольцом"
- "комбо" "комковой" "комплект" "конверт" "консоль" "контур"
- "конусов" "коралл" "корень" "корзина" "корзинка" "корица"
- "коричневая" "коричневое" "коричневый" "кормилица"
- "коробка" "коробке" "коробочка" "коробочке" "корпусе"
- "кости" "кость" "костяной" "кот" "котелок" "котик" "котики"
- "котнок" "краб" "крабы" "край" "красавица" "красная"
- "краснобелый" "красного" "красное" "красной" "красносиний"
- "красные" "красный" "красных" "кратер" "крафткартон"
- "креветка" "креветки" "кристалл" "кровавый" "кровать"
- "кролик" "кролики" "крольчонок" "круг" "круглая" "круглое"
- "круглый" "круглым" "кружка" "крупная" "крыло" "крыса"
- "крыски" "крышки" "крышкой" "крышку" "крышу" "куан" "кубок"
- "кувшин" "кузнечик" "куй" "культура" "кун" "кунь" "купаж"
+ "желтый" "жемчуг" "жемчужина" "жемчужиной" "жемчужины" "жен"
+ "жень" "жернов" "жертвенный" "жесть" "жестяная" "жидкое"
+ "жизнь" "жлтая" "жлтой" "жлтый" "жоу" "жуйтюань" "жунтянь"
+ "журавлей" "журавли" "журавль" "жэнь" "забором" "заваривай"
+ "заваривания" "заварочная" "заварочный" "завертка" "загадка"
+ "зайчик" "заря" "затерянные" "затеряться" "заяц" "звезда"
+ "зверк" "зеленая" "зеленый" "зелная" "зелное" "зелной"
+ "зелные" "зелный" "земли" "земляники" "земной" "зернами"
+ "зимний" "зимняя" "зимородок" "зип" "знакомства"
+ "знакомство" "значок" "золота" "золотая" "золоте"
+ "золотистая" "золотистый" "золото" "золотое" "золотой"
+ "золотом" "золотые" "золотым" "зрнах" "игла" "иглы" "игра"
+ "играют" "игрунка" "иероглиф" "иероглифы" "извергающая"
+ "изгиб" "изобилия" "изображением" "изогнутый" "изумрудная"
+ "изумрудные" "изящество" "или" "император" "императора"
+ "индэ" "инженерное" "инкрустацией" "инструмент"
+ "инструментов" "инструменты" "инь" "исинская" "исинский"
+ "исинской" "искусство" "истинная" "истинно" "история"
+ "йеллоу" "йон" "йоу" "каждый" "каи" "каллиграфии"
+ "каллиграфия" "камень" "камне" "камня" "камфара" "камфорный"
+ "камфоры" "као" "капля" "капюшоне" "карамель" "карамельный"
+ "карпы" "картина" "картины" "кашпо" "каштановая" "каштаны"
+ "квадрат" "квадратная" "квадратное" "квадратный" "кварц"
+ "кедр" "керамика" "керамики" "кибер" "киноварная"
+ "киноварный" "киноварь" "киноварьбхмм" "кипячения" "кирпич"
+ "кирпичик" "кисет" "кистей" "кисть" "китайский" "китайским"
+ "классика" "классическая" "клетка" "климт" "клипса"
+ "книгами" "кнопкой" "коала" "кобальт" "кобальтовая"
+ "кобальтовые" "кобальтовый" "ковка" "кожа" "колба" "колбы"
+ "коленце" "коллекционная" "колодец" "колокол" "колосья"
+ "колотый" "кольцами" "кольцо" "кольцом" "комбо" "комковой"
+ "комплект" "конверт" "консоль" "контур" "конусов" "коралл"
+ "корень" "корзина" "корзинка" "корица" "коричневая"
+ "коричневое" "коричневый" "кормилица" "коробка" "коробке"
+ "коробочка" "коробочке" "корпусе" "кости" "кость" "костяной"
+ "кот" "котелок" "котик" "котики" "котнок" "краб" "крабы"
+ "край" "красавица" "красная" "краснобелый" "красного"
+ "красное" "красной" "красносиний" "красные" "красный"
+ "красных" "кратер" "крафткартон" "креветка" "креветки"
+ "кристалл" "кровавый" "кровать" "кролик" "кролики"
+ "крольчонок" "круг" "круглая" "круглое" "круглый" "круглым"
+ "кружка" "крупная" "крыло" "крыса" "крыски" "крышки"
+ "крышкой" "крышку" "крышу" "куан" "кубок" "кувшин"
+ "кузнечик" "куй" "культура" "кун" "кунь" "купаж"
"курильница" "куропатка" "куропатки" "кучжушань" "кха"
"лабранг" "лавр" "лазуревая" "лазурит" "лазурь" "лак"
"лаконичная" "лаконичное" "лаконичный" "лампада" "лан"
- "лань" "ланьбмм" "ланьянь" "лао" "лаодуань" "лаошу"
- "латунь" "лев" "лед" "ледяная" "лежанка" "лепестки"
- "лепешка" "лес" "леса" "лесная" "лесной" "летающая"
- "летний" "летучая" "летучей" "летучие" "ликов" "лилия"
- "лимин" "лин" "линчжи" "линь" "линьцан" "линьцана" "лист"
- "листве" "листе" "листопад" "листья" "листьях" "личи"
- "лодка" "лопаточка" "лоск" "лотос" "лотоса" "лотосе"
- "лотосовом" "лотосовый" "лотосом" "лотосы" "лошадей"
- "лошадь" "лун" "луна" "лунная" "лунный" "луны" "львов"
- "львы" "льду" "любимого" "люйтан" "люкс" "люфа" "лягушка"
- "лягушки" "лян" "лянь" "магнолии" "магнолия" "магритт"
- "май" "майтрейя" "малая" "маленькая" "малые" "малый"
- "мальки" "мальчик" "мандарине" "мандаринки" "маньлан"
- "маньно" "мао" "маофэн" "марка" "мастер" "маття" "матура"
- "матча" "медитации" "медитирующий" "медная" "медный"
- "медовые" "медь" "между" "мей" "менхай" "менхайский"
- "меняющая" "металл" "металлик" "металлической" "мешочек"
- "микеланджело" "микрофибра" "мин" "миндаль" "мини"
+ "лань" "ланьбмм" "ланьянь" "лао" "лаодуань" "лаошу" "латунь"
+ "лев" "лед" "ледяная" "лежанка" "лепестки" "лепешка" "лес"
+ "леса" "лесная" "лесной" "летающая" "летний" "летучая"
+ "летучей" "летучие" "ликов" "лилия" "лимин" "лин" "линчжи"
+ "линь" "линьцан" "линьцана" "лист" "листве" "листе"
+ "листопад" "листья" "листьях" "личи" "лодка" "лопаточка"
+ "лоск" "лотос" "лотоса" "лотосе" "лотосовом" "лотосовый"
+ "лотосом" "лотосы" "лошадей" "лошадь" "лун" "луна" "лунная"
+ "лунный" "луны" "львов" "львы" "льду" "любимого" "люйтан"
+ "люкс" "люфа" "лягушка" "лягушки" "лян" "лянь" "магнолии"
+ "магнолия" "магритт" "май" "майтрейя" "малая" "маленькая"
+ "малые" "малый" "мальки" "мальчик" "мандарине" "мандаринки"
+ "маньлан" "маньно" "мао" "маофэн" "марка" "мастер" "маття"
+ "матура" "матча" "медитации" "медитирующий" "медная"
+ "медный" "медовые" "медь" "между" "мей" "менхай"
+ "менхайский" "меняющая" "металл" "металлик" "металлической"
+ "мешочек" "микеланджело" "микрофибра" "мин" "миндаль" "мини"
"мининабор" "миниточа" "минитун" "минцзян" "мир" "мира"
"мистер" "ммб" "мокрый" "моллюск" "молочная" "монах"
"монетами" "монете" "монетка" "монеты" "мопс" "море" "моша"
"мощный" "мощь" "мудрец" "мудрый" "мун" "муравей" "мушмула"
- "мыши" "мышки" "мышонок" "мышь" "мышью" "мэй" "мэйхуа"
- "мэн" "мэнку" "мэнсун" "мэнхай" "мэнхайская" "мэнхая"
- "мятный" "набор" "награда" "нака" "наклейки" "нан" "нань"
- "наньно" "наньтоу" "наполированный" "наработанный"
- "нарухина" "нарцисс" "нарциссы" "наследие" "настроение"
- "натюрморт" "наук" "начало" "небесной" "небесный" "небо"
- "неведомый" "нежная" "нежный" "нектар" "нержавеющая"
- "нефрит" "нефритовая" "нефритовое" "нижним" "низкий"
- "нитка" "нить" "новая" "новый" "нож" "ножках" "ножке" "нос"
- "ночи" "ночь" "нун" "нюгай" "оазис" "обеденный" "обезьян"
- "обезьянка" "обезьянки" "обезьяны" "обжиг" "облака"
- "облаками" "облаках" "облако" "ободком" "обратных"
- "обсидиан" "овал" "овальная" "овальный" "огненная"
- "огнеупорная" "огнеупорного" "огнеупорное" "одуванчик"
- "озера" "окаменелая" "океана" "окихиро" "округлый"
- "олдскул" "олень" "олово" "оплетка" "оплеткой" "оплткой"
- "оранжевой" "оранжевый" "органик" "органическая" "орех"
- "орехи" "ореховый" "орнамент" "орнаментом" "орхидеи"
- "орхидея" "осень" "осетр" "османтус" "основных" "особая"
- "отбивное" "отдых" "охраняющий" "очиститель" "пабло"
- "павлин" "пакет" "пакетов" "палисандр" "палисандра"
- "палочка" "палочки" "панда" "панцирь" "пань" "пао" "пара"
- "парный" "пару" "парча" "патра" "пачка" "пейзаж"
- "пейзажная" "пеликан" "первый" "перепелиное"
- "перепрыгивают" "перламутром" "персик" "персика" "персике"
- "персики" "персиковый" "персиком" "персон" "персоны"
- "петух" "печать" "пиал" "пиала" "пиалу" "пиалы" "пикассо"
- "пин" "пиньгэ" "пион" "пиона" "пионы" "пирамида" "письмо"
- "пламя" "плант" "плантационный" "плантация" "пластиковое"
- "пластиковым" "пластина" "пластинки" "плато" "плетеное"
- "плетное" "плетной" "плитка" "плоды" "пломбир" "плоская"
- "побеги" "погружение" "под" "подарочная" "подарочной"
- "подачей" "подводный" "поддоном" "поднос" "подносом"
- "подсвечник" "подставка" "подставкаподогреватель"
- "подставке" "подставки" "подставкой" "подушкой" "познания"
- "покой" "поколений" "покров" "полной" "полный" "полотенце"
- "полотно" "полочка" "полуавтоматическая" "полудикий"
- "полудиких" "полусладкий" "помпа" "пороснок" "постижение"
- "посуды" "поталь" "походная" "походный" "почка" "праздник"
- "предел" "предмет" "предметов" "премиум" "пресс" "природе"
- "пробуждение" "прозрачная" "прозрачный" "прохладе"
- "процветание" "прочность" "пруд" "пруду" "пряжка"
- "прямоугольная" "прямоугольный" "прятки" "птица" "птицы"
- "птички" "пурпур" "пурпурный" "путь" "пушинка" "пуэр"
- "пуэра" "пуэрмобиль" "пуэров" "пчела" "пышная" "пяо"
+ "мыши" "мышки" "мышонок" "мышь" "мышью" "мэй" "мэйхуа" "мэн"
+ "мэнку" "мэнсун" "мэнхай" "мэнхайская" "мэнхая" "мятный"
+ "набор" "награда" "нака" "наклейки" "нан" "нань" "наньно"
+ "наньтоу" "наполированный" "наработанный" "нарухина"
+ "нарцисс" "нарциссы" "наследие" "настроение" "натюрморт"
+ "наук" "начало" "небесной" "небесный" "небо" "неведомый"
+ "нежная" "нежный" "нектар" "нержавеющая" "нефрит"
+ "нефритовая" "нефритовое" "нижним" "низкий" "нитка" "нить"
+ "новая" "новый" "нож" "ножках" "ножке" "нос" "ночи" "ночь"
+ "нун" "нюгай" "оазис" "обеденный" "обезьян" "обезьянка"
+ "обезьянки" "обезьяны" "обжиг" "облака" "облаками" "облаках"
+ "облако" "ободком" "обратных" "обсидиан" "овал" "овальная"
+ "овальный" "огненная" "огнеупорная" "огнеупорного"
+ "огнеупорное" "одуванчик" "озера" "окаменелая" "океана"
+ "окихиро" "округлый" "олдскул" "олень" "олово" "оплетка"
+ "оранжевый" "органик" "органическая" "орех" "орехи"
+ "ореховый" "орнамент" "орнаментом" "орхидеи" "орхидея"
+ "осень" "осетр" "османтус" "основных" "особая" "отдых"
+ "охраняющий" "очиститель" "пабло" "павлин" "пакет" "пакетов"
+ "палисандр" "палисандра" "палочка" "палочки" "панда"
+ "панцирь" "пань" "пао" "пара" "парный" "пару" "парча"
+ "патра" "пачка" "пейзаж" "пейзажная" "пеликан" "первый"
+ "перепелиное" "перепрыгивают" "перламутром" "персик"
+ "персика" "персике" "персики" "персиковый" "персиком"
+ "персон" "персоны" "петух" "печать" "пиал" "пиала" "пиалу"
+ "пиалы" "пикассо" "пин" "пиньгэ" "пион" "пиона" "пионы"
+ "пирамида" "письмо" "пламя" "плант" "плантационный"
+ "плантация" "пластиковое" "пластиковым" "пластина"
+ "пластинки" "плато" "плетеное" "плетное" "плетной" "плитка"
+ "плоды" "пломбир" "плоская" "побеги" "погружение" "под"
+ "подарочная" "подарочной" "подачей" "подводный" "поддоном"
+ "поднос" "подносом" "подсвечник" "подставка"
+ "подставкаподогреватель" "подставке" "подставки"
+ "подставкой" "подушкой" "познания" "покой" "поколений"
+ "покров" "полной" "полный" "полотенце" "полотно" "полочка"
+ "полуавтоматическая" "полудикий" "полудиких" "полусладкий"
+ "помпа" "пороснок" "постижение" "посуды" "поталь" "походная"
+ "походный" "почка" "праздник" "предел" "предмет" "предметов"
+ "премиум" "пресс" "природе" "пробуждение" "прозрачная"
+ "прозрачный" "прохладе" "процветание" "прочность" "пруд"
+ "пруду" "пряжка" "прямоугольная" "прямоугольный" "прятки"
+ "птица" "птицы" "птички" "пурпур" "пурпурный" "путь"
+ "пушинка" "пуэр" "пуэрмобиль" "пчела" "пышная" "пяо"
"пятнистый" "пять" "работа" "работы" "радости" "разделки"
"размер" "размышлений" "райские" "раковина" "ранневесенний"
"распускающиеся" "распустившиеся" "расслабляющий"
@@ -189,70 +179,68 @@
"рыбка" "рыбки" "рыбой" "рыбы" "рыжая" "рыжий" "саванна"
"сад" "сакральной" "сакура" "саламандра" "салатовая"
"салфетница" "сандал" "сандала" "саоган" "сахарок" "сбор"
- "сверчок" "свет" "светлая" "светлое" "светлорыжая"
- "светлые" "светлый" "свинка" "свиньи" "свинья" "свитком"
- "связь" "священного" "северный" "секции" "селадон" "семена"
- "семь" "семян" "серая" "сердечки" "сердолик" "сердца"
- "сердце" "серебре" "серебро" "серебряная" "серебряные"
- "серия" "серое" "серый" "сиборидаси" "сигара" "сизоворонка"
- "сила" "силу" "символы" "син" "синебежевый" "синее" "синей"
- "синие" "синий" "синь" "синяя" "сипин" "сиреневый" "сито"
- "ситом" "сифон" "сияние" "склада" "скоропись" "скрученный"
+ "сверчок" "свет" "светлая" "светлое" "светлорыжая" "светлые"
+ "светлый" "свинка" "свиньи" "свинья" "свитком" "связь"
+ "священного" "северный" "секции" "селадон" "семена" "семь"
+ "семян" "серая" "сердечки" "сердолик" "сердца" "сердце"
+ "серебре" "серебро" "серебряная" "серебряные" "серия"
+ "серое" "серый" "сиборидаси" "сигара" "сизоворонка" "сила"
+ "силу" "символы" "син" "синебежевый" "синее" "синей" "синие"
+ "синий" "синь" "синяя" "сипин" "сиреневый" "сито" "ситом"
+ "сифон" "сияние" "склада" "скоропись" "скрученный"
"скульптура" "сладкий" "сладость" "слив" "слива" "сливник"
"сливы" "слитке" "слитком" "слово" "сложная" "слон"
"слоновой" "слоном" "слоны" "смола" "сна" "снежная"
"снежный" "собака" "советский" "совок" "совочек"
"согревающий" "солнца" "солнце" "сорт" "сосна" "сосны"
"сосуд" "спирали" "спираль" "спиртовка" "спокойствие"
- "спящий" "средняя" "стакан" "стакантермос" "сталь"
- "станция" "старая" "старого" "старое" "старый" "старых"
- "статуэтка" "стекла" "стекло" "стеклянная" "стекляный"
- "стикер" "стикерпак" "стикеры" "стиле" "стилов" "стиль"
- "сто" "стол" "столик" "столика" "стопы" "странствующий"
- "стрекоза" "строк" "стул" "стула" "ступа" "суаньджи" "суй"
- "сумка" "сумо" "сун" "сундук" "сунская" "сунском" "сунь"
- "суровая" "сутра" "сутры" "сухого" "сухое" "сферы"
- "счастливая" "счастливое" "счастливый" "счастье" "счастья"
- "сытый" "сюань" "сюнь" "сюэ" "сягуань" "сян" "сянь"
- "сяньхуа" "сяо" "тай" "тайванский" "тайвань" "тайваньская"
- "тайваньского" "тайхэ" "такинава" "тан" "танская" "танские"
- "танцуют" "тань" "тао" "тарелка" "тарзан" "творцы" "твоя"
- "тегуаньинь" "телец" "темная" "темное" "темнокоричневая"
- "тентяо" "термоз" "термос" "термоса" "термоскувшин" "тигр"
- "тигра" "тигровый" "тин" "типот" "тираж" "тисбмм" "титан"
- "титестера" "тишине" "ткань" "тмная" "тмное" "тмные"
- "тмный" "тобой" "тонкое" "тоу" "точа" "трав" "травы"
- "трапеция" "треножник" "трепет" "треугольная" "трехлапая"
- "три" "трио" "трионикс" "троих" "трон" "трона" "трубками"
- "трубкой" "трхлапая" "тулоу" "тун" "тунь" "тушечница"
- "тушью" "тхи" "тыква" "тьен" "тюльпан" "тяван" "тян" "тянь"
- "тяоша" "угря" "удачи" "узор" "улун" "улунов" "улуны"
- "улыбка" "уляншань" "упаковка" "уруши" "уся" "утешения"
- "утнок" "уточки" "утро" "утун" "ухват" "уцай" "учатся"
- "ушастый" "фан" "фаньгу" "фарфор" "фарфора" "фарфоровая"
- "феникс" "феникса" "фениксовый" "фермерский" "фигурка"
- "фильтрпакеты" "финиковый" "фиолетового" "фиолетовый"
- "фирма" "флакон" "форма" "формикарий" "фосян" "фруктовый"
- "фугу" "фудин" "фун" "футболка" "фуцзянь" "фуцзяньском"
- "фэй" "фэйчжоу" "фэн" "фэнхуан" "фэнцин" "фэншуй" "хай"
- "хайвань" "халат" "ханой" "хань" "ханьской" "хао" "хгр"
- "хищная" "хлопок" "хлопушками" "хлоритом" "хмм" "хомяк"
- "хороший" "хотеи" "хотей" "хотэй" "хоу" "хохин" "хранения"
- "хранящий" "хризантема" "хризантемы" "хрусталь" "хсм" "хуа"
- "хуан" "хуацзинань" "хун" "хунни" "хуолун" "хупитан"
- "хурма" "хурмы" "хуэй" "ххсм" "хэй" "хэйтан" "хэйхуали"
- "хэйча" "хэн" "хэтян" "хэхуань" "цан" "цаплей" "цапля"
- "царь" "цвет" "цвета" "цветами" "цветов" "цветок"
- "цветочки" "цветочная" "цветочный" "цветущие" "цветущий"
- "цветы" "целеустремленность" "цельная" "церемонии" "цза"
- "цзао" "цзе" "цзи" "цзин" "цзингу" "цзиндэчжень"
- "цзиндэчжэнь" "цзиндэчжэньгоры" "цзинмай" "цзиношань"
- "цзинь" "цзиньгу" "цзиньдечжень" "цзиньдэчжень"
- "цзиньдэчжэнь" "цзу" "цзун" "цзы" "цзыни" "цзытан" "цзю"
- "цзюй" "цзюнь" "цзюэнь" "цзя" "цзянь" "цзяньшуй"
- "цзяньшуйская" "цзяо" "цикада" "цикадки" "цикады" "цикл"
- "цилиндр" "цилинь" "цимень" "цин" "цинния" "цинхуа"
- "циньчжоу" "цуй" "цун" "цюй" "цюэ" "цяньлян" "цяо" "чабани"
+ "спящий" "средняя" "стакан" "стакантермос" "сталь" "станция"
+ "старая" "старого" "старое" "старый" "старых" "статуэтка"
+ "стекла" "стекло" "стеклянная" "стекляный" "стикер"
+ "стикерпак" "стикеры" "стиле" "стилов" "стиль" "сто" "стол"
+ "столик" "столика" "стопы" "странствующий" "стрекоза"
+ "строк" "стул" "стула" "ступа" "суаньджи" "суй" "сумка"
+ "сумо" "сун" "сундук" "сунская" "сунском" "сунь" "суровая"
+ "сутра" "сутры" "сухого" "сухое" "сферы" "счастливая"
+ "счастливое" "счастливый" "счастье" "счастья" "сытый"
+ "сюань" "сюнь" "сюэ" "сягуань" "сян" "сянь" "сяньхуа" "сяо"
+ "тай" "тайванский" "тайвань" "тайваньская" "тайваньского"
+ "тайхэ" "такинава" "тан" "танская" "танские" "танцуют"
+ "тань" "тао" "тарелка" "тарзан" "творцы" "твоя" "тегуаньинь"
+ "телец" "темная" "темное" "темнокоричневая" "тентяо"
+ "термоз" "термос" "термоса" "термоскувшин" "тигр" "тигра"
+ "тигровый" "тин" "типот" "тираж" "тисбмм" "титан"
+ "титестера" "тишине" "ткань" "тмная" "тмное" "тмные" "тмный"
+ "тобой" "тонкое" "тоу" "точа" "трав" "травы" "трапеция"
+ "треножник" "трепет" "треугольная" "трехлапая" "три" "трио"
+ "трионикс" "троих" "трон" "трона" "трубками" "трубкой"
+ "трхлапая" "тулоу" "тун" "тунь" "тушечница" "тушью" "тхи"
+ "тыква" "тьен" "тюльпан" "тяван" "тян" "тянь" "тяоша" "угря"
+ "удачи" "узор" "улун" "улыбка" "уляншань" "упаковка" "уруши"
+ "уся" "утешения" "утнок" "уточки" "утро" "утун" "ухват"
+ "уцай" "учатся" "ушастый" "фан" "фаньгу" "фарфор" "фарфора"
+ "фарфоровая" "феникс" "фермерский" "фигурка" "фильтрпакеты"
+ "финиковый" "фиолетового" "фиолетовый" "фирма" "флакон"
+ "форма" "формикарий" "фосян" "фруктовый" "фугу" "фудин"
+ "фун" "футболка" "фуцзянь" "фуцзяньском" "фэй" "фэйчжоу"
+ "фэн" "фэнхуан" "фэнцин" "фэншуй" "хай" "хайвань" "халат"
+ "ханой" "хань" "ханьской" "хао" "хгр" "хищная" "хлопок"
+ "хлопушками" "хлоритом" "хмм" "хомяк" "хороший" "хотеи"
+ "хотей" "хотэй" "хоу" "хохин" "хранения" "хранящий"
+ "хризантема" "хризантемы" "хрусталь" "хсм" "хуа" "хуан"
+ "хуацзинань" "хун" "хунни" "хуолун" "хупитан" "хурма"
+ "хурмы" "хуэй" "ххсм" "хэй" "хэйтан" "хэйхуали" "хэйча"
+ "хэн" "хэтян" "хэхуань" "цан" "цаплей" "цапля" "царь" "цвет"
+ "цвета" "цветами" "цветов" "цветок" "цветочки" "цветочная"
+ "цветочный" "цветущие" "цветущий" "цветы"
+ "целеустремленность" "цельная" "церемонии" "цза" "цзао"
+ "цзе" "цзи" "цзин" "цзингу" "цзиндэчжень" "цзиндэчжэнь"
+ "цзиндэчжэньгоры" "цзинмай" "цзиношань" "цзинь" "цзиньгу"
+ "цзиньдечжень" "цзиньдэчжень" "цзиньдэчжэнь" "цзу" "цзун"
+ "цзы" "цзыни" "цзытан" "цзю" "цзюй" "цзюнь" "цзюэнь" "цзя"
+ "цзянь" "цзяньшуй" "цзяньшуйская" "цзяо" "цикада" "цикадки"
+ "цикады" "цикл" "цилиндр" "цилинь" "цимень" "цин" "цинния"
+ "цинхуа" "циньчжоу" "цуй" "цун" "цюй" "цюэ" "цяньлян" "цяо"
"чабань" "чаегуань" "чаем" "чаепития" "чай" "чайнатаун"
"чайная" "чайник" "чайника" "чайники" "чайником"
"чайниксифон" "чайница" "чайничек" "чайного" "чайное"
@@ -263,42 +251,42 @@
"черный" "черпак" "четки" "четыре" "чехлом" "чжай" "чжан"
"чжанлан" "чжань" "чжаоцзюнь" "чжен" "чжень" "чжи" "чжима"
"чжу" "чжуань" "чжун" "чжуни" "чжэн" "чжэнь" "чизкейк"
- "чилл" "чин" "чиновника" "чиновников" "чицзыму" "чоу"
- "чрная" "чрное" "чрный" "чтки" "чток" "чугун" "чудо" "чун"
- "чунь" "чуньхуа" "чха" "чхан" "чхин" "чхэн" "чхэнсян" "чэн"
- "чэнь" "чэньсян" "чэньсяо" "шай" "шайхун" "шан" "шань"
- "шар" "шаром" "шары" "шен" "шестигранный" "шестиугольник"
- "шило" "шипяо" "шисянь" "шиюань" "шкатулка" "шкаф"
- "шкафчик" "школа" "шнурок" "шоколад" "шоу" "шрек" "шуй"
- "шуйпин" "шуйсянь" "шумахер" "шупу" "шурикен" "шутливый"
- "шуэй" "шэн" "шэнтай" "шэнши" "щипцы" "экстра"
- "электрический" "электронные" "элементов" "юйчэн" "юлэ"
- "юндэ" "юнь" "юньнани" "юньнань" "юпитер" "юэнань" "яблоко"
- "ядерный" "язычки" "яйцо" "якотза" "яма" "янгуйфэй"
- "янтарная" "янтарь" "янтаряв" "янь" "японская" "японский"
- "ясный" "яшма"])
+ "чилл" "чин" "чицзыму" "чоу" "чрная" "чрное" "чрный" "чтки"
+ "чток" "чугун" "чудо" "чун" "чунь" "чуньхуа" "чха" "чхан"
+ "чхин" "чхэн" "чхэнсян" "чэн" "чэнь" "чэньсян" "чэньсяо"
+ "шай" "шайхун" "шан" "шань" "шар" "шен" "шестиугольник"
+ "шило" "шипяо" "шисянь" "шиюань" "шкатулка" "шкаф" "шкафчик"
+ "школа" "шнурок" "шоколад" "шоу" "шрек" "шуй" "шуйпин"
+ "шуйсянь" "шумахер" "шупу" "шурикен" "шутливый" "шуэй" "шу"
+ "шэн" "шэнтай" "шэнши" "щипцы" "экстра" "электрический"
+ "электронные" "элементов" "юйчэн" "юлэ" "юндэ" "юнь"
+ "юньнань" "юпитер" "юэнань" "яблоко" "язычки" "яйцо"
+ "якотза" "яма" "янгуйфэй" "янтарь" "янь"
+ "японский" "яшма"])
(fn levenshtein [str1 str2]
- (let [len1 (must (luna.utf.len str1))
- len2 (must (luna.utf.len str2))
- matrix {}]
- (var cost 0)
- (if (= len1 0) (lua "return len2")
- (= len2 0) (lua "return len1")
- (= str1 str2) (lua "return 0"))
- (for [i 0 len1] (tset matrix i {}) (tset (. matrix i) 0 i))
- (for [j 0 len2] (tset (. matrix 0) j j))
- (for [i 1 len1]
- (for [j 1 len2]
- (if (= (must (luna.utf.sub str1 i 1)) (must (luna.utf.sub str2 j 1)))
- (set cost 0) (set cost 1))
- (tset (. matrix i) j
- (math.min (+ (. matrix (- i 1) j) 1) (+ (. matrix i (- j 1)) 1)
- (+ (. matrix (- i 1) (- j 1)) cost)))))
- (. matrix len1 len2)))
-
-(fn diff-letters [str1 str2]
- (# (array.diff (str.letters str1) (str.letters str2))))
+ (local len1 (must (luna.utf8.len str1)))
+ (local len2 (must (luna.utf8.len str2)))
+ (local matrix [])
+ (var cost 0)
+ (if
+ (= len1 0) len2
+ (= len2 0) len1
+ (= str1 str2) 0
+ (< 2 (math.abs (- len2 len1))) (math.max len2 len1)
+ ;; else
+ (do
+ (for [i 0 len1] (tset matrix i {}) (tset (. matrix i) 0 i))
+ (for [j 0 len2] (tset (. matrix 0) j j))
+ (for [i 1 len1]
+ (for [j 1 len2]
+ (if (= (must (luna.utf8.sub str1 i 1))
+ (must (luna.utf8.sub str2 j 1)))
+ (set cost 0) (set cost 1))
+ (tset (. matrix i) j
+ (math.min (+ (. matrix (- i 1) j) 1) (+ (. matrix i (- j 1)) 1)
+ (+ (. matrix (- i 1) (- j 1)) cost)))))
+ (. matrix len1 len2))))
(fn guess [string]
(local result
@@ -312,22 +300,7 @@
(local sorted-index
(array.sort index #(< $1.distance $2.distance)))
(local most-similar (. sorted-index 1))
- (if (< most-similar.distance 3)
- (do
- ;; compare letters in candidates to choose the best option
- (local same-distance-words
- (filter
- #(= $2.distance most-similar.distance)
- sorted-index))
- (local sorted-candidates
- (array.sort
- (map
- (fn [_ v] {:word v.word
- :diff-letters (diff-letters token v.word)})
- same-distance-words)
- #(< $1.diff-letters $2.diff-letters)))
- (. sorted-candidates 1 :word))
- token))
+ most-similar.word)
(str.split string))
" "))
(if (~= result string)