Смешивание текстовых и числовых функций для классификации текста с использованием глубокого обучения - PullRequest
0 голосов
/ 13 сентября 2018

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

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

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

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

1 Ответ

0 голосов
/ 13 октября 2018

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

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

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

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

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

...