Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   проверка орфографии (http://forum.oszone.net/showthread.php?t=238098)

pva 07-07-2012 16:15 1947648

проверка орфографии
 
Всем привет! Хочу собрать "на коленке" программу для проверки орфографии русского языка. Пока что склоняюсь к нечёткому поиску по словарю. Формулирую как 2 задачи:
1. Дан набор слов русского языка и текст, который следует проверить. Требуется написать список неправильных слов и предложить до 10 вариантов исправления.
2. Дана строка запроса и текст. Требуется написать список до 20 строк из текста, которые чем-то похожи на строку запроса.
Хотелось бы быстрый, но несложный алгоритм. Кто что может подсказать?

Tonny_Bennet 09-07-2012 10:33 1948504

Цитата:

Цитата pva
1. Дан набор слов русского языка и текст, который следует проверить. Требуется написать список неправильных слов и предложить до 10 вариантов исправления. »

Можно текст разбить на слова и пословно делать сравнение с словарём. Правда если словарь будет большой то по-моему код будет не очень быстро работать. Как пример можно воспользоваться таким сравнением. Но его функционал без примера мне пока не сильно понятен.

Я думаю вам стоит начать писать программу для проверки орфографии по словарю и если будут вопросы задавать их здесь.

PhilB 09-07-2012 17:14 1948758

Вот неплохой обзорчик: http://habrahabr.ru/post/114997/
И еще алогоритм Ландау-Вишкина: http://algolist.ru/search/fsearch/index.php

Beyound 09-07-2012 20:44 1948892

возможно есть смысл подумать о использовании свойств русского языка. скажем придумать как выделять в слове корень и искать в словаре корни слов, а по найденому корню проверять допустимое словообразование от этого корня. тут правда есть загвоздка - слова с 2-мя корнями. вообще русский язык слишком сложный чтобы влоб его так делать, английский бы прокатил влегкую.
незнаю нормальная ли идея, но стоит проверить. так мы просто создадим гиперсловарь (а-ля гипертекст) и ясное дело верхушка намного меньше чем полное содержание словаря и ищется там быстрее, вопрос в том компенсирует ли время, затраченное на разбор текста по корням и т.п.
можно сделать так - есть очень большой словарь исключительно правильных слов и делается предположение, что допустить с неким нелинейным % относительно длинны слов ошибок реально, и если в словаре нет написанного слова - то показывать все возможные, отличающиеся на это число букв.
но опять же - все эти наборы будут как у англичанина с русским словарем - слова те, но связи между ними просто 0.

pva 12-07-2012 00:11 1950333

Tonny_Bennet,
Делаем шаг первый: тупо проверяем правильность слова, но не предлагаем варианты.
словарь взят отсюда: http://files.speakrus.ru/dict/pldf-win.zip
проверяем фрагмент книги братьев Стругацких "Обитаемый остров".
Цитата:

Цитата Tonny_Bennet
Правда если словарь будет большой то по-моему код будет не очень быстро работать »

На машине i3-2350M 2.30 GHz, 4G RAM, без оптимизации кода, с использованием хеш-таблицы поиск занял 45 мс - это вполне приемлимо.
Код:

#include <hash_map>
#include <string>
#include <cstring>
#include <list>
#include <fstream>
#include <iostream>
#include <ctime>
using namespace std;

// слова храним в обычном списке,
// индексируем список хеш-таблицей указателей

struct hash_fun {
        size_t operator()(const char* str) const {
                return __gnu_cxx::__stl_hash_string(str);
        }
};

struct hash_cmp {
        bool operator()(const char* a, const char* b) const {
                return strcmp(a,b)==0;
        }
};

// контейнер для слов
typedef list<string> wlist_type;
typedef __gnu_cxx::hash_map<const char*, int, hash_fun, hash_cmp> windex_type;

// проверка на русский символ
inline bool is_ru_alpha(int c) {
        return unsigned(c - 0xc0) < 0x40 || c=='ё' || c=='Ё';
}

// проверка на нерусский символ
inline bool is_not_ru_alpha(int c) {
        return 0<c && !is_ru_alpha(c);
}

// Загрузить слово в нижнем регистре.
bool get_word(streambuf& stm, string& str) {
        str.clear();

        while(is_not_ru_alpha(stm.sgetc())) {
                stm.sbumpc();
        }

        while(is_ru_alpha(stm.sgetc())) {
                str.push_back(stm.sbumpc() | 32);
        }

        return !str.empty();
}

// загрузить русский словарь.
void load_dict(streambuf *file, wlist_type& dict, windex_type& index)
{
        if (file) {
                string word;

                dict.clear();
                while(get_word(*file, word)) {
                        dict.insert(dict.end(), word);
                }

                index.resize(dict.size());
                for(wlist_type::iterator a1=dict.begin(), a2=dict.end(); a1!=a2; ++a1) {
                        index[a1->c_str()];
                }

                clog << "indexed " << index.size() << " words\n";
        }
}

// проверить файл
void check_file(streambuf* file, windex_type& index)
{
        static int const max_errors = 25;

        if (file) {
                string word;
                int cnt_errors = 0,
                        cnt_total = 0;

                while(get_word(*file, word)) {
                        ++cnt_total;
                        if (index.find(word.c_str())==index.end()) {
                                if (++cnt_errors < max_errors) {
                                        cout << "spell: " << word << "\n";
                                }
                        }
                }

                if (max_errors <= cnt_errors) {
                        cout << "  ...\n";
                        clog << "showing only first " << max_errors << " errors\n";
                }

                cout << "misspelled " << cnt_errors << " of " << cnt_total << " words\n";
        }
}

int main(int argc, char** argv) {
        clock_t start_time;
        int duration;
        filebuf fbuf;

        #define BENCHMARK(name, foo) \
                start_time = clock();\
                foo; \
                duration = clock() - start_time;\
                clog << name " spent " << double(duration)/CLOCKS_PER_SEC << " secs\n";\

        wlist_type dict;
        windex_type index;

        BENCHMARK("load dictionary", load_dict(fbuf.open("pldf-win.txt", ios_base::in), dict, index));
        fbuf.close();

        BENCHMARK("spell check", check_file(fbuf.open("strugackie_ostrov.txt", ios_base::in), index));
        fbuf.close();

        return 0;
}

Вывод:
Код:

spell: ладошек
spell: ладошки
spell: солнцу
spell: карманные
spell: компьютеры
spell: стругацкие
spell: первая
spell: приоткрыл
spell: высунулся
spell: поглядел
spell: было
spell: низкое
spell: какое
spell: твердое
spell: этой
spell: легкомысленной
spell: прозрачности
spell: намекающей
spell: космоса
spell: обитаемых
spell: миров
spell: настоящая
spell: библейская
spell: гладкая
  ...
misspelled 41216 of 93652 words
indexed 125140 words
load dictionary spent 0.272 secs
showing only first 25 errors
spell check spent 0.045 secs

PhilB, статью на хабре читал, но ума понять расстояние Ливенштейна не хватило (суть понятна, как считать - непонятно). Можель объяснить его для тупых?

Beyound, судя по "ошибкам", которые выдаёт программа на основании словаря из 120К слов, двигаться нужно в твоём направлении. Типа метод триграмм, только разбивать по частям слова. Но тогда нужно добавлять ограничение на применимость частей слова друг к другу?

yurfed 12-07-2012 00:55 1950343

Цитата:

Цитата Beyound
скажем придумать как выделять в слове корень и искать в словаре корни »

Вы хотите переписать словари Даля и Ожёгова? Задача вроде вся из себя, чтобы по корням угадывать правописание любого слова.
Других альтернатив для подобных целей не имеется?

ferget 12-07-2012 02:15 1950351

Цитата:

Цитата pva
расстояние Ливенштейна не хватило (суть понятна, как считать - непонятно) »

можно исходник посмотреть
тут

yurfed 12-07-2012 02:36 1950355

Цитата:

Цитата ferget
расстояние Ливенштейна не хватило »

:) Ну хоть что то у него хватает?

