Анализ настроений
с использованием SVM. Анализ настроений — это техника НЛП… | Васиста Редди.
Анализ настроений помогает специалистам по анализу данных анализировать любые данные, т. е. бизнес, политику, социальные сети и т. д.,
Анализ настроений — это задача НЛП , которая является подполем искусственного интеллекта , помогающего машинам работать с человеческими языками. Работать с 6500 человеческими языками непросто. Прочитайте об НЛП здесь .
NLTK (набор инструментов для естественного языка), TextBlob , Spacy — это модули для задач НЛП.
SVM — это контролируемый алгоритм машинного обучения (feed-me) , который можно использовать как для задач классификации, так и для задач регрессии. Классификация прогнозирует 9Метка 0041/группа , а регрессия прогнозирует непрерывное значение .
SVM выполняет классификацию, находя гиперплоскость, которая различает классы, которые мы нанесли на график в n-мерном пространстве.
оптимальная разделительная гиперплоскость между двумя классами
SVM рисует эту гиперплоскость путем преобразования наших данных с помощью математических функций, называемых «Ядрами». Типы ядер: линейный, сигмовидный, RBF, нелинейный, полиномиальный и т. д.,
Параметр настройки Ядро — «RBF» предназначено для нелинейных задач, а также является ядром общего назначения, используемым, когда нет предварительных знаний о данных. Kernel — «линейный» для линейных разделимых задач. Поскольку наша проблема здесь линейная (только положительные и отрицательные), мы выберем «линейный SVM».
Шаги, необходимые для построения модели
- Сбор идеальных данных для обучения и тестирования
- Векторизация данных
- Создание Линейная модель SVM для обучения и последующего прогнозирования
Я выбираю данные из наборов данных полярности настроений 2. 0 , которые должным образом классифицированы как наборы данных фильмов и преобразованы в CSV для простоты использования.
импорт панд как pd# Данные поезда
trainData = pd.read_csv("https://raw.githubusercontent.com/Vasistareddy/sentiment_analysis/master/data/train.csv")# Тестовые данные
testData = pd.read_csv( "https://raw.githubusercontent.com/Vasistareddy/sentiment_analysis/master/data/test.csv")
Давайте посмотрим на пример данных
trainData.sample(frac=1).head(5) # перетасовать df и выбрать первое 5 ... pos
1467 david spade имеет ехидное, саркастическое чувство ч... neg
392 по прибытии в театр во время открытия в... pos
104 время от времени , фильм подкрадывается ко мне... поз.
1035 отзыв Сьюзан Грейнджер об "американских преступниках"... нег
«Пытайте данные, и они признаются в чем угодно.» — Рональд Коуз
Подготовка текстовых данных с помощью scikit-learn — перейдите к этому руководству, чтобы узнать , почему мы выбираем tf-idf для векторизации наших данных.
из sklearn.feature_extraction.text import TfidfVectorizer# Создание векторов признаков
vectorizer = TfidfVectorizer(min_df = 5,
max_df = 0,8,
sublinear_tf = True,
use_idf = True)train_vectors = vectorizer.fit_transform(trainData['Content'])
test_vectors = vectorizer.transform(testData['Content'])
О параметрах читайте в документации здесь .
время импорта
из sklearn import svm
из sklearn.metrics importclassification_report# Выполнение классификации с помощью SVM, kernel=linear
classifier_linear = svm.SVC(kernel='linear')
t0 = time.time()
classifier_linear.fit(train_vectors, trainData['Label'])
t1 = time.time()
Prediction_linear = classifier_linear.predict(test_vectors)
t2 = time.time()
time_linear_train = t1-t0
time_linear_predict = t2-t1# results
print("Время обучения: %fs; Время прогнозирования: %fs" % (time_linear_train, time_linear_predict))report = classification_report(testData['Label'], Prediction_linear, output_dict=True )print('положительный: ', отчет['положительный'])
print('отрицательный: ', отчет['отрицательный']) -------------------- ------------------------------------------------Тренировочное время : 10.460406с; Время предсказания: 1,003383 с
положительный: {'точность': 0.9191919191919192, 'отзыв': 0.91, 'f1-score': 0.9145728643216081, 'поддержка': 100}
отрицательный: {'точность': 0.9108910891089109, 'f-score': 0.19 ': 0,9154228855721394, 'поддержка': 100}
f1-score равен 91%
в обоих случаях, что является гармоническим средним значением точности и полноты. Подробнее про точность и отзыв в здесь .
f1-счет = 2 * ((точность * полнота)/(точность + полнота))
review = """ПРЕВОСХОДНО, Я ВЛЮБИЛСЯ В ЭТОТ ТЕЛЕФОН""" review_vector = vectorizer.transform([review]) # векторизация
print(classifier_linear.predict(review_vector))
----- -------------------------------------------------- -------------
[ 'pos' ]review = """Не покупайте этот продукт. Мой мобильный телефон взорвался, когда я переключил зарядное устройство""" review_vector = vectorizer.transform ([review]) # векторизация
print(classifier_linear.predict(review_vector))
------------------------------------------------ --------------------
[ 'neg' ]review = """Я получил бракованную деталь, дисплей не работает должным образом""" review_vector = vectorizer. transform([review]) # векторизация
print(classifier_linear.predict(review_vector))
--------------------------------------------- --------------------------------------
[ 'нег' ]review = "" «Не прошло и 5 дней, как я купил этот продукт. Я бы сказал, что это специально смешанный худший телефон во всех форматах. ВЫПУСК 1:
Вы когда-нибудь слышали о телефоне, который разряжается ночью даже в режиме ожидания?
Пожалуйста, посмотрите на скриншот, если хотите верить моему заявлению. Мой телефон был полностью заряжен ночью в 22:07. Я сделал этот скриншот и пошел спать.
Затем я проснулся утром в 6:35, и батарея разрядилась на 56% только в режиме ожидания.Если это так, подумайте, сколько часов он будет работать в дневное время.
Аккумулятор не выдерживает и 5 часов.ВОПРОС 2:Помимо аккумулятора,следующей проблемой является проблема с нагревом.Я недавно купил железный ящик в Bajaj на этой распродаже.
Но я понял, что этот телефон действует как железная коробка намного лучше, чем железная коробка Bajaj. Я использую только свои наушники, чтобы быть на связи во время разговора. Я не уверен, когда этот телефон выйдет из строя из-за этой проблемы с нагревом. Это определенно вызов держать этот телефон в течение даже 1 минуты. Тепло, которое вызывает телефон, определенно обожжет ваши руки, и для мужчины, если вы будете легко держать этот телефон в кармане брюк, это приведет к бесплодию для вас. Пожалуйста, помните об этом. Проблема 3: даже некоторые неизвестные бренды имеют лучшую чувствительность к касанию. Чувствительность к касаниям жалкая, если выполнить какую-то операцию, то ответ телефона легко займет 1-2 минуты.
К вашему сведению, в моей системе свободно 73% памяти, а ОЗУ также свободно на 56%.Пожалуйста, сделайте этот обзор известным и дайте всем знать об этой проблеме с этим телефоном.
Давайте избавим людей от покупки этого телефона. Есть люди, которые даже не знают, что делать, если эта проблема возникает по прошествии 10 дней с момента покупки. Так что я чувствую, что по крайней мере этот обзор поможет людям покупать этот продукт в будущем.""" review_vector = vectorizer.transform([review]) # vectorizing
print(classifier_linear.predict(review_vector)) ----------------------------------------------------- -----------------------------
[ 'neg' ]
Полный код SVM линейной классификации равен здесь .
Для повторного использования мы можем сбросить модель и загрузить ее в любое время и в любом месте. Словарь также необходим для векторизации новых документов при прогнозировании метки.
import pickle# травление векторизатора
pickle.dump(vectorizer, open('vectorizer.sav', 'wb'))# травление модели
pickle.dump(classifier_linear, open('classifier.sav', 'wb'))
Загрузите словарь и модель и используйте ее как приложение flask. Проверьте gitcode здесь .
Набор данных, который мы обучили здесь, составляет всего 1800 кинодокументов
, а точность 91%.
Для большей точности мы можем добавить больше документов в набор данных. Посетите эту страницу о парсинге обзоров Amazon . Вы также можете искать наборы данных в google toolbox .
Спасибо за внимание! Если вам нравится концепция, не забудьте подтвердить мои навыки на Linkedin .
Пожалуйста, хлопайте и делитесь, если вам понравилась статья.
cs 7641 задание 2 pdf0009
github. com › blob › master › Assignment2 › ycai87…
CS7641-Machine-Learning/Assignment2/ycai87-analysis.pdf · Нижний колонтитул.
nthakurdesai3-analysis.pdf — CS 7641 — Задание 2 — Course Hero
www.coursehero.com › файл › nthakurdesai3-analysis…
Посмотреть nthakurdesai3-analysis.pdf из CS 7641 Технологического института Джорджии . CS 7641 — Задание 2: Рандомизированный поиск Ниранджан Тхакурдесай 6 ноября, …
yli973-analysis-2.pdf — CS 7641 Задание 2 Студент — Курс Герой
www.coursehero.com › файл › yli973-analysis-2pdf
Посмотреть лабораторный отчет — yli973-analysis-2.pdf из CS 7641 в Массачусетсе Технологический Институт. CS 7641 Задание 2 Учащийся: Yinglin Li (yli973) Эл. -omscs-cs…
CS 7641: машинное обучение. Атланта, Джорджия [email protected]. Аннотация: В этом отчете представлен анализ производительности 4 алгоритмов случайной оптимизации.
Задание 2 CS 7641 Machine Learning — Studocu
www. studocu.com › … › Machine Learning
Bewertung 1,0
(2)
Задание 2: CS7641 — Machine Learning Саад Хан. 23 октября 2015 г. 1 Введение. Целью этого задания является изучение рандомизированной оптимизации …
[PDF] Неконтролируемое обучение и уменьшение размерности 1. Наборы данных:
varundani.github.io › project_docs › unl
CS-7641-Spring-2018 … 2. Алгоритмы кластеризации: Ниже приводится анализ K-средних и ожиданий… и присвоение баллов.
Bilder
Allo Anzeigen
Alle Anzeigen
Назначение 2 машинного обучения — Docsity
www.docsity.com ›…› Учебное обучение
10.09.2022 · Присвоение 1 -Lect Примечания на машинном обучении. | CS 7641. (2) … обучение и многое другое. Задания по машинному обучению в формате PDF только в Docsity!
Рукописное задание по машинному обучению | CS 7641 — Docsity
www.