Python правописание русский текст

Исправление орфографии в Python с помощью TextBlob

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

Первая программа, реализующая проверку орфографии, была написана в 1971 году для DEC PDP-10. Названный SPELL, он был способен выполнять только простые сравнения слов и обнаруживать различия в одной или двух буквах. По мере развития аппаратного и программного обеспечения появляются и средства проверки орфографии. Современные средства проверки правописания способны обрабатывать морфологию и использовать статистику для улучшения предложений.

Python предлагает множество модулей для этих целей, что делает написание простой проверки орфографии легким 20-минутным испытанием.

Одной из этих библиотек является TextBlob, которая используется для обработки естественного языка и предоставляет интуитивно понятный API для работы.

В этой статье мы рассмотрим, как реализовать исправление орфографии в Python с помощью TextBlob.

Установка

Во-первых, нам нужно установить TextBlob, поскольку он не предустановлен. Откройте консоль и установите его с помощью pip:

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

TextBlob построен на основе NLTK, поэтому он также поставляется с установкой.

Функция correct()

Самый простой способ исправить вводимый текст — использовать метод correct() . В качестве примера мы будем использовать абзац из книги Чарльза Дарвина «О происхождении видов», которая является частью общественного достояния и упакована в файл с именем text.txt .

Кроме того, мы добавим несколько умышленных орфографических ошибок:

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

Если вы раньше работали с TextBlob, этот алгоритм будет вам знаком. Мы прочитали файл и его содержимое и создали экземпляр TextBlob , передав содержимое конструктору.

Затем мы запускаем функцию correct() в этом экземпляре для исправления орфографии.

После запуска приведенного выше сценария вы должны получить примерно такой результат:

Насколько верна коррекция орфографии TextBlob?

Как видим, в тексте все еще есть орфографические ошибки. Слова вроде «abl» должны были быть «able» , а не «all» . Хотя даже с ними все равно лучше оригинала.

Теперь возникает вопрос, насколько это лучше?

Следующий фрагмент кода представляет собой простой сценарий, который проверяет, насколько хорошо TextBlob исправляет ошибки, на основе этого примера:

Теперь, используя эти две функции, давайте проведем быстрый анализ:

Запустив его, вы распечатаете:

Как мы видим, методу correct удалось уменьшить процент орфографических ошибок с 60,6% до 15,9%, что довольно неплохо, однако есть небольшая загвоздка. Он исправил 54,7% слов, так почему все еще остается 15,9% ошибок?

Ответ — чрезмерное исправление. Иногда он может изменить слово, которое написано правильно, например, первое слово в нашем примере текста, где «As» было исправлено «Is» . В других случаях ему просто не хватает информации о слове и контексте, чтобы сказать, какое слово пользователь намеревался ввести, поэтому он догадывается, что его следует заменить «whl» на «while» вместо «whole» .

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

Обучающий TextBlob с настраиваемыми наборами данных

Что, если вы хотите проверить орфографию на другом языке, который не поддерживается TextBlob из коробки? Или, может быть, вы хотите быть немного точнее? Что ж, может быть способ добиться этого. Все сводится к тому, как работает проверка орфографии в TextBlob.

TextBlob использует статистику использования слов на английском языке, чтобы делать разумные предложения по поводу того, какие слова следует исправить. Он хранит эту статистику в файле с именем en-spelling.txt , но также позволяет вам создать свой собственный файл статистики использования слов.

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

В нашем случае остальная часть книги предоставит отличный контекст и дополнительную информацию, которая потребуется TextBlob для более точного исправления.

Если мы заглянем в файл train.txt , то увидим:

Это означает, что слово «a» отображается как слово 3389 раз, а «ably» только 5 раз. Чтобы проверить эту обученную модель, мы будем использовать suggest(text) вместо correct(text) , который представляет собой список кортежей доверия слов. Первым элементом в списке будет слово, в котором он уверен, поэтому мы можем получить к нему доступ через suggest(text)[0][0] .

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

И теперь это приведет к:

Это исправляет примерно 2 из 3 слов с ошибками, что довольно хорошо, учитывая запуск без особого контекста.

Проверка орфографии в Python

Проверка заклинаний в Python – это функция программного обеспечения, которая проверяет ошибки в тексте. Функции проверки заклинаний часто встраиваются в программное обеспечение или услуги,

  • Автор записи

Автор: Pankaj Kumar
Дата записи

Проверка орфографии в Python

Проверка заклинаний в Python – это функция программного обеспечения, которая проверяет ошибки в тексте. Функции проверки заклинаний часто встраиваются в программное обеспечение или услуги, такие как процессор Word, клиент электронной почты, электронный словарь или поисковая система.

Создание проверки орфографии в Python

Давайте начнем с создания нашего инструмента проверки орфографии!

1. Импорт модулей

Мы построим наш инструмент проверки заклинаний с двумя разными модулями:

  • ScreenChecker модуль
  • Module TextBlob

Давайте начнем с установки и их импорта одного за другим.

Для создания проверки орфографии в Python нам нужно импортировать Модуль ScreenChecker Отказ Если у вас нет модуля, вы можете установить то же самое, используя Диспетчер пакетов PIP Отказ

