Обозначения для граммем (русский язык)¶
В 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')