Яндекс исправление ошибок программа

Обзор открытых решений для исправления опечаток

Время на прочтение

У каждого пользователя когда-либо были опечатки при написании поисковых запросов. Отсутствие механизмов, которые исправляют опечатки, приводит к выдаче нерелевантных результатов, а то и вовсе к их отсутствию. Поэтому, чтобы поисковая система была более ориентированной на пользователей, в неё встраивают механизмы исправления ошибок.

Яндекс исправление ошибок программа

Яндекс исправление ошибок программа

Пользователи совершают опечатки приблизительно в 10-15% случаях. При этом 83,6% запросов имеют одну ошибку, 11,7% –две, 4,8% – более трёх. Контекст важен в 26% случаев.

Очевидно, что возможность контекстно-зависимого исправления усложняет построение автокорректора, т. к. дополнительно к модели ошибок добавляется необходимость в языковой модели. Но если обратить внимание на статистику опечаток, то ¾ всех неверно написанных поисковых запросов можно исправлять без контекста. Это говорит о том, что польза как минимум от контекстно-независимого автокорректора может быть весьма существенной.

Также контекстно-зависимое исправление для корректировки опечаток в запросах очень требовательно по ресурсам. Например, в одном из выступлений Яндекса список пар для исправления опечаток (биграмм) слов отличался в 10 раз по сравнению с количеством слов (униграмм), что тогда говорить про триграммы? Очевидно, что это существенно зависит от вариативности запросов. Немного странно выглядит, когда автокорректор занимает половину памяти от предлагаемого продукта компании, целевое назначение которого не ориентировано на решение проблемы правописания. Так что вопрос внедрения контекстно-зависимого исправления в поисковых системах программных продуктов может быть весьма спорным.

Проверка качества работы

Вопрос проверки качества работы автокорректора весьма неоднозначен. Один из простых подходов проверки — через точность (Precision) и полноту (Recall). В соответствии со стандартом ISO, точность и полнота дополняются правильностью (на англ. «corectness»).

Яндекс исправление ошибок программа

Полнота (Recall) рассчитывается следующим образом: список из правильных слов подается автокорректору (Total_list_true), и, количество слов, которое автокорректор считает правильными (Spellchecker_true), разделенное на общее количество правильных слов (Total_list_true), будет считаться полнотой.

Для определения точности (Precision) на вход автокорректора подается список из неправильных слов (Total_list_false), и, количество слов, которое автокорректор считает неправильным (Spell_checker_false), разделенное на общее количество неправильных слов (Total_list_false), определяют как точность.

Насколько вообще эти метрики информативны и как могут быть полезны, каждый определяет самостоятельно. Ведь, фактически, суть данной проверки сводится к тому, что проверяется вхождение слова в обучающий словарь. Более наглядной метрикой можно считать correctness, согласно которой автокорректор для каждого слова из тестового множества неправильных слов формирует список кандидатов-замен, на которые можно исправить это неправильное слово (следует иметь в виду, что здесь могут оказаться слова, которые не содержатся в обучающем словаре). Допустим, размер такого списка кандидатов-замен равен 5. Исходя из того, что размер списка равен 5, будет сформировано 6 групп, в одну из которых мы будем помещать наше каждое исходное неправильное слово по следующему принципу: в 1-ую группу — если в списке кандидатов-замен предполагаемое нами правильное слово стоит 1-ым, во 2-ую если стоит 2-ым и т. д., а в последнюю группу — если предполагаемого правильного слова в списке кандидатов-замен не оказалось. Разумеется, чем больше слов попало в 1-ую группу и чем меньше в 6-ую, тем лучше работает автокорректор.

Для проверки качества работы контекстно-независимого автокорректора был создан собственный генератор опечаток, который генерировал опечатки неверной раскладки и орфографические опечатки исходя из статистики по опечаткам, представленной Яндексом. Для орфографических опечаток генерировались произвольные вставки, замены, удаления, перестановки, а количество ошибок так же варьировалось в соответствии с этой статистикой. Для ошибок искаженной раскладки, правильное слово посимвольно изменялось целиком в соответствии с таблицей перевода символов.

