Модуль 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] исправление морфологических ошибок в тексте
Собственно коррекция морфологических ошибок:
>>> 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)
- Чтение файлов словарей.
- Получение списка исправлений от спеллчекера или информации о том, что в слове нет ошибок.
- Деление ошибочного слова на морфемы. Извлечение корня и окончания. Определение граммем окончания по словарю.
- Лемматизация выдачи спеллчекера.
- Сравнение части речи каждой леммы со списком граммем окончания.
- Сравнение корня ошибочного слова со списком алломорфов леммы.
- Определение по словарю набора правил, доступного для леммы с учётом граммем окончания.
- Постановка леммы в формы, соответствующие граммемам окончания.
- Вычисление расстояния Левенштейна между полученными исправлениями и ошибочным словом. Остаются исправления с минимальным расстоянием.
- Поморфемное сравнение оставшихся исправлений с ошибочным словом и локализация места ошибки.