Skip to content

Commit

Permalink
DOC update user guide
Browse files Browse the repository at this point in the history
  • Loading branch information
kmike committed May 1, 2015
1 parent b077413 commit bd2b17b
Showing 1 changed file with 20 additions and 9 deletions.
29 changes: 20 additions & 9 deletions docs/user/guide.rst
Expand Up @@ -21,7 +21,7 @@ DAWG_ вместо `DAWG-Python`_), что позволит pymorphy2 работ

::

pip install -U pymorphy2-dicts
pip install -U pymorphy2-dicts-ru

Для установки требуются более-менее современные версии pip и setuptools.

Expand All @@ -47,12 +47,12 @@ DAWG_ вместо `DAWG-Python`_), что позволит pymorphy2 работ
>>> morph = pymorphy2.MorphAnalyzer()

Экземпляры класса :class:`MorphAnalyzer` обычно занимают порядка
10-15Мб оперативной памяти (т.к. загружают в память словари, данные
15Мб оперативной памяти (т.к. загружают в память словари, данные
для предсказателя и т.д.); старайтесь организовать свой код так,
чтобы создавать экземпляр :class:`MorphAnalyzer` заранее и работать
с этим единственным экземпляром в дальнейшем.

С помощью метода :meth:`MorphAnalyzer.parse` можно разобрать слово::
С помощью метода :meth:`MorphAnalyzer.parse` можно разобрать отдельное слово::

>>> morph.parse('стали')
[Parse(word='стали', tag=OpencorporaTag('VERB,perf,intr plur,past,indc'), normal_form='стать', score=0.983766, methods_stack=((<DictionaryAnalyzer>, 'стали', 884, 4),)),
Expand Down Expand Up @@ -216,18 +216,25 @@ pymorphy2 выкидывает исключение, если встречает
>>> morph.cyr2lat('СУЩ,од,мр мн,тв')
'NOUN,anim,masc plur,ablt'

.. _inflection:

Склонение слов
--------------

pymorphy2 умеет склонять (ставить в какую-то другую форму) слова.
Чтобы просклонять слово, его нужно сначала разобрать - понять, в какой
форме оно стоит в настоящий момент и какая у него :term:`лексема`::
Чтобы просклонять слово, нужно сначала понять, в какой форме оно
стоит в настоящий момент и какая у него :term:`лексема`.
Другими словами, нужно сперва разобрать слово и выбрать из предложенных
вариантов разбора правильный.

Для примера разберем слово "бутявка" и возьмем первый вариант разбора::

>>> butyavka = morph.parse('бутявка')[0]
>>> butyavka
Parse(word='бутявка', tag=OpencorporaTag('NOUN,inan,femn sing,nomn'), normal_form='бутявка', score=1.0, methods_stack=((<DictionaryAnalyzer>, 'явка', 8, 0), (<UnknownPrefixAnalyzer>, 'бут')))

Для склонения используйте метод :meth:`Parse.inflect`::
Получив объект :class:`~.Parse`, можно просклонять слово, используя
его метод :meth:`Parse.inflect`::

>>> butyavka.inflect({'gent'}) # нет кого? (родительный падеж)
Out[13]:
Expand Down Expand Up @@ -257,8 +264,10 @@ pymorphy2 умеет склонять (ставить в какую-то дру
Постановка слов в начальную форму
---------------------------------

Как уже было написано, нормальную (начальную) форму слова можно получить
через атрибуты :attr:`Parse.normal_form` и :attr:`Parse.normalized`.
Нормальную (начальную) форму слова можно получить через атрибуты
:attr:`Parse.normal_form` и :attr:`Parse.normalized`. Чтоб получить
объект :class:`~.Parse`, нужно сперва разобрать слово и выбрать правильный
вариант разбора из предложенных.

Но что считается за нормальную форму? Например, возьмем слово "думающим".
Иногда мы захотим нормализовать его в "думать", иногда - в "думающий",
Expand Down Expand Up @@ -296,6 +305,8 @@ pymorphy2 сейчас использует алгоритм нахождени
>>> butyavka.make_agree_with_number(5).word
'бутявок'

.. _select-correct:

Выбор правильного разбора
-------------------------

Expand All @@ -318,7 +329,7 @@ score - это оценка P(tag|word), оценка вероятности т
вычисляется условная вероятность тега (с исползованием сглаживания Лапласа).

На данный момент оценки P(tag|word) на основе OpenCorpora есть
примерно для 15 тыс. слов (исходя из примерно 110тыс. наблюдений).
примерно для 20 тыс. слов (исходя из примерно 250тыс. наблюдений).
Для тех слов, для которых такой оценки нет, вероятность P(tag|word) либо
считается равномерной (для словарных слов), либо оценивается на основе
эмпирических правил (для несловарных слов).
Expand Down

0 comments on commit bd2b17b

Please sign in to comment.