Кодируйте свойства многоязычного текста в Amazon Neptune для обучения прогнозных моделей PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Кодируйте свойства многоязычного текста в Amazon Neptune для обучения моделей прогнозирования

Amazon Нептун ML это возможность машинного обучения (ML) Амазонка Нептун Это поможет вам делать точные и быстрые прогнозы на основе данных вашего графика. Под капотом Neptune ML использует графовые нейронные сети (GNN), чтобы одновременно использовать преимущества структуры графа и свойств узлов/ребер для решения поставленной задачи. Традиционные методы либо используют только свойства и не используют структуру графа (например, XGBoost, нейронные сети), либо только структуру графа и не используют свойства (например, node2vec, распространение меток). Чтобы лучше манипулировать свойствами узла/ребра, алгоритмы машинного обучения требуют, чтобы данные были числовыми данными с хорошим поведением, но необработанные данные в базе данных могут иметь другие типы, например необработанный текст. Чтобы использовать эти другие типы данных, нам нужны специальные этапы обработки, которые преобразуют их из исходного типа в числовые данные, а качество результатов машинного обучения сильно зависит от качества этих преобразований данных. Необработанный текст, как и предложения, является одним из самых сложных типов для преобразования, но недавний прогресс в области обработки естественного языка (NLP) привел к появлению надежных методов, которые могут обрабатывать текст, поступающий с разных языков и разной длины.

Начиная с версии 1.1.0.0, Neptune ML поддерживает несколько кодировщиков текста (text_fasttext, text_sbert, text_word2vecкачества text_tfidf), которые используют преимущества последних достижений в NLP и обеспечивают поддержку многоязычных свойств текста, а также дополнительные требования к логическому выводу относительно языков и длины текста. Например, в случае использования рекомендаций по вакансиям сообщения о вакансиях в разных странах могут быть описаны на разных языках, а длина описаний вакансий значительно различается. Кроме того, Neptune ML поддерживает автоматический параметр, который автоматически выбирает лучший метод кодирования на основе характеристик текстового объекта в данных.

В этом посте мы проиллюстрируем использование каждого текстового кодировщика, сравним их преимущества и недостатки и покажем пример того, как выбрать правильные текстовые кодировщики для задачи рекомендации работы.

Что такое кодировщик текста?

Целью кодирования текста является преобразование текстовых свойств ребер/узлов в Neptune в векторы фиксированного размера для использования в последующих моделях машинного обучения либо для классификации узлов, либо для задач предсказания ссылок. Длина текстовой функции может сильно различаться. Это может быть слово, фраза, предложение, абзац или даже документ с несколькими предложениями (максимальный размер одного свойства — 55 МБ в Neptune). Кроме того, текстовые функции могут быть на разных языках. Также могут быть предложения, содержащие слова на нескольких разных языках, которые мы определяем как переключение кода.

Начиная с версии 1.1.0.0, Neptune ML позволяет выбирать из нескольких различных кодировщиков текста. Каждый кодировщик работает немного по-своему, но имеет одну и ту же цель: преобразовать поле текстового значения из Neptune в вектор фиксированного размера, который мы используем для построения нашей модели GNN с помощью Neptune ML. Новые энкодеры выглядят следующим образом:

  • text_fasttext (новый) – Использование FastText кодирование. FastText — это библиотека для эффективного обучения представлению текста. text_fasttext рекомендуется для функций, которые используют один и только один из пяти языков, поддерживаемых fastText (английский, китайский, хинди, испанский и французский). text_fasttext метод может дополнительно принимать max_length поле, в котором указывается максимальное количество токенов в текстовом значении свойства, которое будет закодировано, после чего строка усекается. Вы можете рассматривать токен как слово. Это может повысить производительность, когда значения текстовых свойств содержат длинные строки, потому что если max_length не указан, fastText кодирует все токены независимо от длины строки.
  • text_sbert (новое) – использует предложение BERT (СБЕРТ) метод кодирования. SBERT — это своего рода метод встраивания предложений с использованием моделей обучения с контекстным представлением, BERT-Networks. text_sbert рекомендуется, когда язык не поддерживается text_fasttext. Neptune поддерживает два метода SBERT: text_sbert128, который используется по умолчанию, если вы просто укажете text_sbertкачества text_sbert512. Разница между ними заключается в максимальном количестве кодируемых токенов в текстовом свойстве. text_sbert128 кодирование кодирует только первые 128 токенов, тогда как text_sbert512 кодирует до 512 токенов. В результате с помощью text_sbert512 может потребовать больше времени обработки, чем text_sbert128. Оба метода медленнее, чем text_fasttext.
  • text_word2vec - использует Word2Old алгоритмы, изначально опубликованные Google для кодирования текста. Word2Vec поддерживает только английский язык.
  • text_tfidf – Использует термин частотно-обратная частота документа (ТФ-ИДФ) векторизатор для кодирования текста. Кодировка TF-IDF поддерживает статистические функции, которых нет в других кодировках. Он количественно определяет важность или релевантность слов в одном свойстве узла среди всех других узлов.

