?

Log in

No account? Create an account

Компьютерная лингвистика

Новостная лента www.solarix.ru

Previous Entry Share Next Entry
rupostagger - простой пакет для частеречной разметки русскоязычных предложений
kelijah
Привел в порядок и выложил пакет rupostagger - простую (и не SOTA) реализацию алгоритма для разметки слов тегами. Пакет не делает ничего, кроме разметки, поэтому токенизацию надо делать самостоятельно. Я использую пакет под 2 и 3 веткой питона, под Windows и Linux. Батарейки (обученная русская языковая модель) входят в комплект, ничего самостоятельно обучать не надо. Также используется русская словарная база - отдельный пакет ruword2tags, и слогоделитель rusyllabs,  они указаны в requirements.txt.

После установки (pip install git+https://github.com/Koziev/rupostagger) использовать так:

import rupostagger

tagger = RuPosTagger()
tagger.load()
for word, label in tagger.tag(u'кошки спят'.split()):
 print(u'{} -> {}'.format(word, label))


Результат работы метода RuPosTagger.tag - список пар (слово, строка_с_тегами):

кошки -> NOUN|Case=Nom|Gender=Fem|Number=Plur
спят -> VERB|Mood=Ind|Number=Plur|Person=3|Tense=Notpast|VerbForm=Fin|Voice=Act




Как видно, теги отделяются символом вертикальной черты. Каждый тег, кроме части речи, состоит из наименования тега и его значения, разделенные знаком =. Я не стал бить строку и выдавать питоновский список тегов, поскольку под капотом теггер получает именно строку, а накладные расходы на манипуляции со списками могут быть и не нужны. Например, если нужно проверить, что слово - существительное, тогда достатночно вызвать startswith('NOUN|'), и так далее.

Набор тегов взят из Universal Dependencies.