Ссылка на компонент "Хэширование признаков"

В этой статье описывается компонент в конструкторе машинного обучения Azure.

Компонент "Хэширование признаков" используется для преобразования потока текста на английском языке в набор целочисленных признаков. Затем этот хэшированный набор функций можно передать в алгоритм машинного обучения для обучения модели анализа текста.

Предусмотренные в компоненте функциональные возможности хэширования признаков основаны на платформе nimbusml. Дополнительные сведения см. в описании класса NgramHash.

Общие сведения о хэшировании признаков

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

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

Пользовательский текст Мнение
Мне понравилась эта книга 3
Эта книга отвратительная 1
Эта книга была отличной 3
Я люблю книги 2

На внутреннем уровне компонент "Хэширование признаков" создает словарь N-грамм. Например, список биграмм для этого набора данных будет выглядеть примерно так:

Термин (биграммы) Частота
Эта книга 3
Мне понравилась 1
Книга отвратительна 1
Я люблю 1

Размер N-грамм контролируется с помощью свойства N-граммы. При выборе биграмм также вычисляются униграммы. Словарь также будет включать в себя следующие термины:

Термин (униграммы) Частота
книга 3
I 3
книги 1
была 1

После построения словаря компонент "Хэширование признаков" преобразует термины словаря в хэш-значения. Затем он определит, использовался ли признак в каждом случае. Для каждой строки текстовых данных компонент выводит набор столбцов: по одному столбцу для каждого хэшированного признака.

Например, после хэширования столбцы признаков могут выглядеть примерно так:

Рейтинг Хэш-признак 1 Хэш-признак 2 Хэш-признак 3
4 1 1 0
5 0 0 0
  • Если значение в столбце равно 0, строка не содержит хэшированный признак.
  • Если значение равно 1, строка не содержит этот признак.

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

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

Настройка компонента "Хэширование признаков"

  1. Добавьте компонент "Хэширование признаков" в конвейер в конструкторе.

  2. Подключите набор данных, содержащий текст, который необходимо проанализировать.

    Совет

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

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

    • Столбцы должны принадлежать к строковому типу данных.

    • Выбор нескольких текстовых столбцов может значительно повлиять на размерность признаков. Например, число столбцов для 10-разрядного хэша варьируется от 1024 для одного столбца до 2048 для двух столбцов.

  4. Чтобы указать количество битов, используемых при создании хэш-таблицы, используйте Разрядность хэширования.

    Битовый размер по умолчанию равен 10. Для многих проблем этого значения достаточно. Чтобы избежать конфликтов, может потребоваться больше пространства. Это зависит от размера словаря N-грамм в обучающем тексте.

  5. Для N-грамм введите число, определяющее максимальную длину N-грамм, добавляемых в обучающий словарь. N-грамма — это последовательность из N слов, которая рассматривается как уникальная единица.

    Например, если ввести 3, будут созданы униграммы, биграммы и триграммы.

  6. Отправьте конвейер.

Результаты

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

Имя столбца 1 Тип столбца 2
USERTEXT Столбец исходных данных
SENTIMENT Столбец исходных данных
USERTEXT — хэш-признак 1 Столбец хэшированного признака
USERTEXT — хэш-признак 2 Столбец хэшированного признака
USERTEXT — хэш-признак N Столбец хэшированного признака
USERTEXT — хэш-признак 1024 Столбец хэшированного признака

После создания преобразованного набора данных его можно использовать в качестве входных данных для компонента "Обучение модели".

Рекомендации

Следующие рекомендации помогут вам максимально эффективно использовать компонент "Хэширование признаков".

  • Для предварительной обработки входного текста добавьте компонент "Предварительная обработка текста" перед использованием хэширования признаков.

  • Добавьте компонент "Выбор столбцов" после компонента "Хеширование признаков" для извлечения текстовых столбцов из выходного набора данных. После создания хэш-признаков текстовые столбцы более не потребуются.

  • Рассмотрите возможность использования следующих вариантов предварительной обработки текста для упрощения результатов и повышения точности:

    • Разбиение по словам
    • Исключение стоп-слов
    • Нормализация регистра
    • Исключение пунктуации и специальных символов
    • Морфология

Оптимальный набор методов предварительной обработки, применяемых в каком-либо решении, зависит от области применения, словаря и потребностей бизнеса. Примените к своим данным конвейер, чтобы узнать, какие методы обработки текста наиболее эффективны.

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

Ознакомьтесь с набором доступных компонентов для машинного обучения Azure.