summaryrefslogtreecommitdiff
path: root/spellfix.fnl
diff options
context:
space:
mode:
Diffstat (limited to 'spellfix.fnl')
-rw-r--r--spellfix.fnl312
1 files changed, 0 insertions, 312 deletions
diff --git a/spellfix.fnl b/spellfix.fnl
deleted file mode 100644
index 2507fca..0000000
--- a/spellfix.fnl
+++ /dev/null
@@ -1,312 +0,0 @@
-(import-macros {: map : filter} :lib.macro)
-(local array (require :lib.array))
-(local str (require :lib.string))
-(local {: must} (require :lib.utils))
-
-(local vocabulary ["агар" "агарвуд" "агат" "агатис" "али" "алишань" "алтарь"
- "альба" "амазонка" "аметист" "амино" "антивирус"
- "антиквариат" "антикварный" "антилопа" "ань" "аньси"
- "аньхуа" "аравана" "арахис" "арахисом" "арован" "арована"
- "аромат" "ароматный" "архат" "асфальт" "атомы" "атрибуты"
- "аура" "бабочка" "бабочки" "багрянник" "базальт" "базовая"
- "бай" "бакелит" "баклажан" "бамбук" "бамбуковая"
- "бамбуковые" "бамбуковый" "бан" "банвэй" "бандун" "банка"
- "бань" "бао" "баоянь" "барабанчик" "баран" "бацзе" "бегемот"
- "беззаботный" "бекас" "белая" "белые" "белый" "беседа"
- "беседка" "бессмертие" "билочунь" "бин" "биндао" "бирюза"
- "благовония" "благоденствие" "благопожелание" "ближе" "блик"
- "блин" "блэк" "блюдо" "богатство" "богомол" "бодрящий"
- "бодхи" "бодхидхарма" "боковая" "большая" "большеротая"
- "большое" "большой" "борец" "бохун" "бочонка" "бочонок"
- "браслет" "бронза" "бронзовая" "будда" "будды" "буйвол"
- "булан" "бульдог" "буонарроти" "бусин" "бусина" "бусины"
- "бутон" "бутылка" "бутылки" "бык" "быки" "быть" "бьянка"
- "бэй" "бюрюза" "бяо" "ваджра" "ваза" "вазочка" "вальдшнеп"
- "ван" "вань" "варки" "васнецов" "ведерко" "ведро" "великая"
- "великий" "венге" "версия" "весеннее" "весенние" "весна"
- "весны" "весы" "ветвях" "ветка" "ветке" "веточка" "вечным"
- "вижу" "виктор" "винил" "винсент" "вишнвое" "вместе"
- "внеземной" "вода" "водопад" "воды" "водяная" "водяной"
- "волнам" "воробей" "воробьиные" "восемь" "восьми" "врата"
- "встроенным" "выдвижным" "выдержанный" "выращивание"
- "высокая" "высокий" "высокотемпературный" "высший" "вьюнки"
- "вэй" "вэн" "вэнь" "габа" "габаулун" "габашен" "гайвань"
- "галька" "гамма" "ган" "гань" "гао" "гаомиду" "гаошань"
- "гармония" "гаруда" "гвоздика" "гейша" "геккон"
- "гималайский" "гинкго" "главных" "гладкий" "глаз" "глазурь"
- "глина" "глины" "глициния" "гог" "год" "годов" "гои"
- "голова" "голубая" "голубой" "голубь" "гор" "гора" "горах"
- "горизонтом" "горная" "горном" "горный" "горшок" "горшочек"
- "горы" "гоу" "грамм" "гранат" "граненый" "графит" "грецкий"
- "гриб" "грибной" "грибом" "грибы" "грин" "грифовая" "груша"
- "грушевый" "гуа" "гуан" "гуанси" "гуань" "гуаньинь" "гуй"
- "гун" "гунтин" "гунфу" "гуси" "густав" "гусь" "гушу"
- "гэланхэ" "дабайхао" "дабайча" "дали" "дан" "дань" "дао"
- "даос" "даоское" "дарума" "дарумы" "дарующий" "дары"
- "дасюэшань" "дахунпао" "два" "двоих" "двойное" "дворянский"
- "денежная" "день" "дерева" "деревня" "дерево" "деревьев"
- "деревянная" "деревянном" "деревянный" "деревянным"
- "дескрипторов" "дети" "джу" "джэй" "дикая" "дикие" "дикий"
- "диких" "дикого" "дикой" "дин" "динь" "диск" "длинный" "для"
- "дном" "добродушный" "долголетие" "долголетия" "дораэмон"
- "доска" "достаток" "доу" "драгоценная" "дракон" "дракона"
- "драконом" "драконхранитель" "драконы" "древа" "древесина"
- "древний" "дровяной" "дуань" "дуаньни" "дун" "дух" "дымка"
- "дьен" "дэхуа" "дянь" "дяньхун" "дяочань" "европейский"
- "естественность" "жаба" "жабадракон" "жабе" "жан" "жаровня"
- "жасминовый" "жезл" "жезлом" "железо" "желтая" "желтые"
- "желтый" "жемчуг" "жемчужина" "жемчужиной" "жемчужины" "жен"
- "жень" "жернов" "жертвенный" "жесть" "жестяная" "жидкое"
- "жизнь" "жлтая" "жлтой" "жлтый" "жоу" "жуйтюань" "жунтянь"
- "журавлей" "журавли" "журавль" "жэнь" "забором" "заваривай"
- "заваривания" "заварочная" "заварочный" "завертка" "загадка"
- "зайчик" "заря" "затерянные" "затеряться" "заяц" "звезда"
- "зверк" "зеленая" "зеленый" "зелная" "зелное" "зелной"
- "зелные" "зелный" "земли" "земляники" "земной" "зернами"
- "зимний" "зимняя" "зимородок" "зип" "знакомства"
- "знакомство" "значок" "золота" "золотая" "золоте"
- "золотистая" "золотистый" "золото" "золотое" "золотой"
- "золотом" "золотые" "золотым" "зрнах" "игла" "иглы" "игра"
- "играют" "игрунка" "иероглиф" "иероглифы" "извергающая"
- "изгиб" "изобилия" "изображением" "изогнутый" "изумрудная"
- "изумрудные" "изящество" "или" "император" "императора"
- "индэ" "инженерное" "инкрустацией" "инструмент"
- "инструментов" "инструменты" "инь" "исинская" "исинский"
- "исинской" "искусство" "истинная" "истинно" "история"
- "йеллоу" "йон" "йоу" "каждый" "каи" "каллиграфии"
- "каллиграфия" "камень" "камне" "камня" "камфара" "камфорный"
- "камфоры" "као" "капля" "капюшоне" "карамель" "карамельный"
- "карпы" "картина" "картины" "кашпо" "каштановая" "каштаны"
- "квадрат" "квадратная" "квадратное" "квадратный" "кварц"
- "кедр" "керамика" "керамики" "кибер" "киноварная"
- "киноварный" "киноварь" "киноварьбхмм" "кипячения" "кирпич"
- "кирпичик" "кисет" "кистей" "кисть" "китайский" "китайским"
- "классика" "классическая" "клетка" "климт" "клипса"
- "книгами" "кнопкой" "коала" "кобальт" "кобальтовая"
- "кобальтовые" "кобальтовый" "ковка" "кожа" "колба" "колбы"
- "коленце" "коллекционная" "колодец" "колокол" "колосья"
- "колотый" "кольцами" "кольцо" "кольцом" "комбо" "комковой"
- "комплект" "конверт" "консоль" "контур" "конусов" "коралл"
- "корень" "корзина" "корзинка" "корица" "коричневая"
- "коричневое" "коричневый" "кормилица" "коробка" "коробке"
- "коробочка" "коробочке" "корпусе" "кости" "кость" "костяной"
- "кот" "котелок" "котик" "котики" "котнок" "краб" "крабы"
- "край" "красавица" "красная" "краснобелый" "красного"
- "красное" "красной" "красносиний" "красные" "красный"
- "красных" "кратер" "крафткартон" "креветка" "креветки"
- "кристалл" "кровавый" "кровать" "кролик" "кролики"
- "крольчонок" "круг" "круглая" "круглое" "круглый" "круглым"
- "кружка" "крупная" "крыло" "крыса" "крыски" "крышки"
- "крышкой" "крышку" "крышу" "куан" "кубок" "кувшин"
- "кузнечик" "куй" "культура" "кун" "кунь" "купаж"
- "курильница" "куропатка" "куропатки" "кучжушань" "кха"
- "лабранг" "лавр" "лазуревая" "лазурит" "лазурь" "лак"
- "лаконичная" "лаконичное" "лаконичный" "лампада" "лан"
- "лань" "ланьбмм" "ланьянь" "лао" "лаодуань" "лаошу" "латунь"
- "лев" "лед" "ледяная" "лежанка" "лепестки" "лепешка" "лес"
- "леса" "лесная" "лесной" "летающая" "летний" "летучая"
- "летучей" "летучие" "ликов" "лилия" "лимин" "лин" "линчжи"
- "линь" "линьцан" "линьцана" "лист" "листве" "листе"
- "листопад" "листья" "листьях" "личи" "лодка" "лопаточка"
- "лоск" "лотос" "лотоса" "лотосе" "лотосовом" "лотосовый"
- "лотосом" "лотосы" "лошадей" "лошадь" "лун" "луна" "лунная"
- "лунный" "луны" "львов" "львы" "льду" "любимого" "люйтан"
- "люкс" "люфа" "лягушка" "лягушки" "лян" "лянь" "магнолии"
- "магнолия" "магритт" "май" "майтрейя" "малая" "маленькая"
- "малые" "малый" "мальки" "мальчик" "мандарине" "мандаринки"
- "маньлан" "маньно" "мао" "маофэн" "марка" "мастер" "маття"
- "матура" "матча" "медитации" "медитирующий" "медная"
- "медный" "медовые" "медь" "между" "мей" "менхай"
- "менхайский" "меняющая" "металл" "металлик" "металлической"
- "мешочек" "микеланджело" "микрофибра" "мин" "миндаль" "мини"
- "мининабор" "миниточа" "минитун" "минцзян" "мир" "мира"
- "мистер" "ммб" "мокрый" "моллюск" "молочная" "монах"
- "монетами" "монете" "монетка" "монеты" "мопс" "море" "моша"
- "мощный" "мощь" "мудрец" "мудрый" "мун" "муравей" "мушмула"
- "мыши" "мышки" "мышонок" "мышь" "мышью" "мэй" "мэйхуа" "мэн"
- "мэнку" "мэнсун" "мэнхай" "мэнхайская" "мэнхая" "мятный"
- "набор" "награда" "нака" "наклейки" "нан" "нань" "наньно"
- "наньтоу" "наполированный" "наработанный" "нарухина"
- "нарцисс" "нарциссы" "наследие" "настроение" "натюрморт"
- "наук" "начало" "небесной" "небесный" "небо" "неведомый"
- "нежная" "нежный" "нектар" "нержавеющая" "нефрит"
- "нефритовая" "нефритовое" "нижним" "низкий" "нитка" "нить"
- "новая" "новый" "нож" "ножках" "ножке" "нос" "ночи" "ночь"
- "нун" "нюгай" "оазис" "обеденный" "обезьян" "обезьянка"
- "обезьянки" "обезьяны" "обжиг" "облака" "облаками" "облаках"
- "облако" "ободком" "обратных" "обсидиан" "овал" "овальная"
- "овальный" "огненная" "огнеупорная" "огнеупорного"
- "огнеупорное" "одуванчик" "озера" "окаменелая" "океана"
- "окихиро" "округлый" "олдскул" "олень" "олово" "оплетка"
- "оранжевый" "органик" "органическая" "орех" "орехи"
- "ореховый" "орнамент" "орнаментом" "орхидеи" "орхидея"
- "осень" "осетр" "османтус" "основных" "особая" "отдых"
- "охраняющий" "очиститель" "пабло" "павлин" "пакет" "пакетов"
- "палисандр" "палисандра" "палочка" "палочки" "панда"
- "панцирь" "пань" "пао" "пара" "парный" "пару" "парча"
- "патра" "пачка" "пейзаж" "пейзажная" "пеликан" "первый"
- "перепелиное" "перепрыгивают" "перламутром" "персик"
- "персика" "персике" "персики" "персиковый" "персиком"
- "персон" "персоны" "петух" "печать" "пиал" "пиала" "пиалу"
- "пиалы" "пикассо" "пин" "пиньгэ" "пион" "пиона" "пионы"
- "пирамида" "письмо" "пламя" "плант" "плантационный"
- "плантация" "пластиковое" "пластиковым" "пластина"
- "пластинки" "плато" "плетеное" "плетное" "плетной" "плитка"
- "плоды" "пломбир" "плоская" "побеги" "погружение" "под"
- "подарочная" "подарочной" "подачей" "подводный" "поддоном"
- "поднос" "подносом" "подсвечник" "подставка"
- "подставкаподогреватель" "подставке" "подставки"
- "подставкой" "подушкой" "познания" "покой" "поколений"
- "покров" "полной" "полный" "полотенце" "полотно" "полочка"
- "полуавтоматическая" "полудикий" "полудиких" "полусладкий"
- "помпа" "пороснок" "постижение" "посуды" "поталь" "походная"
- "походный" "почка" "праздник" "предел" "предмет" "предметов"
- "премиум" "пресс" "природе" "пробуждение" "прозрачная"
- "прозрачный" "прохладе" "процветание" "прочность" "пруд"
- "пруду" "пряжка" "прямоугольная" "прямоугольный" "прятки"
- "птица" "птицы" "птички" "пурпур" "пурпурный" "путь"
- "пушинка" "пуэр" "пуэрмобиль" "пчела" "пышная" "пяо"
- "пятнистый" "пять" "работа" "работы" "радости" "разделки"
- "размер" "размышлений" "райские" "раковина" "ранневесенний"
- "распускающиеся" "распустившиеся" "расслабляющий"
- "рассыпной" "растительный" "раухтопаз" "реактор" "ребенок"
- "ребнок" "регион" "резвящихся" "резьба" "река" "реки"
- "рельеф" "рене" "репа" "рецепт" "рештка" "риса" "рисовый"
- "рисовыми" "рисовых" "рисунком" "ритуальный" "рог"
- "рододендрон" "роза" "розовый" "розы" "ромашке" "роса"
- "роспись" "россия" "руб" "рубин" "рудра" "рутилом" "ручка"
- "ручками" "ручкой" "ручная" "рыба" "рыбадракон" "рыбаки"
- "рыбка" "рыбки" "рыбой" "рыбы" "рыжая" "рыжий" "саванна"
- "сад" "сакральной" "сакура" "саламандра" "салатовая"
- "салфетница" "сандал" "сандала" "саоган" "сахарок" "сбор"
- "сверчок" "свет" "светлая" "светлое" "светлорыжая" "светлые"
- "светлый" "свинка" "свиньи" "свинья" "свитком" "связь"
- "священного" "северный" "секции" "селадон" "семена" "семь"
- "семян" "серая" "сердечки" "сердолик" "сердца" "сердце"
- "серебре" "серебро" "серебряная" "серебряные" "серия"
- "серое" "серый" "сиборидаси" "сигара" "сизоворонка" "сила"
- "силу" "символы" "син" "синебежевый" "синее" "синей" "синие"
- "синий" "синь" "синяя" "сипин" "сиреневый" "сито" "ситом"
- "сифон" "сияние" "склада" "скоропись" "скрученный"
- "скульптура" "сладкий" "сладость" "слив" "слива" "сливник"
- "сливы" "слитке" "слитком" "слово" "сложная" "слон"
- "слоновой" "слоном" "слоны" "смола" "сна" "снежная"
- "снежный" "собака" "советский" "совок" "совочек"
- "согревающий" "солнца" "солнце" "сорт" "сосна" "сосны"
- "сосуд" "спирали" "спираль" "спиртовка" "спокойствие"
- "спящий" "средняя" "стакан" "стакантермос" "сталь" "станция"
- "старая" "старого" "старое" "старый" "старых" "статуэтка"
- "стекла" "стекло" "стеклянная" "стекляный" "стикер"
- "стикерпак" "стикеры" "стиле" "стилов" "стиль" "сто" "стол"
- "столик" "столика" "стопы" "странствующий" "стрекоза"
- "строк" "стул" "стула" "ступа" "суаньджи" "суй" "сумка"
- "сумо" "сун" "сундук" "сунская" "сунском" "сунь" "суровая"
- "сутра" "сутры" "сухого" "сухое" "сферы" "счастливая"
- "счастливое" "счастливый" "счастье" "счастья" "сытый"
- "сюань" "сюнь" "сюэ" "сягуань" "сян" "сянь" "сяньхуа" "сяо"
- "тай" "тайванский" "тайвань" "тайваньская" "тайваньского"
- "тайхэ" "такинава" "тан" "танская" "танские" "танцуют"
- "тань" "тао" "тарелка" "тарзан" "творцы" "твоя" "тегуаньинь"
- "телец" "темная" "темное" "темнокоричневая" "тентяо"
- "термоз" "термос" "термоса" "термоскувшин" "тигр" "тигра"
- "тигровый" "тин" "типот" "тираж" "тисбмм" "титан"
- "титестера" "тишине" "ткань" "тмная" "тмное" "тмные" "тмный"
- "тобой" "тонкое" "тоу" "точа" "трав" "травы" "трапеция"
- "треножник" "трепет" "треугольная" "трехлапая" "три" "трио"
- "трионикс" "троих" "трон" "трона" "трубками" "трубкой"
- "трхлапая" "тулоу" "тун" "тунь" "тушечница" "тушью" "тхи"
- "тыква" "тьен" "тюльпан" "тяван" "тян" "тянь" "тяоша" "угря"
- "удачи" "узор" "улун" "улыбка" "уляншань" "упаковка" "уруши"
- "уся" "утешения" "утнок" "уточки" "утро" "утун" "ухват"
- "уцай" "учатся" "ушастый" "фан" "фаньгу" "фарфор" "фарфора"
- "фарфоровая" "феникс" "фермерский" "фигурка" "фильтрпакеты"
- "финиковый" "фиолетового" "фиолетовый" "фирма" "флакон"
- "форма" "формикарий" "фосян" "фруктовый" "фугу" "фудин"
- "фун" "футболка" "фуцзянь" "фуцзяньском" "фэй" "фэйчжоу"
- "фэн" "фэнхуан" "фэнцин" "фэншуй" "хай" "хайвань" "халат"
- "ханой" "хань" "ханьской" "хао" "хгр" "хищная" "хлопок"
- "хлопушками" "хлоритом" "хмм" "хомяк" "хороший" "хотеи"
- "хотей" "хотэй" "хоу" "хохин" "хранения" "хранящий"
- "хризантема" "хризантемы" "хрусталь" "хсм" "хуа" "хуан"
- "хуацзинань" "хун" "хунни" "хуолун" "хупитан" "хурма"
- "хурмы" "хуэй" "ххсм" "хэй" "хэйтан" "хэйхуали" "хэйча"
- "хэн" "хэтян" "хэхуань" "цан" "цаплей" "цапля" "царь" "цвет"
- "цвета" "цветами" "цветов" "цветок" "цветочки" "цветочная"
- "цветочный" "цветущие" "цветущий" "цветы"
- "целеустремленность" "цельная" "церемонии" "цза" "цзао"
- "цзе" "цзи" "цзин" "цзингу" "цзиндэчжень" "цзиндэчжэнь"
- "цзиндэчжэньгоры" "цзинмай" "цзиношань" "цзинь" "цзиньгу"
- "цзиньдечжень" "цзиньдэчжень" "цзиньдэчжэнь" "цзу" "цзун"
- "цзы" "цзыни" "цзытан" "цзю" "цзюй" "цзюнь" "цзюэнь" "цзя"
- "цзянь" "цзяньшуй" "цзяньшуйская" "цзяо" "цикада" "цикадки"
- "цикады" "цикл" "цилиндр" "цилинь" "цимень" "цин" "цинния"
- "цинхуа" "циньчжоу" "цуй" "цун" "цюй" "цюэ" "цяньлян" "цяо"
- "чабань" "чаегуань" "чаем" "чаепития" "чай" "чайнатаун"
- "чайная" "чайник" "чайника" "чайники" "чайником"
- "чайниксифон" "чайница" "чайничек" "чайного" "чайное"
- "чайной" "чайные" "чайный" "чайных" "чак" "чаньчжи"
- "чаочжоу" "чато" "чахай" "чаху" "чахэ" "чацзя" "чаша"
- "чашао" "чашек" "чашка" "чашкатермо" "чашке" "чашки" "чая"
- "чен" "черенками" "черепаха" "черепахадракон" "черепаший"
- "черный" "черпак" "четки" "четыре" "чехлом" "чжай" "чжан"
- "чжанлан" "чжань" "чжаоцзюнь" "чжен" "чжень" "чжи" "чжима"
- "чжу" "чжуань" "чжун" "чжуни" "чжэн" "чжэнь" "чизкейк"
- "чилл" "чин" "чицзыму" "чоу" "чрная" "чрное" "чрный" "чтки"
- "чток" "чугун" "чудо" "чун" "чунь" "чуньхуа" "чха" "чхан"
- "чхин" "чхэн" "чхэнсян" "чэн" "чэнь" "чэньсян" "чэньсяо"
- "шай" "шайхун" "шан" "шань" "шар" "шен" "шестиугольник"
- "шило" "шипяо" "шисянь" "шиюань" "шкатулка" "шкаф" "шкафчик"
- "школа" "шнурок" "шоколад" "шоу" "шрек" "шуй" "шуйпин"
- "шуйсянь" "шумахер" "шупу" "шурикен" "шутливый" "шуэй" "шу"
- "шэн" "шэнтай" "шэнши" "щипцы" "экстра" "электрический"
- "электронные" "элементов" "юйчэн" "юлэ" "юндэ" "юнь"
- "юньнань" "юпитер" "юэнань" "яблоко" "язычки" "яйцо"
- "якотза" "яма" "янгуйфэй" "янтарь" "янь"
- "японский" "яшма"])
-
-(fn levenshtein [str1 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
- (array.join
- (map
- (fn [_ token]
- (local index
- (map (fn [_ v]
- {:word v :distance (levenshtein token v)})
- vocabulary))
- (local sorted-index
- (array.sort index #(< $1.distance $2.distance)))
- (local most-similar (. sorted-index 1))
- (if (< most-similar.distance 3)
- most-similar.word
- token))
- (str.split string " "))
- " "))
- (if (~= result string)
- result
- nil))
-
-{: guess}