Далее была проведена серия экспериментов для всего списка слов обучающего словаря (слова обучающего словаря исправлялись на неправильные в соответствии с вероятностью возникновения той или иной опечатки). В среднем, автокорректор исправляет слова верно в 75% случаев. Вне всякого сомнения, это количество будет сокращаться при пополнении обучающего словаря близкими по редакционному расстоянию словами, большом многообразии словоформ. Эта проблема может решаться за счет дополнения языковыми моделями, но здесь следует учитывать, что количество требуемых ресурсов ощутимо возрастет.

Готовые решения

Яндекс исправление ошибок программа

Рассмотрение готовых решений проводилось с уклоном на собственное использование, и приоритет отдавался автокорректорам, которые удовлетворяют трем критериям:
1) язык реализации,
2) тип лицензии,
3) обновляемость.

В продуктовой разработке язык Java считается одним из самых популярных, поэтому приоритет при поиске библиотек отдавался ему. Из лицензий актуальны: MIT, Public, Apache, BSD. Обновляемость — не более 2-х лет с последнего обновления. В ходе поиска фиксировалась дополнительная информация, например, о поддерживаемой платформе, требуемые дополнительные программы, особенности применения, возможные затруднения при первом использовании и т. д. Ссылки с основными и полезными ресурсами на источники приведены в конце статьи. В целом, если не ограничиваться вышеупомянутыми критериями, количество существующих решений велико. Давайте кратко рассмотрим основные, а более подробно уделим внимание лишь некоторым.

Исторически одним из самых старых автокорректоров является Ispell (International Spell), написан в 1971 на ассемблере, позднее перенесен на C и в качестве модели ошибок использует редакционное расстояние Дамерау-Левенштейна. Для него даже есть словарь на русском языке. В последующем ему на замену пришли два автокорректора HunSpell (ранее MySpell) и Aspell. Оба реализованы на на C++ и распространяются под GPL лицензиями. На HunSpell также распространяется GPL/MPL и его используют для исправления опечаток в OpenOffice, LibreOffice, Google Chrome и других инструментах.

Для Интернета и браузеров есть целое множество решений на JS (сюда можно отнести: nodehun-sentences, nspell, node-markdown-spellcheck, Proofreader, Spellcheck-API — группа решений, базирующаяся на автокорректоре Hunspell; grunt-spell — под NodeJS; yaspeller-ci — обертка для автокорректора Яндекс.Спеллер, распространяется под MIT; rousseau — Lightweight proofreader in JS — используется для проверки правописания).

В категорию платных решений входят: Spellex; Source Code Spell Checker — как десктопное приложение; для JS: nanospell; для Java: Keyoti RapidSpell Spellchecker, JSpell SDK, WinterTree (у WinterTree можно даже купить исходный код за $5000).

Для текстовых редакторов, в частности для VIM сделаны vim-dialect, vim-ditto — распространяются под публичной лицензией; для Notepad++ разработан DspellCheck на C++, лицензия GPL; для Emacs сделан инструмент автоматического определения языка при печати, называется guess-language, распространяется под публичной лицензией.

Есть отдельные сервисы от поисковых гигантов: Яндекс.Спеллер — от Яндекса, про обертку к нему было сказано выше, google-api-spelling-java (соответственно, от Google).

Выбор Naumen

Яндекс исправление ошибок программа

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

В качестве основных недостатков решения можно выделить необходимость знания Java, отсутствие подробных кейсов использования и подробной документации, что отражается на снижении скорости разработки решения для Data-Science специалистов. Кроме того, не исправляются опечатки с расстоянием по Дамерау-Левенштейну более 2-х. Опять же, если отталкиваться от опечаточной статистики, более 2-х ошибок в слове возникает реже, чем в 5% случаев. Обоснована ли необходимость усложнения алгоритма, в частности, увеличение потребляемой памяти? Тут уже зависит от кейса заказчика. Если есть дополнительные ресурсы, то почему бы их не использовать?

Основные ресурсы по доступным автокорректорам:

  • 30 best open source spellcheck project
  • Evaluation of legal words in three Java open source spell checkers: Hunspell, Basic Suggester, and Jazzy
  • spell checker: Java Glossary
  • nlp — Looking for Java spell checker library
  • Open source spell checking library for Java

Яндекс Спеллер

Яндекс исправление ошибок программа

