1. Mikhail Korobov
  2. pymorphy2

Commits

Mikhail Korobov  committed 933f70b

extended docs about word normalization

  • Participants
  • Parent commits 9fd1fec
  • Branches default

Comments (0)

Files changed (1)

File docs/user/guide.rst

View file
  • Ignore whitespace
     >>> p.normalized
     Parse(word='стать', tag=OpencorporaTag('INFN,perf,intr'), normal_form='стать', estimate=1.0, methods_stack=((<DictionaryAnalyzer>, 'стать', 883, 0),))
 
+.. note::
+
+    См. также: :ref:`normalization`.
+
 Кроме того, у каждого разбора есть :term:`тег`::
 
     >>> p.tag
      Parse(word='бутявками', tag=OpencorporaTag('NOUN,inan,femn plur,ablt'), normal_form='бутявка', estimate=0.5, methods_stack=((<DictionaryAnalyzer>, 'явками', 8, 11), (<UnknownPrefixAnalyzer>, 'бут'))),
      Parse(word='бутявках', tag=OpencorporaTag('NOUN,inan,femn plur,loct'), normal_form='бутявка', estimate=0.5, methods_stack=((<DictionaryAnalyzer>, 'явках', 8, 12), (<UnknownPrefixAnalyzer>, 'бут')))]
 
+.. _normalization:
+
+Постановка слов в начальную форму
+---------------------------------
+
+Как уже было написано, нормальную (начальную) форму слова можно получить
+через атрибуты :attr:`Parse.normal_form` и :attr:`Parse.normalized`.
+
+Но что считается за нормальную форму? Например, возьмем слово "думающим".
+Иногда мы захотим нормализовать его в "думать", иногда - в "думающий",
+иногда - в "думающая".
+
+Посмотрим, что сделает pymorphy2 в этом примере:
+
+    >>> m.parse('думающему')[0].normal_form
+    'думать'
+
+pymorphy2 сейчас использует алгоритм нахождения нормальной формы,
+который работает наиболее быстро (берется первая форма
+в :term:`лексеме <лексема>`) - поэтому, например, все причастия сейчас
+нормализуются в инфинитивы. Это можно считать деталью реализации.
+
+Если требуется нормализовывать слова иначе, можно воспользоваться
+методом :meth:`Parse.inflect`::
+
+    >>> m.parse('думающему')[0].inflect({'sing', 'nomn'}).word
+    'думающий'
+
 Согласование слов с числительными
 ---------------------------------
 
-Слово нужно ставить в разные формы в зависимости от числительного, к которому оно относится. Например: "1 бутявка", "2 бутявки", "5 бутявок"
+Слово нужно ставить в разные формы в зависимости от числительного,
+к которому оно относится. Например: "1 бутявка", "2 бутявки", "5 бутявок"
 
 Для этих целей используйте метод :meth:`Parse.make_agree_with_number`::
 
     'бутявки'
     >>> butyavka.make_agree_with_number(5).word
     'бутявок'
+