pymorphy¶
Возможности библиотеки¶
Умеет приводит слово к нормальной форме (например, в ед.ч., И.п. для существительных):
>>> from pymorphy import get_morph >>> morph = get_morph('dicts/ru') >>> print morph.normalize(u"ЛЮДЕЙ") ЧЕЛОВЕК
Умеет ставить слово в нужную форму. Например, ставить слово во множественное число, менять падеж слова и т.д.:
>>> print morph.inflect_ru(u"СУСЛИК", u"мн,рд") # много кого? СУСЛИКОВ
Есть template filter, который позволяет делать это прямо в шаблоне django:
{# в переменной animals "тридцать восемь попугаев и Удав" #} {% load pymorphy_tags %} {{ animals|inflect:"дт" }} захотелось пройтись по лесу. {# выведет "тридцати восьми попугаям и Удаву захотелось пройтись по лесу" #}
Умеет возвращать грамматическую информацию о слове (число, род, падеж, часть речи и т.д.). Делает это по словарю, для неизвестных слов работает предсказатель, если возможных форм несколько - возвращает несколько форм:
>>> info = morph.get_graminfo(u"БУТЯВКОВЕДАМИ") >>> print info[0]['norm'] # нормальная форма БУТЯВКОВЕД >>> print info[0]['class'] # часть речи, С = существительное C >>> print info[0]['info'] # род, число, падеж и т.д. мр,мн,тв
Установка¶
Устанавливаем pymorphy
$ pip install pymorphy
Скачиваем словари. Для начала можно скачать файл с русскими словарями в sqlite.
Все словари лежат тут: https://bitbucket.org/kmike/pymorphy/downloads/
Распаковываем скачанный файл.
Пример использования¶
from pymorphy import get_morph
morph = get_morph('<путь/до/папки/в/которую/были/распакованы/скачанные/словари>')
#слова должны быть в юникоде и ЗАГЛАВНЫМИ
info = morph.get_graminfo(u'ВАСЯ')
Больше информации можно найти в Руководстве.
Note
В pymorphy все, что не относится к django, можно использовать без django.
Лицензия, полезные ссылки и т.д.¶
Лицензия - MIT.
Должно работать на windows и *nix-системах, python 2.5, 2.6 и 2.7. Python 2.4 не поддерживается.
- Обсуждение (тут можно задавать вопросы, делиться опытом, предлагать идеи)
- Сообщить об ошибке
- Репозиторий с исходным кодом
Подключайтесь к разработке! Замечания, исправления, документация, патчи в любом виде всегда приветствуются.
Если у вас какой-то вопрос, пишите о нем, по возможности, в гугл-группу - найденным ответом смогут потом воспользоваться другие люди.