Репозиторий этого проекта можно найти здесь.

вступление

Если вы знакомы с Интернетом, вы, вероятно, знаете об очень активном (и прибыльном) интернет-сообществе красоты. Блогеры-энтузиасты и обозреватели публикуют бесчисленные часы видео и комментариев, в которых обсуждаются все товары для красоты и ухода за кожей, представленные на рынке. Например, на сайте Sephora.com одно увлажняющее средство может получить тысячи отзывов, а количество отзывов, содержащих более 300 слов, может вас удивить.

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

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

данные, НЛП, тематическое моделирование и анализ настроений

Текст обзора продуктов по уходу за кожей (например, увлажняющих средств, очищающих средств, отшелушивающих средств и т. Д.) Взят из базы данных обзоров продуктов Amazon для товаров в категории роскошные продукты по уходу за кожей. Название продукта, категория (например, увлажняющие, очищающие, отшелушивающие или лечебные средства), описание и отдельные отзывы были включены для каждого продукта, и все это хранилось в MongoDB. После удаления продуктов и обзоров, которые казались дублирующими, в упражнение было включено 2241 продукт и 81 308 отзывов.

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

Чтобы очистить данные для моделирования темы, я разбил весь текст обзора на слова, удалил стоп-слова, общие слова (например, «продукт»), числа и знаки препинания и лемматизировал, чтобы выделить слова до их корня. Используя матрицу, сгенерированную TF-IDF, я обнаружил, что факторизация неотрицательной матрицы (NMF) дает самые разные темы с точки зрения человеческой интерпретации. Посредством NMF матрица документ-слово факторизуется в матрицу «документ-тема» и матрица «слово-тема», так что ни в одной из матриц нет отрицательных значений. В то время как я выбрал десять тем в процессе NMF, для системы рекомендаций я решил сосредоточиться на четырех, которые, казалось, связаны с общими проблемами ухода за кожей.

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

Чтобы создать систему рекомендаций, я хотел объединить категории, вызывающие озабоченность по поводу ухода за кожей, и оценки отзывов. В частности, я хотел найти продукты, отзывы о которых положительно отзывались о различных проблемах. Я сопоставил предложения-обзоры с положительной оценкой настроения по четырем категориям на основе присутствия слов моделирования темы. Например, предложение, в котором говорилось: «Мне понравился этот продукт за мою чувствительную кожу». будет отмечен как положительное предложение для категории продукта для чувствительной кожи. Для каждого продукта я мог найти среднюю положительную оценку для каждой из 4 проблем, связанных с уходом за кожей, и общую среднюю положительную оценку, используя все положительные предложения продукта.

система рекомендаций

Лучше всего описать систему рекомендаций на примере. Во-первых, у пользователя есть возможность выбрать один из 4 возможных вопросов по уходу за кожей, который определяет, какие продукты будут ему рекомендованы. В этом примере человек ищет очищающее средство (средство для умывания) и указал, что у него чувствительная кожа. Они просматривают продукты и находят «Очищающее средство Epicuren Discovery Gelle Cleanser». На этой странице продукта рекомендуются продукты с наибольшим косинусным сходством из десяти категорий, созданных NMF, взвешенных по средней положительной оценке чувствительности кожи (выбранная ими проблема). К ним относятся рекомендации для продуктов из той же категории продуктов (возможно, пользователь ищет другое очищающее средство, чтобы попробовать) и продуктов из разных категорий продуктов (например, увлажняющие кремы, отшелушивающие средства / скрабы, тоники и лечебные средства), которые могут помочь им в наращивании из других частей их повседневного ухода за кожей.

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

последние мысли

Как я узнал в рамках этого проекта, существует бесконечное количество способов создания системы рекомендаций и десятки способов, которыми я хотел бы поэкспериментировать. Однако без дополнительной информации о пользователях у меня не было четкого способа проверить, отражают ли рекомендуемые продукты реальные продукты, которые нравятся тому же пользователю или другим пользователям. Тем не менее, этот проект открыл глаза на понимание потенциала НЛП и обучения без учителя для преобразования множества беспорядочных текстовых данных во что-то более поддающееся количественной оценке и информативное.