Лаборатория анализа данных Александра Кукушкина
26 subscribers
8 links
Download Telegram
to view and join the conversation
Лаборатория разрабатывает и поддерживает проект Natasha — набор открытых качественных инструментов для обработки естественного русского языка. Named entity recognition (NER) — важная задача NLP, часто встречается на практике. Найти в тексте судебного акта названия компаний-сторон, извлечь из резюме имя и контакты — примеры NER.

Самое качественно открытое решение NER для русского языка сейчас у команды DeepPavlov из МФТИ. Их алгоритм работает на GPU, модель занимает 2ГБ. Качество Natasha на 1 процентный пункт хуже, модель в 75 раз меньше (27МБ), работает в 2 раза быстрее на CPU (25 новостных статей в секунду). Публикуем техническую статью с описанием решения https://natasha.github.io/ner.
С компактными моделями удобно работать. Они быстро запускаются, используют мало памяти, на один инстанст помещается больше параллельных процессов.

В NLP 80-90% весов модели приходится на таблицу с эмбедингами. Библиотека Navec — часть проекта Natasha, набор компактных эмбедингов для русского языка, размер в 5-6 раз меньше решений от RusVectores (51МБ), качество на 1 процентный пункт хуже. Про алгоритм в технической статье http://natasha.github.io/navec/
Публичный размеченный датасет — большая ценность, датасет на русском языке — сокровище. В репозитории Corus проекта Natasha мы коллекционируем ссылки на открытые русскоязычные источники. Сейчас в реестре 60 датасета, для 30 есть функции-загрузчики на Python. Примеры источников в статье http://natasha.github.io/corus
Сегментация — базовая задача NLP, часто встречается на практике. Найти в судебном акте результативную часть, поделить её на параграфы — примеры задач сегментации. Библиотека Razdel — часть проекта Natasha, наш сегментационный движок, для предложений и токенов показывает качество выше других открытых решений. Описание алгоритма в технической статье https://natasha.github.io/razdel
Natasha — не научный проект, мы решаем практические задачи. Важно проверить качество инструментов на публичных бенчмарках, постараться занять высокое место, не проиграть в производительности. Мы проделали большую работу: для 6 задач русскоязычного NLP завернули 32 открытых решения в Docker-контейнеры, измерили качество, скорость работы и потребление памяти. Подробно про задачу NER в статье https://natasha.github.io/naeval. Таблицы с результатами в репозитории Naeval https://github.com/natasha/naeval.
На секции NLP на Datafest в прошлые выходные был закрытый доклад про проект Natasha, теперь доступна запись https://www.youtube.com/watch?v=-7XT_U6hVvk. Короткое содержание:

Проект Natasha — набор открытых инструментов для русского языка, упор на практичность: компактные модели, быстро работает на CPU.

Yargy-парсер — замена для Томита-парсера, удобный Python-интерфейс, нормальная документация.

Natasha — библиотека-комбайн, тонкая обёртка над другими технологиями проекта, интерфейс похож на Spacy, нужна для демонстрации, не надо скачивать модели, настраивать.

Razdel — сегментация на слова и предложения, движок на правилах, быстро работает, топовое качество на новостях и худлите.

Slovnet — аналог Deeppavlov, NER на 1 проц пункт хуже SOTA Deeppavlov BERT NER, размер модели в 75 раз меньше (30МБ), быстро работает на CPU, аналогичные модели для морфологии и синтаксиса. В докладе подробнее про устройство решения, суть в дистилляции.

Navec — аналог RusVectores, размер архива в 5 раз меньше (50МБ), размер словаря в 2 раза больше (500К), вместо пар "слово_POS-тег" просто "слово". В докладе подробнее про устройство, суть в квантизации.

Naeval — сравнение открытых решений для русского: качество, размер модели, производительность. ~30 решений в Docker-контейнерах с веб-интерфейсом: Deeppavlov, Spacy, Stanza, Pullenti, Texterra, Tomita.

Corus — ~70 источников с датасетами для русского, ~30 с функциями-загрузчиками на Python: Taiga, Omnia Russica (Taiga 2.0), UD.