Этот проект разработали Пранав Харати, Сара Янсен, Зои Нг, Прамука Перера и Снигдха Синха.

Нашей целью было создание реалистичных обзоров продуктов с использованием разных наборов данных и разных моделей. Мы нашли существующие наборы данных отзывов о продуктах на Kaggle и предварительно обработали эти данные, прежде чем использовать их для обучения наших моделей. Мы использовали модели LSTM и n-gram для создания обзоров.

Мотивация проекта и предыстория

По мере того, как мы движемся к более связанному и управляемому Интернетом обществу, онлайн-обзоры продуктов оказывают все большее влияние на решения многих потребителей о покупке.

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

В рамках этого проекта мы хотели создавать реалистичные обзоры продуктов, используя разные наборы данных и разные модели. Мы предварительно обработали три разных набора данных: обзоры технических продуктов Amazon, женской одежды и вина. Мы начали с удаления всех знаков препинания, кроме точек, запятых, восклицательных знаков, апострофов и вопросительных знаков. Мы создали модели LSTM и модели n-грамм для каждого из наборов данных, но обнаружили, что набор данных о вине дает наиболее реалистичные отзывы. Мы продолжали настраивать эти модели до тех пор, пока не остались довольны отзывами о них.

Нашим основным вкладом было сравнение различных методов генерации текста и их применение к наборам данных отзывов о продуктах. Мы создали модель LSTM на основе символов, модель LSTM на основе слов и модель n-грамм на основе слов. При создании моделей LSTM мы обнаружили, что модель на основе символов дает более реалистичные обзоры, чем LSTM на основе слов, поэтому мы сосредоточились на модели LSTM на основе символов. Мы напрямую сравнили модель на основе символов LSTM с моделями n-грамм, обученными на том же наборе данных обзоров вин, и обнаружили, что модель триграмм генерирует более реалистичные обзоры.

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

Связанных с работой

Было несколько разных статей, которые мы использовали, чтобы придумать наши модели и решения для предварительной обработки. Сначала мы изучили существующие модели генерации текста, чтобы понять, как может выглядеть базовая структура нашей модели. Два выдающихся примера: один, в котором использовалась RNN для создания стихотворения [4], и статья, в которой основное внимание уделялось моделям на основе слов и символов для создания шекспировских сонетов [3]. Google также создал пример ноутбука iPython для генерации текста с моделью на основе символов с использованием своего специального оборудования [8]. Затем мы рассмотрели примеры более сложных шагов предварительной обработки, таких как использование нейронной сети под названием word2vec для преобразования наших входных данных слова в векторы [1] и манипулирование входными списками слов для сохранения большей части контекста [2].

Сбор данных

Мы искали в Kaggle наборы данных обзоров продуктов, на которых мы могли бы обучить нашу модель. Мы выбрали наборы данных, которые были достаточно большими для обучения нашей модели и содержали фактический текст обзора в дополнение к метаданным о каждом обзоре. Мы выбрали три набора данных из Kaggle: обзоры женской одежды [5], обзоры вин [6] и обзоры продуктов Amazon [7].

Предварительная обработка и исследование данных

Наша главная забота при предварительной обработке заключалась в том, что наш входной текст будет иметь знаки препинания, которые будут мешать нашим меткам слов. Например, слово с прикрепленными кавычками будет рассматриваться как другое слово, чем то же слово без кавычек. Это увеличит сложность модели и уменьшит размер обучающей выборки. Чтобы учесть это, мы удалили все знаки препинания, кроме восклицательных, вопросительных, запятых, точек и апострофов. Мы решили сохранить вышеупомянутые знаки препинания, чтобы они были включены в наши сгенерированные обзоры и сделали их более реалистичными. Затем для нашей символьной модели LSTM мы решили объединить все обзоры в один массив символов, добавив пробел между концом одного обзора и началом следующего. Для нашей модели LSTM, основанной на словах, после удаления всех знаков препинания за исключениями, отмеченными выше, мы обрабатывали оставшиеся знаки препинания (за исключением апострофов) как отдельные слова («Привет!» стало «Привет», «!»). Для нашей n-граммной модели мы решили не рассматривать оставшиеся знаки препинания как отдельные слова, потому что после некоторых экспериментов мы обнаружили, что модель работала лучше, если знаки препинания не рассматривались как отдельные слова. Затем мы добавили символ конца отзыва «‹eor›» в конец каждого отзыва перед созданием массива для каждого отзыва, где каждое слово и знак препинания — это отдельный элемент массива. Наконец, мы объединили все эти массивы в один массив слов и записали его в файл .txt, чтобы его было легко открывать и читать при обучении нашей модели n-грамм.

