Крупномасштабная обработка пользовательского естественного языка

Компьютерное зрение Azure
Azure Data Lake Storage
Azure Databricks
Azure HDInsight
Azure Synapse Analytics

Идеи решения

Эта статья является идеей решения. Если вы хотите расширить содержимое с дополнительными сведениями, такими как потенциальные варианты использования, альтернативные службы, рекомендации по реализации или рекомендации по ценам, сообщите нам, предоставив отзыв GitHub.

Реализуйте пользовательское решение для обработки естественного языка (NLP) в Azure. Используйте NLP Spark для таких задач, как обнаружение темы и тональности и анализ.

Apache, Apache® Spark и логотип пламени являются зарегистрированными товарными знаками или товарными знаками Apache Software Foundation в США и/или других странах. Использование этих меток не подразумевает подтверждения от Apache Software Foundation.

Архитектура

Diagram that shows the flow of data through an N L P pipeline. Stages include ingesting, storing, processing, and serving.

Скачайте файл Visio для этой архитектуры.

Workflow

  1. Центры событий Azure, Фабрика данных Azure или обе службы получают документы или неструктурированные текстовые данные.
  2. Центры событий и фабрика данных хранят данные в формате файлов в Azure Data Lake служба хранилища. Рекомендуется настроить структуру каталогов, которая соответствует бизнес-требованиям.
  3. API Компьютерное зрение Azure использует возможность оптического распознавания символов (OCR) для использования данных. Затем API записывает данные в бронзовый слой. Эта платформа потребления использует архитектуру Lakehouse.
  4. В бронзовом слое различные функции NLP Spark предварительно обработают текст. Примеры включают разделение, исправление правописания, очистку и понимание грамматики. Рекомендуется выполнять классификацию документов на бронзовом слое, а затем записывать результаты на серебряный слой.
  5. На уровне серебра расширенные функции NLP Spark выполняют задачи анализа документов, такие как распознавание именованных сущностей, сводка и извлечение информации. В некоторых архитектурах результат записывается на золотой слой.
  6. В золотом слое Spark NLP выполняет различные лингвистические визуальные анализы текстовых данных. Эти анализы предоставляют аналитические сведения о зависимостях языка и помогают в визуализации меток NER.
  7. Пользователи запрашивают текстовые данные уровня золота в виде кадра данных и просматривают результаты в Power BI или веб-приложениях.

Во время обработки Azure Databricks, Azure Synapse Analytics и Azure HDInsight используются с NLP Spark для предоставления функциональных возможностей NLP.

Компоненты

  • Data Lake служба хранилища — это файловая система, совместимая с Hadoop, которая имеет интегрированное иерархическое пространство имен и масштабируемую и экономию Хранилище BLOB-объектов Azure.
  • Azure Synapse Analytics — это служба аналитики для хранилищ данных и систем обработки больших данных.
  • Azure Databricks — это служба аналитики для больших данных, которая легко используется, упрощает совместную работу и основана на Apache Spark. Azure Databricks предназначен для обработки и анализа данных.
  • Центры событий принимаются потоки данных, создаваемые клиентскими приложениями. Центры событий хранят потоковую передачу данных и сохраняют последовательность полученных событий. Потребители могут подключаться к конечным точкам центра для получения сообщений для обработки. Центры событий интегрируются с Data Lake служба хранилища, как показано в этом решении.
  • Azure HDInsight — это управляемая комплексная облачная служба аналитики с открытым кодом, предназначенная для предприятий. Платформы с открытым кодом можно использовать с Azure HDInsight, например Hadoop, Apache Spark, Apache Hive, LLAP, Apache Kafka, Apache Storm и R.
  • Фабрика данных автоматически перемещает данные между учетными записями хранения различных уровней безопасности, чтобы обеспечить разделение обязанностей.
  • Компьютерное зрение использует API распознавания текста для распознавания текста в изображениях и извлечения этой информации. API чтения использует последние модели распознавания и оптимизирован для больших, текстовых и шумных изображений. API OCR не оптимизирован для больших документов, но поддерживает больше языков, чем API чтения. Это решение использует OCR для создания данных в формате hOCR .

Подробности сценария

Обработка естественного языка (NLP) имеет много использования: анализ тональности, обнаружение тем, обнаружение языка, извлечение ключевых фраз и классификация документов.

Apache Spark — это платформа параллельной обработки, которая поддерживает обработку в памяти для повышения производительности приложений аналитики больших данных, таких как NLP. Azure Synapse Analytics, Azure HDInsight и Azure Databricks предлагают доступ к Spark и используют свою мощность обработки.