pva 12-07-2012 21:18 1950899

yurfed, к сожалению, не понял суть ваших советов.
ferget, а есть ссылка на теорию, а не реализацию?

pva 12-07-2012 23:57 1950956

После нескольких итераций чтения предложенных ссылок до меня допёрло, как сделать. Получилось вот что (расстояние Левенштейна):
Код:

spell: ладошек
  1. ладоше (1)
  2. ладоней (2)
  3. ладоши (2)
  4. ладошку (2)
  5. людишек (2)
spell: компьютеры
  1. компьютерный (2)
  2. комитеты (4)
  3. компота (5)
  4. копьев (5)
  5. копаются (5)
spell: стругацкие
  1. чумацкие (4)
  2. рыбацкие (4)
  3. дурацкие (4)
  4. стругать (4)
  5. стрюцких (4)
spell: робинзон
  1. робенок (3)
  2. родиной (3)
  3. родинок (3)
  4. рубикон (3)
  5. родион (3)
spell: люк
  1. лак (1)
  2. люд (1)
  3. лек (1)
  4. лю (1)
  5. лют (1)
spell: намекающей
  1. намекающий (1)
  2. намекающая (2)
  3. замирающей (3)
  4. заменяющей (3)
  5. вытекающей (3)
spell: бездонность
  1. бездарность (2)
  2. бездонном (3)
  3. бездонной (3)
  4. бездонное (3)
  5. безличность (3)