Мы исследовали использование различных наборов данных отзывов для обучения нашей модели, но столкнулись с некоторыми проблемами с другими наборами данных. Для набора данных об одежде в исходном наборе данных были некоторые проблемы с правописанием («это ооочень красиво»), которые сбивали с толку нашу модель, и их было бы сложнее решить с помощью предварительной обработки. Мы также обнаружили, что обучение с набором данных обзоров вин дает более качественные отзывы, потому что обзоры были более однородными (отзывы только об одном продукте, вине) по сравнению с набором данных Amazon, в котором рассматривался ряд различных технических продуктов. Набор данных обзоров вин также был самым большим набором данных, который мы нашли, а дополнительные обучающие данные позволили моделям генерировать более последовательные обзоры.

Моделирование

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

Для моделей на основе слов мы использовали модели n-грамм и модели нейронных сетей. Мы использовали две модели n-грамм: модель биграммы и модель триграммы. Мы также использовали два разных типа нейронных сетей: LSTM и нейронную сеть GRU.

Для символьной модели мы использовали только LSTM.

Модель n-грамм

Модель n-грамм использует предыдущие n-1 слов предложения для предсказания следующего слова. В нашей реализации n-gram мы использовали библиотеку Python Natural Language Toolkit (NLTK)[9]. Мы разбили список слов на отдельные наборы биграмм и триграмм, где биграмма — это последовательность двух последовательных слов из списка, а триграмма — последовательность трех последовательных слов из списка. Для упрощения объяснения рассмотрим только триграммы. Затем эти триграммы помещались в словарь, где ключом были первые два слова, а значением — список всех различных третьих слов. При создании обзора первые два слова будут использоваться для доступа к списку связанных третьих слов, а затем одно третье слово будет выбрано из этого списка случайным образом. Наконец, учитывая начальное число из двух слов и длину предложения, модель будет генерировать отзыв.

Модели LSTM и GRU

LSTM и GRU — это типы «рекуррентных нейронных сетей». Эти термины на самом деле относятся к скрытым модулям нейронных сетей, которые взаимодействуют друг с другом и сохраняют память о предыдущих состояниях и данных. Это делает их отличными для последовательного ввода. LSTM и GRU — это усовершенствования простых рекуррентных нейронных сетей в том смысле, что они пытаются математически улучшить то, как сеть запоминает предыдущие данные и использует их для уменьшения ошибок.

Структура модели нейронной сети

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

Сначала предложения входного слоя преобразуются в векторы либо по слову, как показано выше, либо по символу. Обратите внимание: это означает, что модель на основе символов имеет намного меньше входных меток для классификации, потому что количество символов фиксировано. Затем эти векторы обрабатываются нашими слоями RNN, которые генерируют выходные данные. На диаграмме не показаны плотный слой и слой softmax, которые преобразуют необработанные числовые выходные данные слоя RNN в распределение вероятностей, которое представляет вероятность каждого слова или символа.

Результаты

Ниже мы сравниваем отзывы из наших входных данных с отзывами из нашего обучающего набора.

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

Приведенный выше обзор взят из набора данных обзоров вин.