Для настраиваемых рабочих нагрузок NLP библиотека с открытым кодом Spark NLP служит эффективной платформой для обработки большого количества текста. В этой статье представлено решение для крупномасштабных пользовательских NLP в Azure. Решение использует функции NLP Spark для обработки и анализа текста. Дополнительные сведения о NLP Spark см. в разделе "Функции и конвейеры NLP Spark" далее в этой статье.

Потенциальные варианты использования

  • Классификация документов: Spark NLP предлагает несколько вариантов классификации текста:

    • Предварительная обработка текста в алгоритмах NLP и машинного обучения Spark, основанных на машинном обучении Spark
    • Предварительная обработка текста и внедрение слов в алгоритмы NLP и машинного обучения Spark, такие как GloVe, BERT и ELMo
    • Предварительная обработка текста и внедрение предложений в алгоритмы и модели машинного обучения Spark NLP и машинного обучения, такие как универсальный кодировщик предложений
    • Предварительная обработка текста и классификация в NLP Spark, использующая аннатор ClassifierDL и основанный на TensorFlow
  • Извлечение сущностей имен (NER): в Spark NLP с несколькими строками кода можно обучить модель NER, использующую BERT, и вы можете достичь точности в области искусства. NER — это подзадака извлечения информации. NER находит именованные сущности в неструктурированном тексте и классифицирует их в предопределенные категории, такие как имена лиц, организации, расположения, медицинские коды, выражения времени, количества, денежные значения и проценты. Spark NLP использует модель NER с использованием модели NER с помощью BERT. Модель вдохновляется бывшей моделью NER, двунаправленной LSTM-CNN. Эта бывшая модель использует новую архитектуру нейронной сети, которая автоматически обнаруживает функции уровня слова и символьного уровня. Для этого модель использует гибридную двунаправленную архитектуру LSTM и CNN, поэтому она устраняет необходимость в большинстве технических возможностей.

  • Обнаружение тональности и эмоций: Spark NLP может автоматически обнаруживать положительные, отрицательные и нейтральные аспекты языка.

  • Часть речи (POS): эта функция назначает грамматическую метку каждому маркеру во входном тексте.

  • Обнаружение предложений (SD): SD основан на модели нейронной сети общего назначения для обнаружения границ предложения, определяющего предложения в тексте. Многие задачи NLP принимают предложение в качестве входной единицы. Примерами этих задач являются тег POS, синтаксический анализ зависимостей, распознавание именованных сущностей и машинный перевод.

Функциональные возможности и конвейеры Spark NLP

Spark NLP предоставляет библиотеки Python, Java и Scala, которые предоставляют полные функциональные возможности традиционных библиотек NLP, таких как spaCy, NLTK, Стэнфорд CoreNLP и Open NLP. Spark NLP также предоставляет такие функции, как орфографические проверка, анализ тональности и классификация документов. NLP Spark улучшает предыдущие усилия, обеспечивая точность, скорость и масштабируемость.

NLP Spark является самой быстрой библиотекой NLP с открытым исходным кодом. Последние общедоступные тесты показывают Spark NLP как 38 и 80 раз быстрее, чем spaCy, с сравнимой точностью для обучения пользовательских моделей. Spark NLP — это единственная библиотека с открытым исходным кодом, которая может использовать распределенный кластер Spark. Spark NLP — это собственное расширение машинного обучения Spark, которое работает непосредственно на кадрах данных. В результате увеличение скорости в кластере приводит к еще одному упорядочению повышения производительности. Так как каждый конвейер NLP Spark — это конвейер машинного обучения Spark, NLP хорошо подходит для создания унифицированных конвейеров NLP и машинного обучения, таких как классификация документов, прогнозирование рисков и конвейеры рекомендаций.

Помимо отличной производительности, Spark NLP также обеспечивает высокую точность для растущего числа задач NLP. Команда NLP Spark регулярно читает последние актуальные академические документы и производит самые точные модели.

Для порядка выполнения конвейера NLP spark NLP следует той же концепции разработки, что и традиционные модели машинного обучения Spark ML. Но В Spark NLP применяются методы NLP. На следующей схеме показаны основные компоненты конвейера NLP Spark.

Diagram that shows N L P pipeline stages, such as document assembly, sentence detection, tokenization, normalization, and word embedding.

Соавторы

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

Основные авторы:

Следующие шаги