Прежде всего, что такое Яндекс Спеллер? Это программа для орфографической проверки текстов на ошибки. Сервис этот предназначен не только для пользователей в первую очередь, но и для писателей, копирайтеров, а также веб-разработчиков и мастеров, так как прежде чем заполнить свой сайт контентом, его можно проверить на ошибки в автоматическом режиме.

И даже не «можно», а «нужно», так как текстовый контент представляет собой «лицо» вашего сайта и предоставляемых услуг. Ничто так не отвернет потенциального покупателя или клиента, как грубые ошибки орфографии в тексте статьи, документа, рекламы или описания товара.

Яндекс Спеллер используется в почтовом сервисе службы и в «Баре» Яндекса. В нем содержится более трех миллионов словоформ русского языка — по содержанию это самый внушительный словарь на просторах Рунета. Кроме этого сервис «владеет» еще двумя языками — украинским (в словаре около двух миллионов словоформ) и английским (приблизительно 150 тысяч словоформ).

Что входит в Яндекс Спеллер?

Поддержка формата НТМL. API сервиса позволит найти ошибки не только в обычном тексте, но и в содержимом страниц HTML.

Поддержка ASPELL/ISPELL. Пользователь может применять сервис в самых различных редакторах текста, которые работают с ASPELL.

Словарь, который постоянно обновляется. Например, в последнюю версию были добавлены слова с приставкой «пол».

Как происходит проверка

В основе программы лежит аналитика частоты употребления тех или иных слов, а это помогает осуществлять проверку наиболее точно, а также оказывает помощь при выборе вариантов подсказки. Кроме того в сервисе предусмотрено большое количество разнообразных опций, что позволяет максимально упростить работу и подстроить сервис под себя.

Спеллер постоянно обновляется и дополняется новыми словами (а потому не удивляется словам «плагин», «роутер» или «кэшироваться»). Проверяя сложный текст с терминами, сервис не будет без надобности подчеркивать его красным.

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

Кроме этого, Яндекс Спеллер помогает тем, кто ежедневно загружает огромные объемы текста и физически не может их проверить. В этом случае текст просто вставляется в окно проверки, выбирается команда «Проверить» —  и все неверно написанные слова будут выделены, а ваше время — не затрачено на долгую и утомительную проверку!

Проверка правописания анализирует текст и слова исходя из современных орфографических и лексических правил. Безусловно, не гарантируется стопроцентной вероятности нахождения и исправления всех ошибок, но все же большинство неверных слов будет найдено благодаря проверке из орфографического словаря.

Какие ошибки сервис сможет найти и исправить

1. Если в слове пропущена или, наоборот, есть лишняя буква, ошибка («пррезентация», «прзнтация», «призентация»).

2. Если использован КапсЛок не по назначению («пРЕЗЕНТАЦИЯ»)- так называемая «ошибка капитализации», то есть неправильное написание прописных и строчных букв в слове.

3. Если одно и то же слово ошибочно использовано дважды («Презентация прошла прошла успешно»).

Ошибки пунктуации, грамматики (например, ошибки в согласовании слов) и стилистики онлайн-сервис не находит и не исправляет. Однако они не так бросаются в глаза, как грубейшие ошибки орфографии, а потому пользователи и посетители вашего сайта могут их и не заметить.

Яндекс Спеллер стремится облегчить жизнь пользователя, пользующегося большими объемами контента, не имеющего времени на вдумчивую проверку, и не дает ему забыть правила русского языка.

Проверка орфографии в Яндекс. Браузере

Яндекс браузер – это удобный инструмент для повседневного серфинга, а также скачивания пользовательских файлов в виде электронных документов, картинок, видео и аудио. Разработчики предусмотрели несколько встроенных возможностей, которые стоит изучить подробнее.

Поэтому сегодня мы поговорим о том, есть ли проверка орфографии в Яндекс.Браузере, каково назначение функции и как её активировать.

Назначение функции

Автоматическая проверка орфографии поможет избежать досадных ошибок в словах при общении в социальных сетях, а также при написании поисковых запросов.

Технически это реализовано следующим образом:

  • Переходим «Сообщения» в социальной сети, например, во ВКонтакте.
  • Активируем строку для ввода и пишем сообщение.
  • Слова, указанные с опечатками, автоматически подсвечиваются красной волнистой линией.