Открывается бодрым, прохладным климатом средней полноты, лимонной свежестью. Возможно, это новый релиз бленда и Merlotink 100 Ronaissy с Cabernet Sauvignon и Petite Sirah из смоляных только пряных ароматов. Пыльные ягоды и ароматы черной смородины — это новый игристый вкус с танинами.

Этот вышеприведенный «обзор» был создан с помощью нашей символьной модели LSTM.

60 Cabernet Franc обладает жилистыми танинами, сочными кислотами, которые так и просят вас зависнуть в красивых оттенках клюквы, которые появляются в 80 Syrah и Cinsault. Никуда не денется. Дайте ему 5-10 лет.

Этот вышеприведенный «обзор» был создан с помощью нашей триграммной модели.

Это лимонно-огуречные груды побежали Жак Хайд, фермерские фрукты — груши Любопытно приглушить повязку медленно обжаренные винодельни’ Мальбеч Словакия приподнятые травяные грушевые экстракты собраны плотной маслянистой этна номалолактическая ферментация, вытекающая из розового дуба, гладкая, предшествующая защите Визеу

Этот вышеприведенный «обзор» был создан нашей словесной моделью ГРУ. Обратите внимание, что он гораздо менее понятен, чем другие.

Как видите, отзывы, созданные нашими моделями, похожи на английский язык, хотя есть проблемы с общей связностью обзора. Оценка «реальности» сгенерированного обзора может быть несколько субъективной, поэтому мы решили создать опрос, чтобы количественно оценить, насколько хорошо работает каждая модель.

Кстати, словесная модель была заметно хуже. Мы предполагаем, что это связано с тем, что модели, основанные на словах, имеют на порядки больше меток для прогнозирования и, следовательно, требуют гораздо больше данных, чем модель, основанная на символах, для хорошего обучения. Мы попытались настроить эту модель, чтобы получить лучшие результаты, изменив тип модели (GRU имел меньшие потери при обучении, чем LSTM), модель встраивания слов (word2vec и fasttext) и количество слоев (1, 2, 3), но результаты не слишком отличались.

Мы создали обзоры, используя как модели LSTM, так и модели n-грамм, а затем создали опрос, состоящий из выдержек из десяти реальных обзоров, десяти обзоров, созданных с помощью модели LSTM, и десяти обзоров, созданных с помощью модели n-грамм. Затем участников опроса попросили определить, является ли каждый отрывок из отзыва реальным или поддельным. В приведенной ниже таблице показана средняя вероятность того, что участник опроса поверит, что отрывок из отзыва взят из реального отзыва.

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

Вывод

Обзоры продуктов приобретают все большее влияние на потребителей, особенно при покупке товаров в Интернете. По мере роста влияния отзывов о продуктах растет и количество поддельных отзывов, публикуемых в попытке повлиять на поведение потребителей. Мы хотели определить, как создать поддельный обзор продукта с помощью машинного обучения, поэтому мы создали две разные модели, которые генерируют поддельные обзоры продуктов: модель на основе символов LSTM и модель на основе слов n-грамм. Мы искали Kaggle, чтобы найти наборы данных обзоров продуктов для обучения нашей модели, и мы предварительно обработали данные, чтобы улучшить обзоры, созданные нашей моделью, и упростить ввод предварительно обработанных данных в наши модели.

Модель n-грамм смогла получить лучшие отзывы, чем модель LSTM; модель n-грамм имела вероятность 0,425 того, что человек поверит, что это настоящий обзор, по сравнению с вероятностью 0,358 для модели LSTM. Мы считаем, что модель n-грамм работала лучше отчасти потому, что наша модель n-грамм предсказывает целое слово и добавляет его в обзор, тогда как модель LSTM предсказывает один символ. Подход, основанный на символах, допускает ошибки в написании слов, что облегчает человеку обнаружение фальшивого отзыва.

