Компонент латентного распределения Дирихле

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

Скрытое распределение Дирихле (LDA) часто используется при обработке естественного языка для поиска похожих текстов. Другой распространенный термин — тематическое моделирование.

Этот компонент берет столбец текста и генерирует следующие выходные данные:

  • Исходный текст вместе с оценкой по каждой категории

  • Матрица характеристик, содержащая извлеченные термины и коэффициенты для каждой категории

  • Преобразование, которое вы можете сохранить и повторно применить к новому тексту, используемому в качестве ввода

Этот компонент использует библиотеку SciKit-Learn. Дополнительные сведения о scikit-learn см. в репозитории GitHub, который включает учебные пособия и объяснение алгоритма.

Подробнее о скрытом распределении Дирихле

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

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

Теория обсуждается в этой статье, которая доступна как загрузка в формате PDF: Латентное распределение Дирихле: Blei, NG и Иордания.

Реализация в этом компоненте основана на библиотеке SciKit-Learn для LDA.

Для получения дополнительной информации см. раздел Технические примечания.

Как настроить латентное размещение Дирихле

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

  1. Добавьте в конвейер компонент Латентное распределение Дирихле.

    В списке ресурсов найдите в разделе Анализ текста компонент Латентное распределение Дирихле и перетащите его на холст.

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

  3. В поле Целевые столбцы выберите один или несколько столбцов, содержащих текст для анализа.

    Вы можете выбрать несколько столбцов, но они должны быть строкового типа.

    Поскольку LDA создает большую матрицу функций из текста, вы обычно анализируете один текстовый столбец.

  4. В поле Число тем для моделирования введите целое число от 1 до 1000, которое указывает, сколько категорий или тем вы хотите получить из введенного текста.

    По умолчанию создано 5 тем.

  5. Для N-граммов укажите максимальную длину N-граммов, сгенерированных во время хэширования.

    По умолчанию — 2, что означает, что генерируются и биграммы, и униграммы.

  6. Выберите параметр Нормализовать, чтобы преобразовать выходные значения в вероятности.

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

    • Значения в наборе данных будут представлены как вероятность, где P(topic|document).

    • Значения в матрице тематических характеристик будут представлены как вероятность, где P(word|topic).

    Примечание

    В конструкторе машинного обучения Azure библиотека scikit-learn больше не поддерживает ненормализованный вывод doc_topic_distr из версии 0.19. В этом компоненте параметр Нормализовать может применяться только к выходным данным Матрица тем. Вывод преобразованного набора данных всегда нормализуется.

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

    Эти параметры относятся к реализации LDA в scikit-learn. В scikit-learn есть несколько хороших руководств по LDA, а также официальный документ scikit-learn.

    • Rho параметр. Обеспечьте априорную вероятность разреженности тематических распределений. Этот параметр соответствует параметру topic_word_prior в sklearn. Используйте значение 1, если вы ожидаете, что распределение слов будет ровным; то есть все слова считаются равновероятными. Если вы думаете, что большинство слов отображается редко, вы можете установить меньшее значение.

    • Альфа-параметр. Укажите априорную вероятность разреженности весов тем для отдельных документов. Этот параметр соответствует параметру doc_topic_prior в sklearn.

    • Примерное количество документов. Введите число, которое представляет собой наиболее точную оценку количества документов (строк), которые будут обработаны. Этот параметр позволяет компоненту выделить хэш-таблицу достаточного размера. Он соответствует параметру total_samples в scikit-learn.

    • Размер партии. Введите число, указывающее, сколько строк включать в каждый пакет текста, отправляемый в модель LDA. Этот параметр соответствует параметру batch_size в scikit-learn.

    • Начальное значение итерации, используемое в расписании обновления обучения. Укажите начальное значение, которое снижает скорость обучения для ранних итераций онлайн-обучения. Этот параметр соответствует параметру learning_offset в scikit-learn.

    • Мощность, применяемая к итерации во время обновлений. Укажите уровень мощности, применяемой к счетчику итераций, чтобы контролировать скорость обучения во время онлайн-обновлений. Этот параметр соответствует параметру learning_decay в scikit-learn.

    • Количество проходов по данным. Укажите максимальное количество циклов, которое алгоритм будет перебирать данные. Этот параметр соответствует параметру max_iter в scikit-learn.

  8. Выберите опцию Создать словарь n-грамм или Создать словарь n-грамм до LDA, если вы хотите создать список n-грамм на начальном этапе перед классификацией текста.

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

  9. В поле Максимальный размер словаря ngram введите общее количество строк, которые можно создать в словаре n-грамм.

    Этот параметр полезен для управления размером словаря. Но если число n-граммы во входных данных превышает этот размер, могут возникать конфликты.

  10. Отправьте конвейер. Компонент LDA использует теорему Байеса, чтобы определить, какие темы могут быть связаны с отдельными словами. Слова не связаны исключительно с какими-либо темами или группами. Вместо этого каждая n-грамма имеет изученную вероятность быть связанной с любым из обнаруженных классов.