Яндекс исправление ошибок программа

Клик по выделенному слову ПКМ активирует контекстное меню с вариантами исправления, согласно встроенному словарю и подключенному языковому пакету.

Яндекс исправление ошибок программа

Активация проверки

Встроенные алгоритмы работают в автоматическом режиме. Пользователю только доступны возможности добавления языка:

  • Активируем иконку в виде трех горизонтальных полос в правом верхнем углу пользовательского окна.
  • В выпадающем списке выбираем вариант «Настройки».
  • Активируем вкладку «Системные» в левой навигационной панели.
  • Пролистываем открывшуюся страничку до упора и кликаем по надписи «Настройки языка и региона».
  • Находим блок «Проверка орфографии», кликаем по кнопке «Добавить язык».
  • В новом окне галочками выделяем языковые пакеты, уже установленные в браузер.

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

Если говорить о мобильной версии поисковика от Яндекса, то возможности активировать проверку нельзя. Такая возможность есть в системных настройках самого устройства.

Заключение

Проверка орфографии в Yandex Browser – это удобный вариант, чтобы оставаться грамотным пользователем во время переписок и поисковых запросов. Разработчики позаботились о пользователях и внедрили соответствующий функционал.

Решаем проблему грамотности в интернете с помощью Яндекс. Спеллера

Яндекс исправление ошибок программа

И то же самое, когда он безграмотный.

К сожалению, невозможно заставить всех людей выучить правила и начать писать без ошибок. Это факт, с которым нужно смириться — ошибки в интернете есть и будут.

А что, если подойти к этой проблеме с другой стороны? Как было бы здорово иметь такой браузер, который при открытии страницы проверял бы текст и исправлял все ошибки. Или хотя бы часть. Ведь, по правде говоря, ошибки воспринимаются по-разному: забытая запятая скорее всего останется незамеченной, в то время как какие-нибудь «извени» или «правельно» вызывают кратковременное бешенство.

Тогда зачем эта статья, если ничего не получилось?

Отрицательный результат — тоже результат. Эту статью я пишу по двум причинам:
Во-первых, чтобы следующий человек, которому придет эта идея в голову, не изобретал все с нуля, а мог опереться на мои результаты.
А во-вторых, вдруг найдется человек, который сможет развить эту идею дальше.

Реализация

Реализация проста — я написал букмарклет (wiki). Загружаем страницу, нажимаем на букмарклет — запускается js-скрипт, который проверяет орфографию и исправляет ошибки.

Для проверки орфографии я использовал прекрасный сервис — Яндекс.Спеллер — api.yandex.ru/speller (Условия использования сервиса «API Яндекс.Спеллер» — legal.yandex.ru/speller_api ).

Замена выполняется на первое предложенное сервисом слово.

Имеется ограничение — запрос не должен превышать 10000 символов. Учитывая то, что 1 русская буква — это 6 символов в URL-encoded виде (буква «а» — это %D0%B0), то получается существенное ограничение. Весь текст приходится разбивать на несколько фрагментов. Для средней страницы какого-нибудь форума приходится выполнять десяток-другой запросов.

Для тех, кто хочет испытать скрипт на себе, исходный код — ссылка на bitbucket.

То же самое, но в одну строчку:

Чтобы попробовать, нужно создать закладку в браузере и в поле URL вписать этот код.

Результаты

Первые впечатления — изумительно! Исправляет все ошибки. На удивление — исправляет даже географические названия, имена, названия компаний.

Вот несколько примеров.

Красным выделены исходные слова, зеленым — на что заменилось.

Яндекс исправление ошибок программа

Яндекс исправление ошибок программа

Яндекс исправление ошибок программа

Но, к сожалению, не все так радужно. Есть и обратная сторона — ложные срабатывания. Кажется, их даже побольше, чем исправленных ошибок. Особенно это заметно на тематических сайтах с переизбытком всяких терминов и сленга (как Хабр, например).

Яндекс исправление ошибок программа

Яндекс исправление ошибок программа

Этот факт огорчает и сводит на нет все плюсы от использования скрипта.
Но все же надеюсь, что кому-то мои эксперименты оказались полезными.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *