Обработка естественного языка с использованием CountVectorizer scikit-learn или таких библиотек, как spaCY и Gensim, может предоставить мощное понимание текстовых данных, позволяя нам извлекать темы, которые затем могут быть добавлены как функции и регрессированы для создания прогнозов.

Однако что, если мы хотим использовать разреженную матрицу, создаваемую Countvectorizer, как функцию вместе с другими категориальными или числовыми функциями в наборе данных?

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

Леммы spaCY теперь очень чистые и могут быть преобразованы TFIDF в разреженную векторную матрицу после того, как я обработаю их обратно в строки.

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

Этот результат не особенно впечатляет (у меня было 57,8%, когда я его запускал), и его можно улучшить с помощью некоторой настройки гиперпараматоров с помощью RandomizedSearchCV, однако, возможно, мы хотели бы сначала воспользоваться некоторыми другими функциями набора данных?

Могут быть полезны оценки "круто", "смешно" и "полезно". Также, может быть, некоторые пользователи оставляют отзывы определенного типа? Или некоторые компании просто великолепны или ужасны и всегда получают одни и те же отзывы?

Сочетание всех этих функций с нашим НЛП должно улучшить нашу модель.

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

Следует отметить пару моментов. Во-первых, наша оценка не улучшилась, но мы можем немного настроить гиперпараметры, чтобы проверить, улучшилось ли это. Во-вторых, мы можем передать наш исходный конвейер lsi непосредственно в ColumnTransformer (), у нас также есть возможность отбросить все столбцы, которые не указаны (хотя мы можем передать их, и CT добавит их в матрицу пакета слов, которая TFIDF Vectorizer производит.

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

Код доступен на гитхабе.