Мы считаем, что дальнейшее совершенствование наших моделей возможно. Благодаря отзывам участников опроса мы обнаружили, что большинство отзывов, созданных нашими моделями, могут быть признаны фальшивыми из-за грамматических ошибок или предложений, которые оказались неуместными. Дополнительная предварительная обработка для обнаружения грамматических ошибок, таких как опечатки или слова с ошибками, может улучшить грамматику сгенерированных отзывов и сделать их более реалистичными. Модель n-грамм могла генерировать правдоподобные отзывы, но их часто было легко обнаружить, потому что они заканчивались однократным предложением или содержали противоречивые мнения о вине. Чтобы решить эти проблемы, мы могли бы включить теги частей речи и тональности, чтобы влиять на то, какое слово будет выбрано следующим, тем самым улучшая грамматику и связность.

Ссылки

[1] К. Ганесан, Как начать работу с Word2Vec — и как заставить его работать, Medium, 2018 г. [Онлайн]. Доступно: https://medium.com/phrasee/neural-text-generation-generating-text-using-conditional-language-models-a37b69c7cd4b. [Доступ: 30 октября 2018 г.].

[2] Дж. Браунли, Как разрабатывать модели нейронного языка на основе слов в Python с помощью Keras, Мастерство машинного обучения, 2017 г. [Онлайн]. Доступно: https://machinelearningmastery.com/develop-word-based-neural-language-models-python-keras/. [Доступ: 30 октября 2018 г.].

[3] С. Се, Р. Растоги и М. Чанг, Глубокая поэзия: языковые модели на уровне слов и символов для генерации шекспировских сонетов, Стэнфордский университет, 2018. [Онлайн] . Доступно: https://web.stanford.edu/class/cs224n/reports/2762063.pdf. [Доступ: 30 октября 2018 г.].

[4] К. Годбаут, Рекуррентные нейронные сети для начинающих, Medium, 2016. [Онлайн]. Доступно: https://medium.com/@camrongodbout/recurrent-neural-networks-for-beginners-7aca4e933b82. [Доступ: 30 октября 2018 г.].

[5] Обзоры женской одежды для электронной коммерции, Kaggle.com, 2018 г. [Онлайн]. Доступно: https://www.kaggle.com/nicapotato/womens-ecommerce-clothing-reviews. [Доступ: 30 октября 2018 г.].

[6] Wine Reviews, Kaggle.com, 2018 г. [В сети]. Доступно: https://www.kaggle.com/zynicide/wine-reviews. [Доступ: 30 октября 2018 г.].

[7] Отзывы потребителей о продуктах Amazon, Kaggle.com, 2018 г. [В сети]. Доступно: https://www.kaggle.com/datafiniti/consumer-reviews-of-amazon-products. [Доступ: 30 октября 2018 г.].

[8] Предсказать Шекспира с помощью облачных TPU и Keras, Google Colab, 2018 г. [Онлайн]. Доступно: https://colab.research.google.com/github/tensorflow/tpu/blob/master/tools/colab/shakespeare_with_tpu_and_keras.ipynb. [Доступ: 14 декабря 2018 г.].

[9] Collocations, NLTK.org, 2018 г. [Онлайн]. Доступно: http://www.nltk.org/howto/collocations.html. [Доступ: 14 декабря 2018 г.].

[10] С. Кроссли, К. Кайл, Д. Макнамара. Инструмент для автоматического анализа связности текста (TAACO): автоматическая оценка локальной, глобальной и связности текста, Методы исследования поведения, 2015. [Онлайн]. Доступно: https://alsl.gsu.edu/files/2014/03/The-tool-for-the-automatic-analysis-of-text-cohesion-TAACO_Automatic-assessment-of-local-global-and-text -сплоченность.pdf

Соответствующие ссылки на проекты

Ссылка на гитхаб: https://github.com/tinversenorm/product_review_generator

Опрос: https://tinyurl.com/PrinciplesF18Survey