b1rdex / text-lang-correct
0.1.8
2023-08-04 08:10 UTC
Requires
- php: >=7.4
- ext-mbstring: *
Requires (Dev)
- phpstan/phpstan: ^0.12.73
- phpunit/phpunit: ^9
README
Automatic correction of the language for words in the text because of the wrong keyboard layout. Автоматическое исправление языка для слов в тексте из-за неправильной раскладки клавиатуры
Purpose
- Корректировка поисковых запросов
- Корректировка существующих и новых текстов, публикуемых посетителями на веб-сайтах.
Features
- Режим
SIMILAR_CHARS
. Исправление ошибочно набранных букв в словах, которые выглядят одинаково в разных раскладках клавиатуры. Незаметные латинские буквы среди русских исправляются в русские и наоборот. Алгоритм работает достаточно надёжно и быстро. - Режим
KEYBOARD_LAYOUT
. Исправление ошибочно набранных слов в другой раскладке клавиатуры. Для определения языка используются N-граммы. Алгоритм может иногда ошибаться, работает в разы медленнее, чем SIMILAR_CHARS. Алгоритм постоянно совершенствуется. Для поддержания качества существует тестовый набор слов, который в поставку не входит. - Двухстороннее исправление слов для русского и английского языка.
- Исправление слов на смешанном языке.
- Кодировка символов — Text\Util\UTF8.
- Класс может работать без расширений
mbstring
иiconv
!
Examples
"\xd1\x81\xd0\xbesm\xd0\xbe" => 'cosmo' (2 первых и последняя буква — ошибочные)
"\x78\x70\x65н" => 'хрен' (первые 3 буквы — ошибочные)
"вебvfcnth" => 'вебмастер'
"webьфыеук" => 'webmaster'
"цццюмуыеш.ru" => 'www.vesti.ru'
"\x54.\x43.\x48\x61вка" => 'Т.С.Навка'
Пример работы алгоритма для поля ввода с автодополнением
- Сделать выборку из БД по исходному запросу;
- Если есть результат, возвратить его и исходный запрос;
- Иначе скорректировать исходный запрос через
Text\Text_LangCorrect
; - Если исходный и скорректированный запрос совпадает, возвратить пустой результат и исходный запрос;
- Иначе сделать выборку из БД по скорректированному запросу;
- Возвратить результат. Если результат не пустой, возвратить скорректированный запрос, иначе исходный.