Skip to content

IvankovCL/heritage_morphchecker2.0

Repository files navigation

Morphchecker

Модуль Python 3.6 для обнаружения и коррекции морфологических ошибок

Статья

Morphchecker for non-standard data: a tool for morphological error correction in learner corpora https://docs.google.com/document/d/1_QR2Us4znALsUEjiOh2pw3m8Y0PD-Fb0KKO8EAoXPGc/edit?usp=sharing

Запуск

Прежде всего необходимо установить дистрибутив Anaconda.

Для корректной работы модуля необходима 32х-битная версия Anaconda / Python 3.6.

Скачать можно по ссылке: https://repo.continuum.io/archive/Anaconda3-4.3.1-Windows-x86.exe

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

pip install pymystem3 pymorphy2 pylev pyenchant

Использовать программу можно в командной строке или запустив файл morphchecker.py в Anaconda:

Интерфейс командной строки

python morphchecker.py [option1] [string]    
# для исправления орфографических или морфологических ошибок в слове или тексте (определяется с помощью options)    

python morphchecker.py input.txt output.txt
# для исправления морфологических ошибок в текстовом файле 

options:
-m [word]   исправление морфологических ошибок в слове
-s [word]   исправление орфографичкских ошибок в слове
-t [text]   исправление морфологических ошибок в тексте

Использование в Anaconda

Собственно коррекция морфологических ошибок:

>>> m = Morphchecker()
>>> m.mcheck('баллотировается')
ИСПРАВЛЕНИЯ: [(3, 'баллотируется')]

Коррекция орфографических ошибок:

>>> m = Morphchecker()
>>> m.spellcheck('баллотировается')
СПЕЛЛЧЕК: ['баллотироваться', 'баллотировавшийся', 'баллотирования', 'баллотирование']

Локализация ошибки:

>>> m = Morphchecker()
>>> mchecked = m.mcheck('баллотировается')
>>> m.analyse(mchecked)
Если "баллотируется" - правильное исправление, то морфема 'ова' употреблена вместо морфемы "у"

Используемые ресурсы

  • Модуль morphchecker.py, реализующий общий алгоритм обнаружения и исправления ошибок
  • Модуль prjscript.py, реализующий алгоритм деления слов на морфемы
  • Модуль проверки орфографии, созданный для русского эритажного корпуса: https://bitbucket.org/emeshch/heritage_spell_checker
  • Машиночитаемая версия словаря морфем А.И. Кузнецовой, содержащий информацию о входящих в слово (в форме именительного падежа) морфемах и их алломорфах (resources/umorphodict2.csv)
  • Словарь Hunspell, содержащий правила изменения леммы слова во все возможные для него формы (resources/ru_RU.dic; resources/ru_RU.aff)

Основной алгоритм

  1. Чтение файлов словарей.
  2. Получение списка исправлений от спеллчекера или информации о том, что в слове нет ошибок.
  3. Деление ошибочного слова на морфемы. Извлечение корня и окончания. Определение граммем окончания по словарю.
  4. Лемматизация выдачи спеллчекера.
  5. Сравнение части речи каждой леммы со списком граммем окончания.
  6. Сравнение корня ошибочного слова со списком алломорфов леммы.
  7. Определение по словарю набора правил, доступного для леммы с учётом граммем окончания.
  8. Постановка леммы в формы, соответствующие граммемам окончания.
  9. Вычисление расстояния Левенштейна между полученными исправлениями и ошибочным словом. Остаются исправления с минимальным расстоянием.
  10. Поморфемное сравнение оставшихся исправлений с ошибочным словом и локализация места ошибки.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published