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