Компания Explosion AI опубликовала выпуск свободной библиотеки spaCy с реализацией алгоритмов обработки текста на естественном языке (NLP, Natural Language
Processing). На практике проект может применяться для построения автоответчиков, ботов, классификаторов текста и различных диалоговых систем, определяющих смысл фраз. Библиотека написана на языке Python c элементами на Cython, расширении Python, допускающем прямой вызов функций на языке Си. Код проекта распространяется под лицензией MIT. Языковые модели подготовлены для 58 языков, включая русский.
Библиотека рассчитана на предоставление постоянного API, не привязанного к используемым алгоритмам и готового для применения в реальных продуктах. Для обработки информации библиотека использует самые свежие достижения в области NLP и наиболее эффективный из имеющихся алгоритмов. В случае появления более эффективного алгоритма библиотека переводится на него, но такой переход не отражается на API и приложениях. Особенностью spaCy также является архитектура, рассчитанная на обработку документов целиком, без предварительной обработки в препроцессорах, разбивающих документ на фразы. Модели предлагаются в двух вариантах – для достижения максимальной производительности и наибольшей точности.
Основные возможности spaCy:
- Поддержка около 60 языков.
- Доступность уже натренированных моделей для разных языков и применений.
- Многозадачное обучение с применением предварительных натренированных трансформеров, таких как BERT (Bidirectional Encoder Representations from Transformers).
- Поддержка предварительно натренированных векторов расстановки и встраивания слов.
- Высокая производительность.
- Система тренировки моделей, готовая для рабочего применения.
- Лингвистически мотивированное разбиение на токены.
- Наличие готовых компонентов для cвязывания именованных сущностей, маркировки частей речи, классификации текста, разбора зависимостей на основе меток, дробления предложений, пометки частей речи, морфологического анализа, лемматизации и т.п.
- Поддержка расширения функциональности при помощи пользовательских компонентов и атрибутов.
- Поддержка создания собственных моделей на базе PyTorch, TensorFlow и других фреймворков.
- Встроенные инструменты для визуализации синтаксиса и cвязывания именованных сущностей (NER, Named Entity Recognition).
- Простой процесс упаковки и развёртывания моделей, а также управления рабочим процессом.
- Высокая точность.
Выпуск spaCy 3.0 примечателен реализацией модели для русского языка. Модель предложена в трёх вариантах (16 МБ, 41 МБ – 20 тысяч векторов и 491 МБ – 500 тысяч векторов), оптимизирована для низкой нагрузки на CPU и включает компоненты tok2vec, morphologizer, parser, senter, ner, attribute_ruler и lemmatizer.
- Новый рабочий процесс тренировки моделей.
- Новая система конфигурации.
- Поддержка моделей (pipeline) на основе трансформеров, подходящих для многозадачного обучения.
- Возможность подключения собственных моделей, используя различные фреймворки машинного обучения, такие как PyTorch, TensorFlow и MXNet.
- Поддержка проектовдля управления всеми этапами рабочих процессов, от препроцессинга до развёртывания моделей.
- Поддержка интеграции с пакетами Data Version Control (DVC), Streamlit, Weights & Biases и Ray.
- Новые встроенные компоненты: SentenceRecognizer, Morphologizer, Lemmatizer, AttributeRuler и Transformer.
- Новый API для создания собственных компонентов.