Пошаговое руководство по анализу отзывов о продуктах Amazon с помощью FastText API.
Этот блог содержит подробное пошаговое руководство по классификации текста с помощью FastText. С этой целью мы решили провести анализ настроений по отзывам клиентов на Amazon.com и подробно описать, как собирать отзывы о конкретных продуктах, чтобы выполнять анализ настроений по ним.
Что такое FastText?
Текстовая категоризация стала неотъемлемой частью делового мира; используется ли она для фильтрации спама или анализа отзывов клиентов в Твиттере о сайтах электронной коммерции, это, вероятно, самый распространенный пример.
FastText — это библиотека с открытым исходным кодом, разработанная Facebook AI Research (FAIR) специально для упрощения классификации текста. FastText может обучать миллионы примеров текстовых данных с помощью многоядерных процессоров за десятки минут и использовать обученную модель для прогнозирования более 300 000 категорий не встречающегося текста менее чем за пять минут.
Предварительно помеченный набор обучающих данных:
Набор данных с аннотациями вручную, содержащий миллионы отзывов Amazon, полученных с Kaggle.com, был собран и использован для обучения модели после преобразования в формат FastText.
Формат данных FastText следующий:
__label__<X> __label__<Y> ... <Text>
где X и Y представляют метки классов.
В наборе данных, который мы использовали, мы добавляем название обзора к обзору, разделяя его «:» и пробелом.
Ниже приведен пример из файла обучающих данных, который можно найти вKaggle.comНаборы данных, используемые для обучения и тестирования модели, можно найти на веб-сайте.
__label__2 Great CD: My lovely Pat has one of the GREAT voices of her generation. I have listened to this CD for YEARS and I still LOVE IT. When I'm in a good mood it makes me feel better. A bad mood just evaporates like sugar in the rain. This CD just oozes LIFE. Vocals are jusat STUUNNING and lyrics just kill. One of life's hidden gems. This is a desert isle CD in my book. Why she never made it big is just beyond me. Everytime I play this, no matter black, white, young, old, male, female EVERYBODY says one thing "Who was that singing ?"
Здесь у нас есть только два класса 1 и 2, где __метка__1 указывает, что рецензент дал продукту 1 или 2 звезды, а __метка__2 указывает на оценку 4 или 5 звезд.
Обучить FastText для классификации текста:
Предварительная обработка и очистка данных:
После нормализации текстовых регистров и удаления нежелательных символов выполните следующие команды, чтобы сгенерировать предварительно обработанные и очищенные файлы обучающих данных.
cat <path to training file> | sed -e “s/\([.\!?,’/()]\)/ \1 /g” | tr “[:upper:]” “[:lower:]” > <path to pre-processed output file>
Установить быстрый текст:
давайте загрузим сПоследняя версия запускается:
$ git clone https://github.com/facebookresearch/fastText.git
$ cd fastText
$ make
Запуск двоичного файла без каких-либо аргументов распечатает высокоуровневую документацию, показывающую различные варианты использования, которые поддерживает fastText:
>> ./fasttext
usage: fasttext <command> <args>
The commands supported by fasttext are:
supervised train a supervised classifier
quantize quantize a model to reduce the memory usage
test evaluate a supervised classifier
predict predict most likely labels
predict-prob predict most likely labels with probabilities
skipgram train a skipgram model
cbow train a cbow model
print-word-vectors print word vectors given a trained model
print-sentence-vectors print sentence vectors given a trained model
nn query for nearest neighbors
analogies query for analogies
В этом учебном пособии мы в основном использовали подкоманды «supervised», «test» и «predict», соответствующие обучению (и использованию) классификации текста.
Обучите модель:
Следующие команды используются для обучения модели классификации текста:
./fasttext supervised -input <path to pre-processed training file> -output <path to save model> -label __label__
Параметр командной строки -input относится к обучающему файлу, а параметр -output указывает место, где должна быть сохранена модель. После завершения обучения в заданном месте будет создан файл model.bin, содержащий обученный классификатор.
Необязательные параметры для улучшения модели:
Увеличьте количество итераций обучения:
По умолчанию модель повторяется 5 раз на каждом примере, чтобы увеличить этот параметр для лучшего обучения, мы можем указать параметр -epoch.
Пример:
./fasttext supervised -input <path to pre-processed training file> -output <path to save model> -label __label__ -epoch 50
Укажите скорость обучения:
Изменение скорости обучения означает изменение скорости обучения нашей модели, увеличение (или уменьшение) скорости обучения алгоритма. Это соответствует тому, насколько модель меняется после обработки каждого примера. Скорость обучения, равная 0, означает, что модель вообще не меняется и, следовательно, ничему не учится. Хорошее значение скорости обучения находится в диапазоне 0,1–1,0.
Значение lr по умолчанию равно 0,1. Вот как указать этот параметр.
./fasttext supervised -input <path to pre-processed training file> -output <path to save model> -label __label__ -lr 0.5
Используйте n-граммы в качестве признаков:
Это полезный шаг для задач, которые зависят от порядка слов, особенно для анализа настроений. Это нужно для того, чтобы указать, что слова последовательных токенов в окне n используются в качестве признаков для обучения.
Мы указываем параметр -wordNgrams (в идеале значение от 2 до 5):
./fasttext supervised -input <path to pre-processed training file> -output <path to save model> -label __label__ -wordNgrams 3
Протестируйте и оцените модель:
Следующие команды используются для проверки модели на предварительно аннотированном тестовом наборе данных и сравнения исходных меток с прогнозируемыми метками для каждого обзора и создания оценочных баллов в форме точности и полноты.
Точность — это количество правильных меток среди меток, предсказанных fastText. Отзыв — это количество меток, которые были успешно предсказаны.
./fasttext test <path to model> <path to test file> k
где параметр k представляет собой k лучших меток, которые модель использует для прогнозирования каждого отзыва.
Результаты, полученные при оценке нашей обученной модели на тестовых данных из 400 000 отзывов, следующие. Как видно, точность и полнота составляют 91%, а обучение модели занимает очень короткое время.
N 400000
P@1 0.913
R@1 0.913
Number of examples: 400000
Проанализируйте настроение отзывов клиентов о продуктах на Amazon.com в режиме реального времени:
Скрапинг отзывов клиентов Amazon:
Мы используем существующую библиотеку Python для очистки комментариев со страницы.
Для установки в командной строке/терминале введите:
pip install amazon-review-scraper
Вот пример кода для заданной страницы URL для сканирования отзывов о конкретном продукте:
from amazon_review_scraper import amazon_review_scraper
url = input("Enter URL: ")
start_page = input("Enter Start Page: ")
end_page = input("Enter End Page: ")
time_upper_limit = input("Enter upper limit of time range (Example: Entering the value 5 would mean the program will wait anywhere from 0 to 5 seconds before scraping a page. If you don't want the program to wait, enter 0): ")
file_name = "amazon_product_review"
scraper = amazon_review_scraper.amazon_review_scraper(url, start_page, end_page, time_upper_limit)
scraper.scrape()
scraper.write_csv(file_name)
Примечание. При вводе URL-адреса страницы отзывов клиентов для определенного продукта обязательно добавьте &pageNumber=1 (если он не существует), чтобы парсер работал правильно.
Приведенный выше код получает комментарии с указанного URL-адреса и создает выходной CSV-файл в следующем формате:
Из приведенного выше CSV-файла мы извлекаем заголовок и тело и добавляем их вместе, разделяя ': и пробелами в обучающем файле, и сохраняем их в отдельном txt-файле для прогнозирования тональности.
Прогноз настроений данных:
./fasttext predict <path to model> <path to test file> k > <path to prediction file>
где k представляет собой k лучших меток, которые модель будет предсказывать для каждого обзора.
Метки, предсказанные отзывами выше, следующие:
__label__2
__label__1
__label__2
__label__2
__label__2
__label__2
__label__2
__label__2
__label__1
__label__2
__label__2
Это довольно точно и может быть проверено вручную. Затем файл прогноза можно использовать для дальнейшего подробного анализа и визуализации.
Итак, в этом блоге мы научились использовать FastText API для классификации текста, извлечения отзывов клиентов Amazon о данном продукте и прогнозирования их настроений с помощью обученной аналитической модели.
Для получения дополнительных статей, пожалуйста, посетите: http://www.apexyun.com
Общедоступный номер: Galaxy № 1
Контактный адрес электронной почты: public@space-explore.com
(Пожалуйста, не перепечатывайте без разрешения)