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

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

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

Часть речи

Граммема Значение Примеры
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'

Падеж

Граммема Значение Пояснение Примеры
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, чтоб с ними было проще работать.

Число

Граммема Значение Примеры
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.

Род

Граммема Значение Примеры
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.

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

В 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')