Skip to content

Koziev/rupostagger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rupostagger - частеречная разметка для русского языка

Пакет позволяет распознать части речи и некоторую другую грамматическую информацию (падеж, число, род и так далее) для слов в предложении.

Установка

Наберите в консоли, возможно потребуется sudo:

pip install git+https://github.com/Koziev/rupostagger

Для работы пакета необходимо установить rusyllab и ruword2tags, а также python-crfsuite. Для установки этих пакетов выполните:

pip install -r requirements.txt

Использование

Для использования необходимо создать экземпляр класса RuPosTagger, затем выполнить загрузку словарной базы и языковой модели вызовом метода load(). Затем можно делать распознавание списка слов методом tag, который принимает список слов. Разбивку предложения на слова необходимо выполнять сторонними средствами заранее, я для прототипирования NLP решений использую свой пакет rutokenizer.

Пример:

import rupostagger

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

Результат работы:

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

Для каждого слова возвращается строка, содержащая набор тегов, разделенных символом вертикальной черты. Первый тэг это всегда наименование части речи, остальные теги имеют формат название_тега=значение. Наименования частей речи и значения остальных тегов соответствуют соглашениям Universal Dependencies.

Тренировочный датасет

В архиве samples.gz находится полный датасет для обучения модели. Морфологическая разметка в основном следует стандарту Universal Dependencies, за исключением некоторых второстепенных деталей. В частности, не используется класс DET, вместо него указывается ADJ.

Оценки точности

Для объективной оценки использован размеченный корпус из проекта OpenCorpora. Оцениваются отдельно метрики для существительных (классы NOUN, PROPN, LATN, ROMN), прилагательных (ADJ), глаголов (VERB). По каждой части речи собирается статистика корректности как метки грамматического класса (recall и precision), так и пары из класса и морфологических тегов (соответственно NOUN+tags, ADJ+tags, VERB+tags). Из-за немного разных принципов морфологической разметки точное сопоставление всех тегов невозможно. Поэтому оценивается только совпадение ключевых тегов для каждого из вышеперечисленных классов. Для существительных проверялись теги Case и Number. Для прилагательных проверялись теги Case, Number и Gender. Для глаголов сравливались теги Number и Gender.

Метрики:

NOUN support=29790
NOUN recall=0.9828801611278952
NOUN precision=0.9949031600407747
NOUN+tags precision=0.9626024590163934

ADJ support=8156
ADJ recall=0.9776851397743992
ADJ precision=0.9032623470774808
ADJ+tags precision=0.9653875094055681

VERB support=8908
VERB recall=0.995958688819039
VERB precision=0.9678193520235627
VERB+tags precision=0.9994364292155095

About

Part-of-Speech Tagger for Russian language

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages