
.. _grammeme-docs:

Обозначения для граммем (русский язык)
======================================

В pymorphy2 для русского языка используются словари OpenCorpora
и :term:`граммемы <граммема>`, принятые в OpenCorpora (с небольшими изменениями).

Полный список граммем OpenCorpora доступен тут: http://opencorpora.org/dict.php?act=gram

.. _russian-POS:

Часть речи
----------

==========   =============================     =================================
Граммема     Значение                          Примеры
==========   =============================     =================================
NOUN         имя существительное               хомяк
ADJF         имя прилагательное (полное)       хороший
ADJS         имя прилагательное (краткое)      хорош
COMP         компаратив                        лучше, получше, выше
VERB         глагол (личная форма)             говорю, говорит, говорил
INFN         глагол (инфинитив)                говорить, сказать
PRTF         причастие (полное)                прочитавший, прочитанная
PRTS         причастие (краткое)               прочитана
GRND         деепричастие                      прочитав, рассказывая
NUMR         числительное                      три, пятьдесят
ADVB         наречие                           круто
NPRO         местоимение-существительное       он
PRED         предикатив                        некогда
PREP         предлог                           в
CONJ         союз                              и
PRCL         частица                           бы, же, лишь
INTJ         междометие                        ой
==========   =============================     =================================

Часть речи можно получить через атрибут POS::

    >>> p = morph.parse('идти')[0]
    >>> p.tag.POS
    'INFN'

.. _russian-cases:

Падеж
-----

========   ===================    ===========================    ================================
Граммема   Значение               Пояснение                      Примеры
========   ===================    ===========================    ================================
nomn       именительный           Кто? Что?                      **хомяк** ест
gent       родительный            Кого? Чего?                    у нас нет **хомяка**
datv       дательный              Кому? Чему?                    сказать **хомяку** спасибо
accs       винительный            Кого? Что?                     хомяк читает **книгу**
ablt       творительный           Кем? Чем?                      зерно съедено **хомяком**
loct       предложный             О ком? О чём? и т.п.           хомяка несут в **корзинке**
voct       звательный             Его формы используются         **Саш**, пойдем в кино.
                                  при обращении к человеку.
gen2       второй родительный                                    ложка **сахару**
           (частичный)                                           *(gent - производство сахара)*;
                                                                 стакан **яду**
                                                                 *(gent - нет яда)*
acc2       второй винительный                                    записался в **солдаты**
loc2       второй предложный                                     я у него в **долгу**
           (местный)                                             *(loct - напоминать о долге)*;
                                                                 висит в **шкафу**
                                                                 *(loct - монолог о шкафе)*;
                                                                 весь в **снегу**
                                                                 *(loct - писать о снеге)*
========   ===================    ===========================    ================================

Падеж выделяется у существительных, полных прилагательных, полных причастий,
числительных и местоимений. Получить его можно через атрибут case::

    >>> p = morph.parse('хомяку')[0]
    >>> p.tag.case
    'datv'

.. note::

    В OpenCorpora (на июль 2013) есть еще падежи gen1 и loc1. Они указываются
    вместо gent/loct, когда у слова есть форма gen2/loc2. В pymorphy2 gen1 и
    loc1 заменены на gent/loct, чтоб с ними было проще работать.

.. _russian-numbers:

Число
-----

==========   =============================     =================================
Граммема     Значение                          Примеры
==========   =============================     =================================
sing         единственное число                хомяк, говорит
plur         множественное число               хомяки, говорят
==========   =============================     =================================

::

    >>> p = morph.parse('люди')[0]
    >>> p.tag.number
    'plur'


Некоторые имена существительные употребляются только во множественном числе;
им проставлена пометка Pltm ("Pluralia tantum")::

    >>> morph.parse('дрова')[0].tag
    OpencorporaTag('NOUN,inan,GNdr,Pltm plur,accs')

Существуют также существительные, употребляемые только в единственном числе;
им проставлена пометка Sgtm ("Singularia tantum")::

    >>> morph.parse('молоко')[0].tag
    OpencorporaTag('NOUN,inan,neut,Sgtm sing,nomn')

Ни Sgtm, ни Pltm не являются значениями p.tag.number.

.. _russian-genders:

Род
---

==========   =============================     =================================
Граммема     Значение                          Примеры
==========   =============================     =================================
masc         мужской род                       хомяк, говорил
femn         женский род                       хомячиха, говорила
neut         средний род                       зерно, говорило
==========   =============================     =================================

::

    >>> p = morph.parse('зерно')[0]
    >>> p.tag.gender
    'neut'

В русском языке существует понятие "общего рода"; некоторые слова
могут употребляться применительно к людям мужского или женского пола:
"он бедный сирота", "она бедная сирота". Таким словам проставлена пометка
``Ms-f``::

    >>> p = morph.parse('сирота')[0]
    >>> 'Ms-f' in p.tag
    True

Существуют также существительные, у которых род не выражен; им проставлена
пометка ``GNdr``. Ни ``Ms-f``, ни ``GNdr`` не является значением p.tag.gender.

.. _non-standard-grammemes:

Нестандартные граммемы
----------------------

В pymorphy2 используются некоторые граммемы, отсутствующие
в словаре OpenCorpora:

========  ===================================================================
Граммема  Значение
========  ===================================================================
LATN      Токен состоит из латинских букв (например, "foo-bar" или "Maßstab")
PNCT      Пунктуация (например, ``,`` или ``!?`` или ``…``)
NUMB      Число (например, "204" или "3.14")
intg      целое число (например, "204")
real      вещественное число (например, "3.14")
ROMN      Римское число (например, XI)
UNKN      Токен не удалось разобрать
========  ===================================================================

Пример::

    >>> p = morph.parse('...')[0]
    >>> p.tag
    OpencorporaTag('PNCT')
