Технология обработки естественного языка

Cognitive Services
Databricks
HDInsight
Synapse Analytics

Обработка естественного языка (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 улучшает предыдущие усилия, обеспечивая точность, скорость и масштабируемость.

Схема, показывающая области функциональных возможностей N L P, таких как распознавание сущностей. В различных полях перечислены аниматоры N L P, модели и поддерживаемые языки.

Последние общедоступные тесты производительности показывают 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.

Схема, на которую показаны этапы конвейера N L P, такие как сборка документов, обнаружение предложений, маркеризация, нормализация и внедрение слов.

Основные компоненты конвейера 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 также можно использовать для обеспечения доступности моделей в рабочих целях.

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.

Авторы субъектов:

Дальнейшие действия