Обратите внимание, что text_word2vec и text_tfidf поддерживались ранее, а новые методы text_fasttext и text_sbert рекомендуется вместо старых методов.

Сравнение различных кодировщиков текста

В следующей таблице показано подробное сравнение всех поддерживаемых параметров кодирования текста (text_fasttext, text_sbertкачества text_word2vec). text_tfidf — это не метод кодирования на основе модели, а мера, основанная на подсчете, которая оценивает, насколько токен (например, слово) релевантен текстовым функциям в других узлах или ребрах, поэтому мы не включаем text_tfidf для сравнения. Мы рекомендуем использовать text_tfidf когда вы хотите количественно оценить важность или релевантность некоторых слов в одном свойстве узла или края среди всех других свойств узла или края.)

. . text_fasttext text_sbert text_word2vec
Возможности модели Поддерживаемый язык английский, китайский, хинди, испанский и французский Более 50 языков Английский
Может кодировать свойства текста, которые содержат слова на разных языках. Нет Да Нет
Поддержка максимальной длины Без ограничения максимальной длины Кодирует текстовую последовательность максимальной длиной 128 и 512 символов. Без ограничения максимальной длины
Стоимость времени Загрузка Примерно 10 секунд Примерно 2 секунд Примерно 2 секунд
вывод Быстрый Замедлять Medium

Обратите внимание на следующие советы по использованию:

  • Для значений текстовых свойств на английском, китайском, хинди, испанском и французском языках text_fasttext рекомендуемая кодировка. Однако он не может обрабатывать случаи, когда одно и то же предложение содержит слова более чем на одном языке. Для других языков, кроме пяти, которые fastText поддерживает, использовать text_sbert кодирование.
  • Если у вас много текстовых строк значений свойств длиннее, например, 120 токенов, используйте max_length поле, чтобы ограничить количество токенов в каждой строке, которая text_fasttext кодирует.

Подводя итог, в зависимости от вашего варианта использования мы рекомендуем следующий метод кодирования:

  • Если ваши текстовые свойства находятся на одном из пяти поддерживаемых языков, мы рекомендуем использовать text_fasttext из-за его быстрого вывода. text_fasttext рекомендуемый выбор, и вы также можете использовать text_sbert в следующих двух исключениях.
  • Если ваши текстовые свойства указаны на разных языках, мы рекомендуем использовать text_sbert потому что это единственный поддерживаемый метод, который может кодировать свойства текста, содержащие слова на нескольких разных языках.
  • Если ваши текстовые свойства указаны на одном языке, который не входит в число пяти поддерживаемых языков, мы рекомендуем использовать text_sbert потому что он поддерживает более 50 языков.
  • Если средняя длина ваших текстовых свойств больше 128, рассмотрите возможность использования text_sbert512 or text_fasttext. Оба метода могут использовать кодирование более длинных текстовых последовательностей.
  • Если ваши текстовые свойства только на английском языке, вы можете использовать text_word2vec, но мы рекомендуем использовать text_fasttext для его быстрого вывода.

Демонстрация варианта использования: задача рекомендации работы

Цель задачи рекомендации работы — предсказать, на какую работу будут претендовать пользователи, на основе их предыдущих заявлений, демографической информации и истории работы. Этот пост использует открытый набор данных Kaggle. Мы строим набор данных в виде графа с тремя узлами: работа, пользователькачества город.

Вакансия характеризуется названием, описанием, требованиями, городом и штатом. Пользователь описывается со свойствами специальности, типа степени, количества трудовых книжек, общего количества лет опыта работы и т. д. В этом случае название должности, описание работы, требования к должности и специализация представлены в виде текста.

В наборе данных пользователи имеют следующие свойства:

  • Область – Например, CA или 广东省 (китайский)
  • Основной – Например, Управление персоналом или Lic Cytura Fisica (испанский)
  • Тип степени – Например, степень бакалавра, магистра, кандидата наук или нет.
  • РаботаИсторияКоличество – Например, 0, 1, 16 и т. д.
  • ВсегоЛетОпыт – Например, 0.0, 10.0 или NAN

Работа имеет следующие свойства:

  • Название – Например, помощник по административным вопросам или Lic Cultura Física (испанский).
  • Описание – Например, «Эта должность помощника по административным вопросам отвечает за выполнение различных канцелярских и административных вспомогательных функций в области коммуникаций…». Среднее количество слов в описании составляет около 192.2.
  • Требования – Например, «ТРЕБОВАНИЯ К РАБОТЕ: 1. Внимание к деталям; 2.Умение работать в быстром темпе;3.Выставление счетов…»
  • Область: — Например, CA, NY и т. д.

Тип узла город например, Вашингтон, округ Колумбия, и Орландо, Флорида, имеют только идентификатор для каждого узла. В следующем разделе мы анализируем характеристики различных функций текста и иллюстрируем, как выбрать правильные кодировщики текста для различных свойств текста.

Как выбрать разные кодировщики текста

Для нашего примера Основной и Название свойства находятся на нескольких языках и имеют короткие текстовые последовательности, поэтому text_sbert Рекомендовано. Пример кода для параметры экспорта составляет. Для text_sbert type, других полей параметров нет. Здесь мы выбираем text_sbert128 кроме text_sbert512, так как длина текста относительно меньше 128 символов.

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "user",
                "property": "Major",
                "type": "text_sbert128"
            },
            {
                "node": "job",
                "property": "Title",
                "type": "text_sbert128",
            }, ...
        ], ...
    }
}

Ассоциация Описание и Требования свойства обычно находятся в длинных текстовых последовательностях. Средняя длина описания составляет около 192 слов, что больше максимальной входной длины text_sbert (128). Мы можем использовать text_sbert512, но это может привести к более медленному выводу. Кроме того, текст на одном языке (английский). Поэтому мы рекомендуем text_fasttext с en значение языка из-за его быстрого вывода и неограниченной длины ввода. Пример кода для параметры экспорта составляет. text_fasttext кодировку можно настроить с помощью язык и максимальная длина, language значение требуется, но max_length не является обязательным.

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "job",
                "property": "Description",
                "type": "text_fasttext",
                "language": "en",
                "max_length": 256
            },
            {
                "node": "job",
                "property": "Requirements",
                "type": "text_fasttext",
                "language": "en"
            }, ...
        ], ...
    }
}

Более подробную информацию о случаях использования рекомендаций по работе можно найти в Учебник по блокноту Neptune.

В демонстрационных целях мы выбираем одного пользователя, т. е. пользователя 443931, который имеет степень магистра в области управления и управления персоналом. Пользователь подал заявку на пять различных вакансий, озаглавленных как «Менеджер по персоналу (HR)», «Главный специалист по персоналу», «Менеджер по персоналу», «Администратор по персоналу» и «Старший специалист по расчету заработной платы». Чтобы оценить производительность рекомендательной задачи, мы удаляем 50% прикладных заданий (ребер) пользователя (здесь мы удаляем «Администратор отдела кадров» и «Менеджер отдела кадров (HR)») и пытаемся спрогнозировать топ 10 вакансий, на которые этот пользователь, скорее всего, откликнется.

После кодирования функций работы и функций пользователя мы выполняем задачу прогнозирования ссылок, обучая модель сверточной сети реляционного графа (RGCN). Обучение модели Neptune ML требует трех шагов: обработка данных, обучение модели и создание конечной точки. После создания конечной точки вывода мы можем дать рекомендации для пользователя 443931. Из прогнозируемых 10 лучших вакансий для пользователя 443931 (т. Администратор ресурсов», «Аналитик отдела кадров» и др.), мы видим, что две удаленные вакансии входят в число 10 прогнозов.

Заключение

В этом посте мы показали использование недавно поддерживаемых кодировщиков текста в Neptune ML. Эти текстовые кодировщики просты в использовании и могут поддерживать множество требований. В итоге,

  • text_fasttext рекомендуется для функций, которые используют один и только один из пяти языков, поддерживаемых text_fasttext.
  • text_sbert рекомендуется для текста, который text_fasttext не поддерживает.
  • text_word2vec поддерживает только английский язык и может быть заменен на text_fasttext в любом случае.

Подробнее о решении см. Репо GitHub. Мы рекомендуем использовать текстовые кодировщики для графических данных в соответствии с вашими требованиями. Вы можете просто выбрать имя кодировщика и установить некоторые атрибуты кодировщика, сохраняя при этом модель GNN неизменной.


Об авторах

Кодируйте свойства многоязычного текста в Amazon Neptune для обучения прогнозных моделей PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Цзяни Чжан — ученый-прикладник AWS AI Research and Education (AIRE). Она работает над решением реальных приложений с использованием алгоритмов машинного обучения, особенно задач, связанных с естественным языком и графами.

Отметка времени:

Больше от Машинное обучение AWS

Создавайте, делитесь, развертывайте: как бизнес-аналитики и специалисты по обработке и анализу данных сокращают время выхода на рынок с помощью машинного обучения без кода и Amazon SageMaker Canvas

Исходный узел: 1210859
Отметка времени: 10 Марта, 2022