Spark NLP — это библиотека обработки естественного языка на Scala, Python и Java с открытым исходным кодом; построена на основе Apache Spark и Spark ML, а также применяет методы глубокого обучения фреймворка TensorFlow [1]. Библиотека предоставляет простой API для интеграции с ML Pipelines. Коммерчески поддерживается John Snow Labs [2].
Для чего используется
Цель Spark NLP обеспечить API c конвейерами обработки естественного языка, которые реализует самые современные и передовые технологии в этой области с поддержкой масшатбируемости и внедрения в производство.
Библиотека предлагает готовые предобученные модели нейронных сетей, конвейеры и векторные представления слов, а также поддерживается обучение пользовательских моделей. Готовые модели включают: ELMo, BERT, RoBERTa, ALBERT, XLNet, Ernie, ULMFiT, OpenAI transformer. В том числе на русском и украинском языках [3].
Spark NLP направлен в первую очередь на внедрение моделей в производство. Этим он сходен с другой библиотекой обработки данных на естественном языке — spaCy. Тем не менее, согласно данным O`Reilly библиотека Spark NLP пользуется большим спросом, чем spaCy [4].
Главные особенности Spark NLP
В библиотеке используется концепция конвейера: упорядоченный набор текстовых аннотаторов. Стандартные аннотаторы включают в себя:
- Токенизатор
- Нормализатор
- Стеммер
- Лемматизатор
- Извлечение сущностей
- Извлечение дат
- Часть речевого теггера
- Признание именованных сущностей
- Обнаружение границы предложения
- Анализ тональности текстов (Sentiment analysis)
- Проверки орфографии
- Парсинг на основе регулярных выражений и контекстной грамматики
- Разметка частей речи
- Классификация (многоклассовая, многоязычная) документов
Также в Spark NLP входит более 1100 предобученных конвейеров и моделей на более чем 192 языках [3].
Spark OCR
Spark OCR — еще одно коммерческое расширение библиотеки для оптического распознавания символов (optical character recognition) из изображений, отсканированных документов PDF и файлов DICOM. Это программная библиотека, созданная на основе Apache Spark, которая предлагает следующие возможности:
- Алгоритмы предварительной обработки изображений для улучшения результатов распознавания
- Адаптивная установка пороговых значений и шумоподавлений
- Обнаружение и исправление отклонений
- Адаптивное масштабирование
- Анализ макета и детектирование областей
- Изменение размеров изображения
- Удаление объектов на заднем фоне
- Распознавание текста путем объединения конвейеров NLP и OCR:
- Извлечение текста из изображений (оптическое распознавание символов)
- Извлечение данных из таблиц
- Распознавание и выделение именованных объектов в PDF-документах
- Маскировка чувствительного текста с целью удаления конфедециальной информации
- Генерация вывода в разных форматах:
- PDF, изображения или файлы DICOM с аннотированными или маркированными объектами
- Цифровой текст для последующей обработки в библиотеке
- Форматы структурированных данных (JSON и CSV) в виде файлов или Spark DataFrame
Spark NLP в медицине
В библиотеке присутствует расширение для майнинга медицинских текстов. Предоставляются аннотаторы, конвейеры, модели и векторные представления в области медицины и здравоохранения. Так, Spark NLP предлагает доступ к нескольким клиническим и биомедицинским преобразователям: JSL-BERT-Clinical, BioBERT, ClinicalBERT, GloVe-Med, GloVe-ICD-O. Включено более 50 предварительно обученных моделей здравоохранения, которые могут распознавать следующие сущности:
- Клинические — вспомогательные признаки, симптомы, методы лечения, процедуры, тесты, лаборатории
- Препараты — название, дозировка, сила, способ действия, продолжительность, частота
- Факторы риска — курение, ожирение, диабет, гипертония, злоупотребление психоактивными веществами
- Анатомия — орган, подгруппа, клетка, структура организма, ткань, ген, химикат
- Демографические данные — возраст, пол, рост, вес, рас, этническая принадлежность, семейное положение, показатели жизнедеятельности
- Конфиденциальные данные — ФИО, адреса, телефоны, электронная почта, даты
Читайте также:
Источники: