diff --git a/docs/user/guide.rst b/docs/user/guide.rst index 28f35a1..4e7d56d 100644 --- a/docs/user/guide.rst +++ b/docs/user/guide.rst @@ -21,7 +21,7 @@ DAWG_ вместо `DAWG-Python`_), что позволит pymorphy2 работ :: - pip install -U pymorphy2-dicts + pip install -U pymorphy2-dicts-ru Для установки требуются более-менее современные версии pip и setuptools. @@ -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=((, 'стали', 884, 4),)), @@ -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=((, 'явка', 8, 0), (, 'бут'))) -Для склонения используйте метод :meth:`Parse.inflect`:: +Получив объект :class:`~.Parse`, можно просклонять слово, используя +его метод :meth:`Parse.inflect`:: >>> butyavka.inflect({'gent'}) # нет кого? (родительный падеж) Out[13]: @@ -257,8 +264,10 @@ pymorphy2 умеет склонять (ставить в какую-то дру Постановка слов в начальную форму --------------------------------- -Как уже было написано, нормальную (начальную) форму слова можно получить -через атрибуты :attr:`Parse.normal_form` и :attr:`Parse.normalized`. +Нормальную (начальную) форму слова можно получить через атрибуты +:attr:`Parse.normal_form` и :attr:`Parse.normalized`. Чтоб получить +объект :class:`~.Parse`, нужно сперва разобрать слово и выбрать правильный +вариант разбора из предложенных. Но что считается за нормальную форму? Например, возьмем слово "думающим". Иногда мы захотим нормализовать его в "думать", иногда - в "думающий", @@ -296,6 +305,8 @@ pymorphy2 сейчас использует алгоритм нахождени >>> butyavka.make_agree_with_number(5).word 'бутявок' +.. _select-correct: + Выбор правильного разбора ------------------------- @@ -318,7 +329,7 @@ score - это оценка P(tag|word), оценка вероятности т вычисляется условная вероятность тега (с исползованием сглаживания Лапласа). На данный момент оценки P(tag|word) на основе OpenCorpora есть -примерно для 15 тыс. слов (исходя из примерно 110тыс. наблюдений). +примерно для 20 тыс. слов (исходя из примерно 250тыс. наблюдений). Для тех слов, для которых такой оценки нет, вероятность P(tag|word) либо считается равномерной (для словарных слов), либо оценивается на основе эмпирических правил (для несловарных слов).