Результаты

Компонент имеет два вида выходных данных:

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

  • Матрица тематических тем: крайний левый столбец содержит извлеченный текстовый объект. Столбец для каждой категории содержит оценку данной функции в этой категории.

Преобразование LDA

Этот компонент также выводит преобразование LDA, которое применяет LDA к набору данных.

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

Чтобы повторно использовать это преобразование, выберите значок Зарегистрировать набор данных на правой панели компонента Latent Dirichlet Allocation, чтобы сохранить компонент в категории Наборы данных в списке компонентов. Затем вы можете подключить этот компонент к компоненту Применить преобразование, чтобы повторно использовать это преобразование.

Уточнение модели или результатов LDA

Как правило, невозможно создать единую модель LDA, которая удовлетворяла бы всем требованиям. Даже модель, разработанная для одной задачи, может потребовать множества итераций для повышения точности. Мы рекомендуем вам попробовать все эти методы для улучшения вашей модели:

  • Изменение параметров модели
  • Использование визуализации для понимания результатов
  • Получение обратной связи от профильных экспертов, чтобы определить, полезны ли созданные темы

Качественные меры также могут быть полезны для оценки результатов. Чтобы оценить результаты тематического моделирования, рассмотрите:

  • Достоверность. Действительно ли похожие предметы похожи?
  • Разнообразие. Может ли модель различать похожие элементы, когда это требуется для решения бизнес-задачи?
  • масштабируемость; Работает ли он с широким спектром текстовых категорий или только с узким целевым доменом?

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

  • Удаление стоп-слов

  • Нормализация регистра

  • Лемматизация или извлечение корней

  • Распознавание именованных сущностей

Для получения дополнительной информации см. Предварительная обработка текста.

В дизайнере вы также можете использовать библиотеки R или Python для обработки текста: Execute R Script, Execute Python Script.

Технические примечания

В этом разделе содержатся сведения о реализации, советы и ответы на часто задаваемые вопросы.

Сведения о реализации

По умолчанию распределения выходных данных для преобразованного набора данных и тематической матрицы нормализованы как вероятности:

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

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

Совет

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

LDA и тематическое моделирование

Латентное распределение Дирихле часто используется для моделирования тем на основе содержания, что в основном означает изучение категорий из неклассифицированного текста. В тематическом моделировании на основе содержания тема — это распределение слов.

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

Тема, которую определяет процесс LDA, может представлять собой обзоры отдельного продукта или группу обзоров продукта. Для LDA сама тема — это просто распределение вероятностей во времени для набора слов.

Условия редко бывают эксклюзивными для какого-либо одного продукта. Они могут относиться к другим продуктам или быть общими терминами, относящимися ко всему ("отлично", "ужасно"). Другие термины могут быть шумовыми словами. Однако метод LDA не пытается охватить все слова во вселенной или понять, как слова связаны между собой, за исключением вероятностей совместного появления. Он может группировать только слова, которые используются в целевом домене.

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

Параметры компонентов

Имя Type Диапазон Необязательно Значение по умолчанию Описание
Целевые столбцы Выполните действия на странице Выбор столбцов. Обязательно StringFeature Имя или индекс целевого столбца.
Количество тем для моделирования Целочисленный тип [1;1000] Обязательно 5 Смоделируйте распространение документа по N темам.
N-граммы Целочисленный тип [1;10] Обязательно 2 Порядок N-граммов, сгенерированных во время хэширования.
Normalize Логическое Значение true или false Обязательно Да Нормализовать вывод до вероятностей. Преобразованный набор данных будет P (тема|документ), а матрица тематических объектов будет P (слово|тема).
Показать все варианты Логическое Значение true или false Обязательно Неверно Представляет дополнительные параметры, специфичные для онлайн-LDA scikit-learn.
Rho параметр Тип с плавающей запятой [0.00001;1.0] Применяется, когда установлен флажок Показать все параметры 0,01 Приоритетное распределение тематических слов.
Альфа-параметр Тип с плавающей запятой [0.00001;1.0] Применяется, когда установлен флажок Показать все параметры 0,01 Документ по теме предварительного распространения.
Примерное количество документов Целочисленный тип [1;int.MaxValue] Применяется, когда установлен флажок Показать все параметры 1000 Примерное количество документов. Соответствует параметру total_samples.
Размер партии Целочисленный тип [1;1024] Применяется, когда установлен флажок Показать все параметры 32 Размер партии.
Начальное значение итерации, используемое в расписании обновления скорости обучения Целочисленный тип [0;int.MaxValue] Применяется, когда установлен флажок Показать все параметры 0 Начальное значение, снижающее скорость обучения для ранних итераций. Соответствует параметру learning_offset.
Мощность, применяемая к итерации во время обновлений Тип с плавающей запятой [0.0;1.0] Применяется, когда установлен флажок Показать все параметры 0,5 Мощность, приложенная к счетчику итераций, чтобы контролировать скорость обучения. Соответствует параметру learning_decay.
Число итераций обучения Целочисленный тип [1;1024] Применяется, когда установлен флажок Показать все параметры 25 Число итераций обучения.
Сборка словаря n-грамм Логическое Значение true или false Применяется, когда флажок Показать все параметрыне установлен Верно Создает словарь n-грамм до вычисления LDA. Полезно для проверки и интерпретации модели.
Максимальный размер словаря n-грамм Целочисленный тип [1;int.MaxValue] Применяется, когда для параметра Построить словарь n-грамм установлено значение True 20 000 Максимальный размер словаря n-грамм. Если количество токенов на входе превышает этот размер, могут возникнуть коллизии.
Количество битов, используемых для хэширования функций. Целочисленный тип [1;31] Применяется, когда флажок Показать все параметрыне установлен, а параметр Создать словарь n-граммFalse 12 Количество битов, используемых для хэширования функций.
Создайте словарь n-грамм до LDA Логическое Значение true или false Применяется, когда установлен флажок Показать все параметры Верно Создайте словарь n-грамм до LDA. Полезно для проверки и интерпретации модели.
Максимальное количество n-грамм в словаре Целочисленный тип [1;int.MaxValue] Применяется, когда установлен флажок Показать все параметры и для параметра Создать словарь n-грамм установлено значение True 20 000 Максимальный размер словаря. Если количество токенов на входе превышает этот размер, могут возникнуть коллизии.
Число хэш-битов Целочисленный тип [1;31] Применяется, когда установлен флажок Показать все параметры и для параметра Создать словарь n-грамм установлено значение False 12 Количество битов, используемых во время хэширования функций.

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

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

Список ошибок, относящихся к компонентам, см. в разделе Исключения и коды ошибок для конструктора.