Вы также можете установить Module TextBlob одинаково

2. Проверка орфографии с использованием модуля TextBlob

TextBlob На языке программирования Python Python Библиотека для обработки текстовых данных. Он обеспечивает простую API для погружения в общие задачи по обработке натурального языка, таких как часть теговой метки речи, существительное извлечение фразов, анализ настроения, классификации, перевод и многое другое.

Правильная () Функция: Самый простой способ исправить текст ввода – использовать правильно () метод.

3. Проверка орфографии с использованием модуля ScreenChecker

Давайте посмотрим, как работает модуль ScreenChiker, чтобы исправить ошибки предложения!

Экземпляр OrcreChecker будет называться несколько раз в этой программе. Он держит большое количество слов. В случае, если вы вводите сообщения с ошибками, если это не в словаре ScreenChecker, это исправить его. Так что это важное, что вы знаете об этой библиотеке.

Заключение

Это было вкратце о том, как вы можете построить свой собственный контроль заклинаний, используя язык Python Programming, с простым в коде, учиться и понимать в очень меньшей линейке кода.

Как проверить правописание с помощь Python pyenchant?

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

Рассмотрим вопрос применения модуля Python pyenchant для обнаружения ошибок в словах и возможность их исправления.

При подготовке различной текстовой документации, договоров, отчётов и т.д. важно соблюдать правописание. Используемые в настоящее время программные средства, в частности MS Office Word, подсвечивают слова, в которых допущены ошибки. Это очень удобно и, что немаловажно, наглядно.

Но нам может понадобиться автоматизировать обнаружение ошибок в текстах при отсутствии упомянутых выше программных средств. Либо, при их наличии, делать это, не открывая документ/множество документов. Или же искомый текст может быть попросту очень длинным, его проверка займёт много времени.

На помощь приходят небезызвестный язык программирования Python и модуль pyenchant, который не только позволяет проверять правописание слов, но и предлагает варианты исправления.

Для установки модуля используется стандартная команда:

Код для проверки правописания слова довольно прост:

Намеренно допустим ошибку в проверяемом слове:

Мы можем вывести список возможных исправлений слова:

Вывод: [‘driver’, ‘drainer’, ‘Rivera’]

Читатель скорее всего заинтересуется, предоставляет ли модуль возможность проверять правописание слов русского языка, и ответ – да. Однако, по умолчанию это недоступно, нам нужен словарь. Он может быть найден, например, в пакете LibreOffice по пути его установки:

Здесь нам нужны два файла: «ru_RU.aff» и «ru_RU.dic». Их необходимо разместить в папке модуля enchant, где хранятся словари для других языков по пути

Теперь, при создании объекта Dict достаточно передать строку «ru_RU», и мы сможем работать со словами русского языка.

Вернёмся к нашему примеру с ошибочно написанным словом driver. При помощи метода suggest() мы получили список возможных исправлений, и вручную мы конечно же легко сможем выбрать нужный вариант.

Но что, если мы хотим автоматизировать и этот процесс?

Давайте использовать модуль Python difflib, который позволяет сравнивать строковые последовательности. Попробуем выбрать из списка слово «driver»:

Немного прокомментируем код. В словаре sim будут храниться значения степеней сходства (диапазон от 0 до 1) предложенных методом suggest() класса Dict слов с искомым словом («draiver»). Данные значения мы получаем в цикле при вызове метода ratio() класса SequenceMatcher и записываем в словарь. В конце получаем слово, которое максимально близко к проверяемому.

Вывод: Correct word is driver

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

Вывод: [‘kar’, ‘ameizing’]

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

Вывод: [‘neim’, ‘thiz’]

Как видно, адрес электронной почты не был выведен в качестве последовательности, содержащей ошибки в правописании.

Таким образом, комбинируя возможности модулей enchant и difflib, мы можем получить действительно мощный инструмент, позволяющий не только обнаруживать ошибки, но и подбирать варианты исправления с довольно высокой точностью, а также вносить эти исправления в текст.

Следующая статья: как правильно забивать гвозди микроскопом

Может не догоняю чего то. Но есть же Word, подчеркнёт все что надо

Говоря о pyenchant, мы подразумеваем прежде всего автоматизацию, например, это может быть подготовка текстовых данных для машинного обучения. При работе с машинным обучением важна чистота данных, сами данные могут храниться в большом количестве простых текстовых файлах. Довольно затратно будет копировать тексты из каждого файла в документ Word и вручную просматривать все подчёркнутые слова. Также pyenchant может пригодиться при разработке приложения для полностью автоматического поиска и/или исправления «ошибочных» слов: загрузил «грязный» документ, получил «чистый».

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

88% кликов на неё поддельные, поэтому ключевое обещание программатика привлечь исключительно заинтересованную аудиторию — уже само по себе мошенничество. Почему рекламным агентствам невыгодно с этим бороться и что делают компании — рассказал профессор маркетинга Скотт Гэллоуэй.


источники:

http://pythobyte.com/spell-checker-in-python-26b0e822/

http://vc.ru/dev/174452-kak-proverit-pravopisanie-s-pomoshch-python-pyenchant