spell: космоса
  1. комода (2)
  2. космой (2)
  3. тоскова (3)
  4. козлова (3)
  5. косятся (3)
spell: множественность
  1. мужественность (2)
  2. божественность (2)
  3. мужественности (3)
  4. множественное (3)
  5. торжественность (3)
spell: твердь
  1. тверда (1)
  2. тверд (1)
  3. твердо (1)
  4. твердя (1)
  5. тверь (1)
spell: твердь
  1. тверда (1)
  2. тверд (1)
  3. твердо (1)
  4. твердя (1)
  5. тверь (1)
spell: атланта
  1. таланта (2)
  2. атлета (2)
  3. танта (2)
  4. атласа (2)
  5. атласная (3)
spell: фосфоресцировала
  1. сформировал (6)
  2. восторжествовала (6)
  3. лорнировала (7)
  4. откомандировала (7)
  5. отретировалс (7)
spell: пробитую
  1. побитую (1)
  2. пролитую (1)
  3. прибитую (1)
  4. пробита (2)
  5. пробитая (2)
spell: расплывались
  1. расплевались (1)
  2. расписывались (2)
  3. раскрывались (2)
  4. расплылись (2)
  5. раскалывались (2)
spell: кляксы
  1. классы (2)
  2. клятвы (2)
  3. лясы (2)
  4. клялся (2)
  5. клюквы (2)
spell: туши
  1. тушки (1)
  2. тужи (1)
  3. тучи (1)
  4. тушь (1)
  5. туш (1)
spell: люк
  1. лак (1)
  2. люд (1)
  3. лек (1)
  4. лю (1)
  5. лют (1)
spell: раздавленной
  1. раздавленног (1)
  2. раздавленное (1)
  3. раздавленный (1)
  4. раздавленно (1)
  5. раздавленная (2)
spell: кривоватые
  1. кривоглазые (3)
  2. кроватке (3)
  3. розоватые (3)
  4. хриповатым (3)
  5. провожатые (3)
spell: голубизны
  1. голубизну (1)
  2. голубине (2)
  3. глубины (2)
  4. голубиных (2)
  5. голубятня (3)
spell: пологими
  1. полонили (2)
  2. положили (2)
  3. порогами (2)
  4. положим (2)
  5. плохими (2)
spell: склонами
  1. склонам (1)
  2. клоками (2)
  3. склянками (2)
  4. словами (2)
  5. склонах (2)
spell: размытому
  1. размытом (1)
  2. разлитому (2)
  3. развитому (2)
  4. разбитому (2)
  5. накрытому (3)
  ...
misspelled 8619 of 93652 words
indexed 162163 words
load dictionary spent 0.519 secs
showing only first 25 errors
spell check spent 9.292 secs

Среднее время поиска вариантов - 0.371 сек. Что-то долго мне кажется.

pva 13-07-2012 23:56 1951535

Используя ограничение на длину слова (удалили не больше 2-х и добавили не больше 2-х букв) получается увеличить скорость в 2 раза, сохранив результаты.
Код:

spell: ладошек
  1. ладоше (1)
  2. ладоней (2)
  3. ладошки (2)
  4. ладошку (2)
  5. людишек (2)
spell: компьютеры
  1. компьютерный (2)
  2. комитеты (4)
  3. компроме (5)
  4. компрене (5)
  5. комитета (5)
spell: стругацкие
  1. дурацкие (4)
  2. чумацкие (4)
  3. турецкие (4)
  4. строжайшие (4)
  5. трусоцким (4)
spell: робинзон
  1. родиной (3)
  2. рубинов (3)
  3. робенок (3)
  4. рубикон (3)
  5. родинок (3)
spell: люк
  1. люд (1)
  2. люб (1)
  3. лак (1)
  4. глюк (1)
  5. лют (1)
spell: намекающей
  1. намекающий (1)
  2. намекающая (2)
  3. намекаете (3)
  4. вытекающей (3)
  5. намекают (3)
spell: бездонность
  1. бездарность (2)
  2. бездонного (3)
  3. бездонной (3)
  4. бездонное (3)
  5. безличность (3)
spell: космоса
  1. комода (2)
  2. космой (2)
  3. корма (3)
  4. кошма (3)
  5. косность (3)
spell: множественность
  1. мужественность (2)
  2. божественность (2)
  3. множественном (3)
  4. множественное (3)
  5. художественность (3)
spell: твердь
  1. тверда (1)
  2. тверд (1)
  3. тверди (1)
  4. твердя (1)
  5. тверды (1)
spell: твердь
  1. тверда (1)
  2. тверд (1)
  3. тверди (1)
  4. твердя (1)
  5. тверды (1)
spell: атланта
  1. атлета (2)
  2. атласа (2)
  3. таланта (2)
  4. танта (2)
  5. атласная (3)
spell: фосфоресцировала
  1. восторжествовала (6)
  2. восторжествовал (7)
  3. откомандировала (7)
  4. господствовала (7)
  5. восторжествовали (7)
spell: пробитую
  1. прибитую (1)
  2. пролитую (1)
  3. побитую (1)
  4. пробита (2)
  5. продиктую (2)
spell: расплывались
  1. расплевались (1)
  2. расплылись (2)
  3. раскалывались (2)
  4. расписывались (2)
  5. раскрывались (2)
spell: кляксы
  1. клятвы (2)
  2. клюквы (2)
  3. классы (2)
  4. клялся (2)
  5. лясы (2)
spell: туши
  1. туше (1)
  2. туш (1)
  3. тужи (1)
  4. тушит (1)
  5. тушил (1)
spell: люк
  1. люд (1)
  2. люб (1)
  3. лак (1)
  4. глюк (1)
  5. лют (1)
spell: раздавленной
  1. раздавленног (1)
  2. раздавленное (1)
  3. раздавленный (1)
  4. раздавленно (1)
  5. раздавленного (2)
spell: кривоватые
  1. розоватые (3)
  2. кроватке (3)
  3. виноватые (3)
  4. красноватые (3)
  5. кривоглазые (3)
spell: голубизны
  1. голубизну (1)
  2. голубине (2)
  3. голубиных (2)
  4. глубины (2)
  5. голубятня (3)
spell: пологими
  1. плохими (2)
  2. долгими (2)
  3. положим (2)
  4. похожими (2)
  5. полосами (2)
spell: склонами
  1. склонам (1)
  2. клоками (2)
  3. словами (2)
  4. слонам (2)
  5. склонными (2)
spell: размытому
  1. размытом (1)
  2. разлитому (2)
  3. развитому (2)
  4. разбитому (2)
  5. накрытому (3)
  ...
misspelled 8619 of 93652 words
indexed 162163 words
load dictionary spent 0.652 secs
showing only first 25 errors
spell check spent 5.621 secs

Теперь используем другую функцию: за различие символов добавляем штраф +1, за различие соседних символов ещё +1.
Если символы на одинаковых позициях на клавиатуре расположены дальше круга радиусом 1 клавиши, добавляем штраф +3:
Код:

indexed 162163 words
load dictionary spent 0.661 secs
showing only first 25 errors
spell check spent 0.392 secs
spell: ладошек
  1. лавочек (6)
  2. ладоней (6)
  3. ладошку (6)
  4. ладонке (8)
  5. людишек (8)
spell: компьютеры
  1. кухмистеры (14)
  2. контролеры (15)
  3. компактный (15)
  4. компаньоны (15)
  5. компанейцы (15)
spell: стругацкие
  1. мертвецкие (15)
  2. строжайшие (16)
  3. струменцию (16)
  4. строжайшее (17)
  5. стебницкий (17)
spell: робинзон
  1. рутинное (12)
  2. починков (12)
  3. новинкой (12)
  4. поминутн (12)
  5. романовн (12)
spell: люк
  1. лак (3)
  2. лек (3)
  3. лок (3)
  4. ляк (3)
  5. лук (3)
spell: намекающей
  1. намекающий (3)
  2. намекающая (8)
  3. вытекающей (9)
  4. набегающий (9)
  5. замечающий (9)
spell: бездонность
  1. бездарность (5)
  2. бездарности (8)
  3. безличность (8)
  4. преданность (11)
  5. безличности (11)
spell: космоса
  1. косушка (9)
  2. косынка (9)
  3. костела (9)
  4. косятся (9)
  5. косится (9)
spell: множественность
  1. торжественность (11)
  2. торжественности (14)
  3. торжественностью (16)
  4. семейственности (18)
  5. торжественностию (19)
spell: твердь
  1. тверди (3)
  2. тверда (3)
  3. тверды (3)
  4. твердя (3)
  5. твердо (3)
spell: твердь
  1. тверди (3)
  2. тверда (3)
  3. тверды (3)
  4. твердя (3)
  5. твердо (3)
spell: атланта
  1. таланта (5)
  2. таланте (8)
  3. фаланга (8)
  4. таланты (8)
  5. таланту (8)
spell: фосфоресцировала
  1. восторжествовала (25)
  2. сфотографирована (28)
  3. компрометировала (28)
  4. восторжествовали (30)
  5. восторжествовать (33)
spell: пробитую
  1. прибитую (3)
  2. пролитую (3)
  3. пробитые (6)
  4. пролитою (8)
  5. пробитая (8)
spell: расплывались
  1. расплевались (3)
  2. раскрывались (6)
  3. расставались (9)
  4. расплываться (9)
  5. расплываются (9)
spell: кляксы
  1. клятвы (6)
  2. клямку (8)
  3. клюквы (8)
  4. клялся (8)
  5. клятву (9)
spell: туши
  1. куши (3)
  2. туше (3)
  3. суши (3)
  4. тушу (3)
  5. души (3)
spell: люк
  1. лак (3)
  2. лек (3)
  3. лок (3)
  4. ляк (3)
  5. лук (3)
spell: раздавленной
  1. раздавленный (3)
  2. раздавленное (5)
  3. раздавленног (5)
  4. раздраженной (8)
  5. раздавленная (8)
spell: кривоватые
  1. провожатые (11)
  2. кохловатые (13)
  3. желтоватые (14)
  4. кровожадцы (14)
  5. кровожадны (14)
spell: голубизны
  1. голубизну (3)
  2. голубятня (9)
  3. голубиная (9)
  4. голубятне (11)
  5. голубчику (11)
spell: пологими
  1. порогами (6)
  2. полонили (6)
  3. полосами (6)
  4. похожими (8)
  5. положили (8)
spell: склонами
  1. салопами (6)
  2. коконами (8)
  3. склонили (8)
  4. законами (8)
  5. склонений (9)
spell: размытому
  1. разлитому (8)
  2. разбитому (8)
  3. развитому (8)
  4. накрытому (9)
  5. разумному (10)
  ...
misspelled 8619 of 93652 words

Если не показывать слова с расстоянием больше 8, то вполне имхо сносные предложения получаются. Правда функция туповата получается при вставке или удалении символа. Как её можно улучшить (производительность хотелось бы сохранить)?

pva 15-07-2012 23:25 1952403

пробуем другие варианты: у меня с орфографией в принципе нормально, но есть опечатки:
1. нажатие вместо рядом находящейся клавиши
2. набор части слова в другом прядке (иногда пальцы срабатывают в обратной последовательности. Обычно пара букв, но изредка до 4-х)
3. пропуск буквы
4. лишняя буква из окрестности клавиши
Решение: будем сравнивать так: растянем слово №1 и №2 на одну и ту же длину. Если в некоторой окрестности буквы из слова 1 оказалась такая же буква из слова 2, значит добавляем штраф, равный расстоянию между буквами обоих слов на растянутом отрезке. Таким образом не требуется матрица как в методе Левенштейна, а нужен только проход по диагонали матрицы.
Если буквы в окрестности не найдено, то добавляем второй штраф - расстояние между символами на клавиатуре.
Код:

                ё  й ц у к е н г ш щ з х ъ
                    ф ы в а п р о л д ж э
                    я ч с м и т ь б ю

Дальше игры с размерами штрафов (чтобы усилить тот или иной вариант). Мне больше всего понравился вариант, когда раскладка вообще не учитывается. Но это на правильно написанных словах, но отсутствующих в словаре. Посему прошу, кто что может, скиньте своих опечаток, потестировать. Или я могу скинуть исходник, попробуйте варианты, сообщите удачные.
знакомые буквы + раскладка
Код:

indexed 162163 words
load dictionary spent 0.688 secs
showing only first 25 errors
spell check spent 0.55 secs
spell: ладошек
  1. лондоне (81)
  2. горошек (83)
  3. шпажонку (85)
  4. хорошее (87)
  5. большее (87)
spell: компьютеры
  1. камердинеру (95)
  2. камердинер (97)
  3. кропотливая (100)
  4. камердинера (102)
  5. кормильцев (102)
spell: стругацкие
  1. страницами (100)
  2. маркграфине (100)
  3. своенравнее (100)
  4. смиренными (102)
  5. варварские (104)
spell: робинзон
  1. орлиного (91)
  2. полтинник (91)
  3. подлинное (95)
  4. портного (97)
  5. плотного (97)
spell: люк
  1. любу (112)
  2. обок (112)
  3. лжец (112)
  4. олиц (112)
  5. люду (112)
spell: намекающей
  1. намекающий (81)
  2. намекающая (89)
  3. примыкающей (91)
  4. намекавший (92)
  5. наступающей (93)
spell: бездонность
  1. бездарность (102)
  2. бездарности (107)
  3. бездарностию (112)
  4. наклонность (112)
  5. преданность (113)
spell: космоса
  1. красота (91)
  2. кассира (91)
  3. красотка (92)
  4. красотку (92)
  5. неисправ (92)
spell: множественность
  1. торжественность (94)
  2. торжественности (97)
  3. торжественностью (98)
  4. преднамеренность (99)
  5. второстепенность (99)
spell: твердь
  1. твердом (102)
  2. твердое (102)
  3. твердос (102)
  4. твердой (106)
  5. откроют (108)
spell: твердь
  1. твердом (102)
  2. твердое (102)
  3. твердос (102)
  4. твердой (106)
  5. откроют (108)
spell: атланта
  1. встретив (90)
  2. пролеток (90)
  3. еропегов (91)
  4. пролети (92)
  5. смоленск (92)
spell: фосфоресцировала
  1. сфотографирована (116)
  2. компрометировала (116)
  3. скомпрометирован (117)
  4. компрометировали (119)
  5. компрометировать (122)
spell: пробитую
  1. пробитыми (107)
  2. пролитыми (107)
  3. пробирала (110)
  4. пролитую (110)
  5. пролиться (110)
spell: расплывались
  1. расплевались (91)
  2. раскрывались (91)
  3. расставались (91)
  4. расписывались (91)
  5. раскалывались (91)
spell: кляксы
  1. кровавы (102)
  2. классы (106)
  3. кличка (110)
  4. крикса (110)
  5. капская (110)
spell: туши
  1. танта (130)
  2. тигра (130)
  3. таков (130)
  4. такты (130)
  5. трушу (130)
spell: люк
  1. любу (112)
  2. обок (112)
  3. лжец (112)
  4. олиц (112)
  5. люду (112)
spell: раздавленной
  1. раздавленное (82)
  2. раздавленног (82)
  3. продавленном (88)
  4. раздраженное (91)
  5. раздраженной (91)
spell: кривоватые
  1. варварства (98)
  2. варварстве (98)
  3. красноватые (98)
  4. неисправные (100)
  5. красноватый (100)
spell: голубизны
  1. голубизну (105)
  2. голубиному (113)
  3. коломбина (114)
  4. полусонный (115)
  5. соловьиный (116)
spell: пологими
  1. поглотим (68)
  2. прогоните (70)
  3. проломами (70)
  4. поглотити (70)
  5. полотнами (70)
spell: склонами
  1. сапогами (79)
  2. салопами (82)
  3. вагонами (84)
  4. склонными (84)
  5. капорами (86)
spell: размытому
  1. грамматику (105)
  2. даровитому (107)
  3. размыслив (109)
  4. разбитому (109)
  5. радоваться (109)
  ...
misspelled 8619 of 93652 words

только поиск знакомых букв
Код:

indexed 162163 words
load dictionary spent 0.656 secs
showing only first 25 errors
spell check spent 0.38 secs
spell: ладошек
  1. ладонке (16)
  2. младшег (16)
  3. ладошки (16)
  4. ладошку (16)
  5. людишек (16)
spell: компьютеры
  1. комментарии (18)
  2. кухмистеры (18)
  3. компостелло (18)
  4. комплименты (18)
  5. композитор (18)
spell: стругацкие
  1. испугавшие (18)
  2. содрогание (18)
  3. строжайшие (18)
  4. содроганием (18)
  5. ассигнацией (18)
spell: робинзон
  1. повинной (17)
  2. пробитое (17)
  3. коринной (17)
  4. повинною (17)
  5. поодиноч (17)
spell: люк
  1. глюк (16)
  2. лек (17)
  3. лак (17)
  4. люд (17)
  5. плю (17)
spell: намекающей
  1. намекающий (14)
  2. намекающая (15)
  3. задевающее (16)
  4. надлежащей (16)
  5. надлежащее (16)
spell: бездонность
  1. бездарность (14)
  2. обязанность (15)
  3. преданность (15)
  4. бездарности (15)
  5. безличность (15)
spell: космоса
  1. корамора (17)
  2. косточка (17)
  3. косности (17)
  4. косность (17)
  5. косилось (17)
spell: множественность
  1. торжественность (14)
  2. художественность (14)
  3. торжественности (15)
  4. торжественностью (15)
  5. художественности (15)
spell: твердь
  1. твердо (15)
  2. тверда (15)
  3. тверды (15)
  4. твердя (15)
  5. тверди (15)
spell: твердь
  1. твердо (15)
  2. тверда (15)
  3. тверды (15)
  4. твердя (15)
  5. тверди (15)
spell: атланта
  1. таланта (14)
  2. атласная (15)
  3. ханаана (16)
  4. атамана (16)
  5. фаланга (16)
spell: фосфоресцировала
  1. восторжествовала (17)
  2. компрометировала (17)
  3. сфотографирована (17)
  4. восторжествовали (17)
  5. восторжествовать (18)
spell: пробитую
  1. пролитую (14)
  2. прибитую (14)
  3. продиктую (15)
  4. прочитаю (16)
  5. пролитою (16)
spell: расплывались
  1. расписывались (14)
  2. расплевались (14)
  3. раскалывались (14)
  4. расползались (15)
  5. располагались (15)
spell: кляксы
  1. коляск (17)
  2. клямки (17)
  3. колосс (17)
  4. клялся (17)
  5. классы (17)
spell: туши
  1. тушил (15)
  2. тушит (15)
  3. тушки (15)
  4. тучи (16)
  5. тиши (16)
spell: люк
  1. глюк (16)
  2. лек (17)
  3. лак (17)
  4. люд (17)
  5. плю (17)
spell: раздавленной
  1. раздавленное (13)
  2. раздавленног (13)
  3. раздавленного (13)
  4. раздавленный (13)
  5. раздраженной (14)
spell: кривоватые
  1. хриповатым (16)
  2. кохловатые (16)
  3. красноваты (16)
  4. красноватые (16)
  5. кривоглазые (16)
spell: голубизны
  1. голубизну (14)
  2. полуубиты (15)
  3. голубчики (17)
  4. голубятни (17)
  5. голубиному (17)
spell: пологими
  1. полонили (16)
  2. положили (16)
  3. порогами (16)
  4. поглотим (16)
  5. волооким (16)
spell: склонами
  1. склонными (14)
  2. поклонами (15)
  3. колоннами (15)
  4. склянками (15)
  5. законами (16)
spell: размытому
  1. разумному (15)
  2. разбитому (15)
  3. разлитому (15)
  4. развитому (15)
  5. размытарит (17)
  ...
misspelled 8619 of 93652 words



Время: 03:49.

Время: 03:49.
© OSzone.net 2001-