pymorphy

Возможности библиотеки

  1. Умеет приводит слово к нормальной форме (например, в ед.ч., И.п. для существительных):

    >>> from pymorphy import get_morph
    >>> m = get_morph('dicts/ru')
    >>> print m.normalize(u"ЛЮДЕЙ")
    ЧЕЛОВЕК
    
  2. Умеет ставить слово в нужную форму. Например, ставить слово во множественное число, менять падеж слова и т.д.:

    >>> from pymorphy import get_morph
    >>> m = get_morph('dicts/ru')
    >>> print m.inflect_ru(u"СУСЛИК", u"мн,рд") # много кого?
    СУСЛИКОВ
    

    Есть template filter, который позволяет делать это прямо в шаблоне django:

    {% load pymorphy_tags %}
    
    {# в переменной animals "тридцать восемь попугаев и Удав" #}
    {{ animals|inflect:"дт" }} захотелось пройтись по лесу.
    
    {# выведет "тридцати восьми попугаям и Удаву захотелось пройтись по лесу" #}
  3. Умеет возвращать грамматическую информацию о слове (число, род, падеж, часть речи и т.д.). Делает это по словарю, для неизвестных слов работает предсказатель, если возможных форм несколько - возвращает несколько форм:

    >>> from pymorphy import get_morph
    >>> m = get_morph('dicts/ru')
    >>> info = m.get_graminfo(u"БУТЯВКОВЕДАМИ")
    >>> print info[0]['norm'] # нормальная форма
    БУТЯВКОВЕД
    >>> print info[0]['class'] # часть речи, С = существительное
    C
    >>> print info[0]['info'] # род, число, падеж и т.д.
    мр,мн,тв
    

Установка

  1. Устанавливаем pymorphy

    $ pip install pymorphy

    или:

    $ hg clone http://bitbucket.org/kmike/pymorphy/
    $ cd pymorphy
    $ ./setup.py install
  2. Скачиваем нужные словари

    Лежат тут: https://bitbucket.org/kmike/pymorphy/downloads/.

    Называются по формуле <язык>.<тип базы>-<формат данных>.zip.

    Для начала можно скачать файл ru.sqlite-json.zip.

    Примечание

    Больше про то, что это за разные типы словарей, и какой выбрать, можно почитать в следующем документе: Поддерживаемые типы хранилищ.

  3. Распаковываем скачанный словарь

Пример

from pymorphy import get_morph

morph = get_morph('<путь/до/папки/в/которую/были/распакованы/скачанные/словари>')

#слова должны быть в юникоде и ЗАГЛАВНЫМИ
info = morph.get_graminfo(u'ВАСЯ')

Больше информации можно найти в Руководстве и API-документации.

Информацию по использованию совместно с django можно найти в тут.

Примечание

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

Примечание

В pymorphy все, что не относится к django, можно использовать без django.

Лицензия, полезные ссылки и т.д.

Лицензия - MIT.

Должно работать на windows и *nix-системах, python 2.5, 2.6 и 2.7. Python 2.4 не поддерживается.

Подключайтесь к разработке! Замечания, исправления, документация, патчи в любом виде всегда приветствуются.

Project Versions

Содержание

Предыдущий раздел

Морфологический анализатор pymorphy

Следующий раздел

Руководство

На этой странице