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

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

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

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

У цій публікації ми проілюструємо використання кожного текстового кодувальника, порівняємо їхні переваги та недоліки та покажемо приклад того, як вибрати правильний текстовий кодер для завдання рекомендації про роботу.

Що таке кодувальник тексту?

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

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

  • text_fasttext (новий) – Використання швидкий текст кодування. FastText — це бібліотека для ефективного навчання подання тексту. text_fasttext рекомендовано для функцій, які використовують лише одну з п’яти мов, які підтримує fastText (англійська, китайська, гінді, іспанська та французька). The text_fasttext метод може за бажанням приймати max_length поле, яке визначає максимальну кількість токенів у значенні властивості тексту, яке буде закодовано, після чого рядок скорочується. Ви можете розглядати лексему як слово. Це може підвищити продуктивність, коли значення текстових властивостей містять довгі рядки, тому що if max_length не вказано, fastText кодує всі лексеми незалежно від довжини рядка.
  • text_sbert (нове) – Використовує речення BERT (СБЕРТ) спосіб кодування. SBERT — це різновид методу вбудовування речень із використанням моделей навчання контекстного представлення, BERT-Networks. text_sbert рекомендується, якщо мова не підтримується text_fasttext. Neptune підтримує два методи SBERT: text_sbert128, який є типовим, якщо ви просто вкажете text_sbert та text_sbert512. Різниця між ними полягає в максимальній кількості токенів у текстовій властивості, які кодуються. The text_sbert128 кодування кодує лише перші 128 токенів, тоді як text_sbert512 кодує до 512 токенів. В результаті використання text_sbert512 може знадобитися більше часу на обробку, ніж text_sbert128. Обидва методи повільніші, ніж text_fasttext.
  • text_word2vec - Використання Word2Vec алгоритми, спочатку опубліковані Google для кодування тексту. Word2Vec підтримує лише англійську мову.
  • text_tfidf – Використовує термін частотно-інверсна частота документа (TF-IDF) векторизатор для кодування тексту. Кодування 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 Максимальна довжина не обмежена
Вартість часу Loading Приблизно 10 секунди Приблизно 2 секунди Приблизно 2 секунди
Висновок Fast Сповільнювати 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 або 广东省 (китайська)
  • Основний – Наприклад, Human Resources Management або Lic Cytura Fisica (іспанська)
  • DegreeType – Наприклад, бакалавр, магістр, доктор філософії або жодного
  • WorkHistoryCount – Наприклад, 0, 1, 16 і так далі
  • TotalYearsExperience – Наприклад, 0.0, 10.0 або NAN

Вакансії мають такі властивості:

  • назва – Наприклад, адміністративний помічник або Lic Cultura Física (іспанська).
  • Опис – Наприклад, «Ця посада адміністративного помічника відповідає за виконання різноманітних канцелярських та адміністративних допоміжних функцій у сфері зв’язку…» Середня кількість слів в описі становить приблизно 192.2.
  • Вимога – Наприклад, «ВИМОГИ ДО РОБОТИ: 1. Увага до деталей; 2. Уміння працювати в швидкому темпі; 3. Виставлення рахунків…»
  • стан: – Наприклад, CA, NY тощо.

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

Як вибрати різні кодери тексту

Для нашого прикладу Основний та назва властивості на кількох мовах і мають короткі текстові послідовності, тому text_sbert рекомендовано. Зразок коду для параметри експорту полягає в наступному. Для text_sbert типу, інших полів параметрів немає. Ось вибираємо 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 цінність мови через його швидкий висновок і необмежену довжину вхідних даних. Зразок коду для параметри експорту полягає в наступному. The 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 (тобто «спеціаліст з персоналу», «менеджер з персоналу», «старший спеціаліст із заробітної плати», «люди Resources Administrator», «HR Analyst» та ін.), ми бачимо, що дві видалені вакансії є серед 10 прогнозів.

Висновок

У цій публікації ми показали використання нещодавно підтримуваних кодувальників тексту в Neptune ML. Ці текстові кодери прості у використанні та можуть підтримувати численні вимоги. Підсумовуючи,

  • text_fasttext рекомендовано для функцій, які використовують одну й лише одну з п’яти мов, які підтримує text_fasttext.
  • text_sbert рекомендується для тексту, який text_fasttext не підтримує.
  • text_word2vec підтримує лише англійську мову та може бути замінений на text_fasttext у будь-якому випадку.

Додаткову інформацію про рішення див GitHub репо. Ми рекомендуємо використовувати текстові кодери для даних графіків, щоб відповідати вашим вимогам. Ви можете просто вибрати назву кодувальника та встановити деякі атрибути кодувальника, зберігаючи модель GNN незмінною.


Про авторів

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

Часова мітка:

Більше від AWS Машинне навчання