Обработка естественного языка (NLP) имеет множество вариантов использования: анализ тональности, обнаружение тем, определение языка, извлечение ключевых фраз и классификация документов.
В частности, вы можете использовать NLP для:
- Классификация документов. Например, можно пометить документы как конфиденциальные или нежелательные.
- Выполните последующую обработку или поиск. Для этих целей можно использовать выходные данные NLP.
- Обобщайте текст, определяя сущности, присутствующие в документе.
- Пометьте документы ключевыми словами. Для ключевых слов NLP может использовать идентифицированные сущности.
- Выполните поиск и извлечение на основе содержимого. Добавление тегов делает эту функцию возможной.
- Сводные сведения о важных темах документа. NLP может объединять идентифицированные сущности в разделы.
- Классификация документов для навигации. Для этого NLP использует обнаруженные разделы.
- Перечисление связанных документов на основе выбранного раздела. Для этого NLP использует обнаруженные разделы.
- Оценка текста для тональности. С помощью этой функции можно оценить положительный или отрицательный тон документа.
Apache, Apache® Spark и логотип пламени являются зарегистрированными товарными знаками или товарными знаками Apache Software Foundation в США и /или других странах. Использование этих меток не подразумевает подтверждения от Apache Software Foundation.
Потенциальные варианты использования
К бизнес-сценариям, которые могут воспользоваться пользовательскими NLP, относятся:
- Аналитика документов для рукописных или машинных документов в финансах, здравоохранении, розничной торговле, государственных и других секторах.
- Не зависящие от отрасли задачи NLP для обработки текста, такие как распознавание сущностей имен (NER), классификация, обобщение и извлечение связей. Эти задачи автоматизируют процесс извлечения, идентификации и анализа сведений о документах, таких как текст и неструктурированные данные. Примерами этих задач являются модели стратификации риска, классификация онтологии и сводные данные розничной торговли.
- Получение информации и создание графа знаний для семантического поиска. Эта функция позволяет создавать графы медицинских знаний, которые поддерживают обнаружение лекарств и клинические испытания.
- Перевод текста для диалоговых систем искусственного интеллекта в клиентских приложениях в розничной торговле, финансах, путешествиях и других отраслях.
Apache Spark в качестве настраиваемой платформы NLP
Apache Spark — это платформа параллельной обработки, которая поддерживает обработку в памяти, чтобы повысить производительность приложений для анализа больших данных. Azure Synapse Analytics, Azure HDInsight и Azure Databricks предоставляют доступ к Spark и используют возможности обработки.
Для настраиваемых рабочих нагрузок NLP Spark служит эффективной платформой для обработки большого объема текста. Эта библиотека NLP с открытым кодом предоставляет библиотеки Python, Java и Scala, которые предоставляют полные функциональные возможности традиционных библиотек NLP, таких как spaCy, NLTK, Стэнфорд CoreNLP и Open NLP. Spark NLP также предоставляет такие функции, как проверка орфографии, анализ тональности и классификация документов. Spark NLP улучшает предыдущие усилия, обеспечивая точность, скорость и масштабируемость.
Последние общедоступные тесты производительности показывают Spark NLP как 38 и 80 раз быстрее, чем spaCy, с сравнимой точностью для обучения пользовательских моделей. NLP Spark — это единственная библиотека с открытым кодом, которая может использовать распределенный кластер Spark. Spark NLP — это собственное расширение Spark ML, которое работает непосредственно с кадрами данных. В результате ускорение кластера приводит к еще одному упорядочению повышения производительности. Так как каждый конвейер NLP Spark является конвейером Spark ML, NLP Spark хорошо подходит для создания унифицированных конвейеров NLP и машинного обучения, таких как классификация документов, прогнозирование рисков и конвейеры рекомендаций.
Помимо отличной производительности, Spark NLP также обеспечивает высокую точность для растущего числа задач NLP. Команда NLP Spark регулярно читает последние актуальные академические документы и реализует современные модели. За последние два-три года лучшие модели использовали глубокое обучение. Библиотека поставляется с предварительно созданными моделями глубокого обучения для распознавания именованных сущностей, классификации документов, обнаружения тональности и распознавания эмоций и обнаружения предложений. Библиотека также включает десятки предварительно обученных языковых моделей, которые включают поддержку слов, фрагментов, предложений и внедрения документов.
Библиотека оптимизирована для процессоров, GPUS и новейших микросхем Intel Xeon. Вы можете масштабировать процессы обучения и вывода, чтобы воспользоваться преимуществами кластеров Spark. Эти процессы могут выполняться в рабочей среде на всех популярных платформах аналитики.
NLP-сервер доступен в Azure Marketplace. Чтобы изучить крупномасштабные пользовательские NLP в Azure, см. раздел NLP Server.
Сложности
- Для обработки коллекции текстовых документов свободной формы требуется значительный объем вычислительных ресурсов. Обработка также является ресурсоемкой. Такие процессы часто включают развертывание вычислительных ресурсов GPU.
- Без стандартного формата документа может быть трудно достичь согласованных точных результатов при использовании обработки текста свободной формы для извлечения определенных фактов из документа. Например, предположим, что в текстовом представлении счета может быть сложно создать процесс, который правильно извлекает номер счета и дату, когда счета находятся у разных поставщиков.
Основные критерии выбора
В Azure службы Spark, такие как Azure Databricks, Azure Synapse Analytics и Azure HDInsight, предоставляют функции NLP при их использовании с spark NLP. Azure Cognitive Services — это еще один вариант для функций NLP. Чтобы решить, какую службу использовать, рассмотрите следующие вопросы:
Вы хотите использовать предварительно созданные или предварительно обученные модели? Если да, рассмотрите возможность использования API, предоставляемых Azure Cognitive Services. Или скачайте свою модель по выбору с помощью Spark NLP.
Нужно ли обучать пользовательские модели на основе большой совокупности текстовых данных? Если да, рассмотрите возможность использования Azure Databricks, Azure Synapse Analytics или Azure HDInsight с Spark NLP.
Требуются ли низкоуровневые возможности NLP, например разметка, выделение корней слов, лемматизация и частота условия или инверсная частота в документе? Если да, рассмотрите возможность использования Azure Databricks, Azure Synapse Analytics или Azure HDInsight с Spark NLP. Или используйте библиотеку программного обеспечения с открытым исходным кодом в выбранном средстве обработки.
Требуются ли простые, высокоуровневые возможности NLP, например распознавание сущностей и намерений, распознавание темы, проверка орфографии и анализ тональности. Если да, рассмотрите возможность использования API, предоставляемых Cognitive Services. Или скачайте свою модель по выбору с помощью Spark NLP.
Матрица возможностей
В следующих таблицах перечислены основные различия в возможностях служб NLP.
Общие возможности
Функция | Служба Spark (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) с spark NLP | Azure Cognitive Services |
---|---|---|
Предоставление предварительно обученных моделей как услуги | Да | Да |
REST API | Да | Да |
Возможность программирования | Python, Scala | Поддерживаемые языки см. в разделе "Дополнительные ресурсы" |
Поддерживает обработку больших наборов данных и больших документов | Да | Нет |
Низкоуровневые возможности NLP
Возможности аннаторов | Служба Spark (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) с spark NLP | Azure Cognitive Services |
---|---|---|
Детектор предложений | Да | Нет |
Средство обнаружения глубоких предложений | Да | Да |
Создатель маркеров | Да | Да |
Генератор N-грамм | Да | Нет |
Сегментация слов | Да | Да |
Парадигматический модуль | Да | Нет |
Лемматический модуль | Да | Нет |
Добавление тегов к частям речи | Да | Нет |
Средство синтаксического анализа зависимостей | Да | Нет |
Перевод | Да | Нет |
Средство очистки стоп-слов | Да | Нет |
Исправление орфографии | Да | Нет |
Нормализатор | Да | Да |
Сопоставитель текста | Да | Нет |
TF/IDF | Да | Нет |
Сопоставление регулярных выражений | Да | Внедрено в службу Распознавание речи (LUIS). Не поддерживается в conversational Распознавание речи (CLU), которая заменяет LUIS. |
Сопоставитель дат | Да | Возможно в LUIS и CLU с помощью распознавтелей DateTime |
Фрагментер | Да | Нет |
Высокоуровневые возможности NLP
Функция | Служба Spark (Azure Databricks, Azure Synapse Analytics, Azure HDInsight) с spark NLP | Azure Cognitive Services |
---|---|---|
Проверка орфографии | Да | Нет |
Сводка | Да | Да |
Ответы на вопросы | Да | Да |
Определение тональности | Да | Да |
Распознавание эмоций | Да | Поддержка интеллектуального анализа мнений |
Классификация маркеров | Да | Да, с помощью пользовательских моделей |
Классификация текста | Да | Да, с помощью пользовательских моделей |
Текстовое представление | Да | Нет |
Распознавание именованных сущностей | Да | Да. Анализ текста предоставляет набор NER, а пользовательские модели находятся в распознавании сущностей. |
Распознавание сущностей | Да | Да, с помощью пользовательских моделей |
Определение языка | Да | Да |
Поддерживает языки, кроме английского | Да, поддерживает более 200 языков | Да, поддерживает более 97 языков |
Настройка NLP Spark в Azure
Чтобы установить Spark NLP, используйте следующий код, но замените <version>
последним номером версии. Дополнительные сведения см. в документации по Spark NLP.
# Install Spark NLP from PyPI.
pip install spark-nlp==<version>
# Install Spark NLP from Anacodna or Conda.
conda install -c johnsnowlabs spark-nlp
# Load Spark NLP with Spark Shell.
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_<version>
# Load Spark NLP with PySpark.
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_<version>
# Load Spark NLP with Spark Submit.
spark-submit --packages com.johnsnowlabs.nlp:spark-nlp_<version>
# Load Spark NLP as an external JAR after compiling and building Spark NLP by using sbt assembly.
spark-shell --jars spark-nlp-assembly-3 <version>.jar
Разработка конвейеров NLP
Для порядка выполнения конвейера NLP Spark NLP следует той же концепции разработки, что и традиционные модели машинного обучения Spark ML. Но Spark NLP применяет методы NLP.
Основные компоненты конвейера NLP Spark:
DocumentAssembler: преобразователь, который подготавливает данные, изменяя их в формат, который может обрабатывать NLP Spark. Этот этап является точкой входа для каждого конвейера NLP Spark. DocumentAssembler может считывать
String
столбец или объектArray[String]
. Можно использовать дляsetCleanupMode
предварительной обработки текста. По умолчанию этот режим отключен.SentenceDetector: аннатор, который обнаруживает границы предложения с помощью заданного подхода. Этот аннатор может возвращать каждое извлеченное предложение в объекте
Array
. Он также может возвращать каждое предложение в другой строке, если заданоexplodeSentences
значение true.Токенизатор: аннотатор, который разделяет необработанный текст на маркеры или единицы, такие как слова, числа и символы, и возвращает маркеры в
TokenizedSentence
структуре. Этот класс не установлен. Если вы подходите для создателя маркеров, внутренниеRuleFactory
используют входную конфигурацию для настройки правил маркеризации. Токенизатор использует открытые стандарты для идентификации маркеров. Если параметры по умолчанию не соответствуют вашим потребностям, можно добавить правила для настройки tokenizer.Нормализатор: аннатор, который очищает маркеры. Нормализатору требуются стебли. Нормализатор использует регулярные выражения и словарь для преобразования текста и удаления грязных символов.
WordEmbeddings: аниматоры поиска, которые сопоставляют маркеры с векторами. Можно использовать для
setStoragePath
указания пользовательского словаря поиска маркеров для внедрения. Каждая строка словаря должна содержать маркер и его векторное представление, разделенные пробелами. Если маркер не найден в словаре, результатом будет нулевой вектор того же измерения.
Spark NLP использует конвейеры Spark MLlib, которые MLflow изначально поддерживает. MLflow — это платформа с открытым кодом для жизненного цикла машинного обучения. К его компонентам относятся:
- Отслеживание Mlflow: записывает эксперименты и предоставляет способ запроса результатов.
- Проекты MLflow: позволяет выполнять код обработки и анализа данных на любой платформе.
- Модели MLflow: развертывает модели в различных средах.
- Реестр моделей: управляет моделями, которые хранятся в центральном репозитории.
MLflow интегрирован в Azure Databricks. MLflow можно установить в любой другой среде на основе Spark для отслеживания экспериментов и управления ими. Реестр моделей MLflow также можно использовать для обеспечения доступности моделей в рабочих целях.
Соавторы
Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.
Авторы субъектов:
- Мориц Стеллер | Старший архитектор облачных решений
- Зоинер Тейада | Генеральный директор и архитектор
Дальнейшие действия
Документация по Spark NLP:
Компоненты Azure:
Ресурсы для обучения:
Связанные ресурсы
- Крупномасштабные пользовательские обработки естественного языка в Azure
- Выбор технологии Microsoft Cognitive Services
- Сравнение продуктов и технологий машинного обучения от корпорации Майкрософт
- Рекомендации по оптимальному выбору средств в службе "Машинное обучение Azure"
- MLflow и Машинное обучение Azure
- Обогащение ИИ с помощью обработки изображений и естественного языка в Когнитивный поиск Azure
- Анализ новостных каналов с помощью аналитики практически в режиме реального времени с использованием обработки изображений и естественного языка
- Предложение тегов содержимого с помощью NLP с помощью глубокого обучения