Spark NLP
| Spark NLP | |
|---|---|
| Тип | Обработка естественного языка |
| Автор | John Snow Labs |
| Написана на | Python, Scala |
| Операционные системы | Linux, Windows, macOS, OS X |
| Первый выпуск | октябрь 2017 |
| Последняя версия | 5.2.3 (январь 2024) |
| Репозиторий | github.com/JohnSnowLabs/… |
| Лицензия | Apache License 2.0 |
| Сайт | sparknlp.org |
Spark NLP — библиотека для обработки текста с открытым исходным кодом, предназначенная для расширенной обработки естественного языка на языках программирования Python, Java и Scala[1][2][3]. Библиотека построена на платформе Apache Spark и её библиотеке Spark ML[4].
Цель Spark NLP — предоставить API для конвейеров обработки естественного языка, реализующих новейшие академические исследования на уровне промышленного, масштабируемого и обучаемого программного обеспечения. В библиотеке доступны предобученные модели нейронных сетей, конвейеры обработки и эмбеддинги, а также поддержка обучения собственных моделей[4].
Возможности
Концепция библиотеки основана на использовании «конвейера» (pipeline) — упорядоченного набора аннотаторов текста[5]. Среди готовых аннотаторов: токенизация, нормализация, стемминг, лемматизация, регулярные выражения, TextMatcher, chunker, DateMatcher, SentenceDetector, DeepSentenceDetector, аннотирование частей речи, ViveknSentimentDetector, анализ тональности, распознавание именованных сущностей, аннотатор на базе условных случайных полей, аннотатор глубокого обучения, проверка орфографии и коррекция, парсер зависимостей, typed dependency parser, классификация документов, определение языка текста[6].
Платформа Models Hub представляет собой сервис для обмена как открытыми, так и лицензионными предобученными моделями и конвейерами. Она включает конвейеры с токенизацией, лемматизацией, аннотированием частей речи, распознаванием именованных сущностей и предоставляет модели для более чем тринадцати языков; эмбеддинги слов, такие как GloVe, ELMo, BERT, ALBERT, XLNet, Small BERT и ELECTRA; эмбеддинги предложений, включая Universal Sentence Embeddings (USE)[7] и Language Agnostic BERT Sentence Embeddings (LaBSE)[8]. Также поддерживаются предобученные модели для более чем двухсот языков. Базовый код Spark NLP включает токенизаторы для восточноазиатских языков (китайский, японский, корейский), для языков, пишущихся справа налево (урду, фарси, арабский, иврит), а также предобученные многоязычные эмбеддинги слов и предложений (например, LaUSE) и аннотатор перевода.
Применение в медицине
Spark NLP for Healthcare — коммерческое расширение Spark NLP для клинического и биомедицинского текст-майнинга[9]. Оно предоставляет аннотаторы, конвейеры, модели и эмбеддинги, ориентированные на здравоохранение, для распознавания клинических сущностей, связывания сущностей, нормализации, определения статуса утверждения, де-идентификации, извлечения отношений и исправления орфографии.
Библиотека также предоставляет доступ к нескольким клиническим и биомедицинским трансформерам: JSL-BERT-Clinical, BioBERT, ClinicalBERT[10], GloVe-Med, GloVe-ICD-O. Также доступны более 50 предобученных медицинских моделей для распознавания сущностей: клинических, лекарственных средств, факторов риска, анатомии, демографических и конфиденциальных данных.
Spark OCR
Spark OCR — ещё одно коммерческое расширение Spark NLP для задач оптического распознавания символов (OCR) на изображениях, сканированных PDF-документах и файлах DICOM[6]. Данный программный модуль создан на базе Apache Spark. Встроены возможности предобработки изображений для повышения качества распознавания текста: адаптивная пороговая фильтрация, удаление шума, определение и коррекция перекоса, адаптивное масштабирование, анализ структуры документа и определение регионов страницы, кадрирование изображения, удаление фоновых объектов.
Благодаря тесной интеграции Spark OCR и Spark NLP возможно объединение NLP- и OCR-конвейеров для задач извлечения текста из изображений, данных из таблиц, распознавания и выделения именованных сущностей в PDF-документах или маскировки персональных данных для деидентификации изображений[11].
Spark OCR поддерживает различные форматы вывода, такие как PDF, изображения, файлы DICOM с аннотированными или замаскированными сущностями, текст для дальнейшей обработки в Spark NLP и других библиотеках, структурированные форматы (JSON, CSV) и Spark-фреймы данных.
Также возможно распределение OCR-задач между несколькими узлами кластера Spark.
Лицензия и распространение
Spark NLP распространяется под лицензией Apache License 2.0. Исходные коды доступны на GitHub, также имеются документация и обучающие материалы. Готовые сборки Spark NLP доступны через PyPi и Anaconda Repository для Python, через Maven Central для Java и Scala, а также через Spark Packages для работы в Spark.
Награды
В марте 2019 года Spark NLP получил Open Source Award за вклад в область обработки естественного языка для Python, Java и Scala[12].
Примечания
- ↑ Ellafi, Saif Addin Comparing production-grade NLP libraries: Running Spark-NLP and spaCy pipelines (англ.). O'Reilly Media (28 февраля 2018). Дата обращения: 29 марта 2019. Архивировано 28 марта 2018 года.
- ↑ Ellafi, Saif Addin Comparing production-grade NLP libraries: Accuracy, performance, and scalability (англ.). O'Reilly Media (28 февраля 2018). Дата обращения: 29 марта 2019. Архивировано 6 марта 2018 года.
- ↑ Ewbank, Kay Spark Gets NLP Library. www.i-programmer.info. Архивировано 20 марта 2025 года.
- ↑ 1 2 Thomas, Alex. Natural Language Processing with Spark NLP: Learning to Understand Text at Scale. — First. — USA : O'Reilly Media, июль 2020. — ISBN 978-1492047766.
- ↑ Talby, David Introducing the Natural Language Processing Library for Apache Spark — The Databricks Blog (амер. англ.). Databricks (19 октября 2017). Дата обращения: 27 августа 2019. Архивировано 22 октября 2017 года.
- ↑ 1 2 Jha, Bineet Kumar; G, Sivasankari G.; R, Venugopal K. (2 мая 2021). “Sentiment Analysis for E-Commerce Products Using Natural Language Processing”. Annals of the Romanian Society for Cell Biology: 166—175 – via www.annalsofrscb.ro.
- ↑ Cer, Daniel; Yang, Yinfei; Kong, Sheng-yi; Hua, Nan; Limtiaco, Nicole; John, Rhomni St; Constant, Noah; Guajardo-Cespedes, Mario; et al. (12 апреля 2018), Universal Sentence Encoder, arΧiv:1803.11175 [cs.CL].
- ↑ Feng, Fangxiaoyu; Yang, Yinfei; Cer, Daniel; Arivazhagan, Naveen & Wang, Wei (3 июля 2020), Language-agnostic BERT Sentence Embedding, arΧiv:2007.01852 [cs.CL].
- ↑ Team, Editorial The Use of NLP to Extract Unstructured Medical Data From Text (амер. англ.). insideBIGDATA (4 сентября 2018). Дата обращения: 27 августа 2019. Архивировано 20 мая 2024 года.
- ↑ Alsentzer, Emily; Murphy, John; Boag, William; Weng, Wei-Hung; Jindi, Di; Naumann, Tristan; McDermott, Matthew (июнь 2019). “Publicly Available Clinical BERT Embeddings”. Proceedings of the 2nd Clinical Natural Language Processing Workshop. Association for Computational Linguistics: 72—78. arXiv:1904.03323. DOI:10.18653/v1/W19-1909. S2CID 102352093. Проверьте дату в
|date=(справка на английском) - ↑ A Unified CV, OCR & NLP Model Pipeline for Document Understanding at DocuSign. NLP Summit. Дата обращения: 18 сентября 2020. Архивировано 27 апреля 2025 года.
- ↑ Civis Analytics, Okera, Sigma Computing and Spark NLP Named Winners of Strata Data Awards. O'Reilly Media. Дата обращения: 29 марта 2019. Архивировано 1 августа 2020 года.
Литература
- Thomas, Alex. Natural Language Processing with Spark NLP: Learning to Understand Text at Scale. — O'Reilly Media, 21 июля 2020. — ISBN 978-1492047766.
- Quinto, Butch. Next-Generation Machine Learning with Spark. — Берли, Калифорния : Apress, 2020. — ISBN 978-1-4842-5668-8. — doi:10.1007/978-1-4842-5669-5.
Ссылки
- https://github.com/JohnSnowLabs/spark-nlp — исходный код Spark NLP