Смешивание текстовых и числовых функций для классификации текста с использованием глубокого обучения

У меня проблема с разделением текста на несколько категорий (тем). Помимо текста, у меня есть некоторые числовые функции, которые, по моему мнению, могут быть полезны (среди этих функций также отсутствуют значения). Но самая важная информация, конечно же, представлена ​​в тексте. Поэтому я думаю, что подход глубокого обучения (с общим конвейером: уровень встраивания + CNN или RNN с выпадением + плотный слой) был бы лучшим выбором. Как лучше всего сочетать текущую модель, которая работает только с вводом текста, с числовыми функциями? Проводятся ли какие-то уловки, лучшие общие практики, современные исследования в этой области? Есть ли статьи / эксперименты (может быть, на GitHub) по этой теме?

Было бы здорово, если бы мы могли думать о проблеме в целом, но чтобы иметь представление о том, какую проблему мы можем решить, я приведу конкретный пример. Предположим, у нас есть отзывы пользователей, в которых они описывают проблему, с которой они столкнулись при получении услуги или покупке товара. Целевая функция - мульти-ярлык: набор тегов (категорий / тем), связанных с жалобой пользователя (мы должны выбрать релевантные из нескольких сотен возможных тем).

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

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

0
0
333
1

Ответы 1

Для каждой числовой функции статистически есть представление (вы можете использовать pandas.DataFrame.describe), а также построение графика распределения визуально сделает вас сильнее.

После получения значений mean, std, max, min и т. д. Вам следует избавиться от выбросов, которые могут нанести вред вашей модели обучения. Например, если у ваших функций 90% числовых значений от 18 до 72, но также есть такие значения, как 1,1 или 1200 и т. д., Вы должны избавиться от них, уравняв их до 18 или 72 в зависимости от стороны. Вы можете использовать np.clip ()

После разумного распределения вы должны преобразовать эти числовые функции в категориальные. Например, числовое распределение от 18 до 72 может быть сгруппировано как 18, 27, 36, ......, 72 с учетом интервалов. Вы можете увеличить или уменьшить разрешение, в зависимости от вашего понимания и производительности алгоритма. Вы можете использовать np.digitize () или сделать это вручную с помощью простой функции, которую вы можете написать.

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

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

Другие вопросы по теме