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

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

Примечание . Настоятельно рекомендуется использовать Jupyter Notebook или Google Colab.

Прочтите это сообщение в блоге, если хотите узнать больше о Jupyter Notebook и его функциях.



Итак, приступим?

Описание набора данных

Формально, учитывая обучающую выборку твитов и ярлыков, где метка '1' означает, что твит расистский / сексистский, а метка '0' означает твит не расистский / сексистский, наша цель - предсказать ярлыки в данном тестовом наборе данных.

  • id: идентификатор, связанный с твитами в данном наборе данных.
  • tweets: твиты, собранные из различных источников и имеющие как положительные, так и отрицательные настроения.
  • label: твит с меткой '0' имеет положительный тон, а твит с меткой '1' - отрицательный.

Импорт необходимых пакетов

Чтение файла Pandas train.csv

  • В первой строке мы читаем файл train.csv с помощью Pandas.
  • Во второй строке в качестве безопасной резервной копии мы храним копию нашего исходного файла train.csv. Мы делаем копию данных поезда, чтобы даже в случае внесения каких-либо изменений в этот набор данных мы не потеряли исходный набор данных.

Обзор набора данных для обучения

Как вы можете видеть, у нас есть 3 атрибута, присутствующих в нашем наборе данных, и всего 31962 помеченных твита, «1» означает твиты с негативным настроением, а «0» - для твитов с позитивным настроением.

Чтение файла Pandas test.csv

  • В первой строке мы читаем файл test.csv с помощью Pandas.
  • Во второй строке в качестве безопасной резервной копии мы храним копию нашего исходного файла test.csv. Мы делаем копию тестовых данных, чтобы даже если нам придется внести какие-либо изменения в этот набор данных, мы не потеряем исходный набор данных. .

Обзор тестового набора данных

Как мы видим, у нас есть 2 атрибута, это id и tweets. Это набор данных, на котором мы собираемся чтобы протестировать наши модели машинного обучения, чтобы они не были помечены.

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

Начнем с предварительной обработки нашего набора данных.

ШАГ 1 :

Объедините файлы train.csv и test.csv.

Функция Pandas dataframe.append() используется для добавления строк другого фрейма данных в конец данного фрейма данных, возвращая новый объект фрейма данных.

Обзор комбинированного набора данных для поездов и тестов.

Введите comb.head () в ячейку, и вы получите следующий результат.

Снова введите в ячейку comb.tail (), и вы получите следующий результат.

Столбцы, не входящие в исходные фреймы данных, добавляются как новые столбцы, а новые ячейки заполняются значением NaN.

Чтобы узнать больше о функции append () в Pandas, перейдите по ссылке ниже.



ШАГ 2

Удаление дескрипторов Twitter (@User)

В нашем анализе мы ясно видим, что дескрипторы Twitter не вносят ничего значительного для решения нашей проблемы. Так что лучше, если мы удалим их из нашего набора данных.

Ниже приведена определяемая пользователем функция для удаления нежелательных текстовых шаблонов из твитов. Он принимает два аргумента: один - это исходная строка текста, а другой - шаблон текста, который мы хотим удалить из строки. Функция возвращает ту же входную строку, но без заданного шаблона. Мы будем использовать эту функцию, чтобы удалить шаблон «@user» из всех твитов в наших данных.

Здесь используется NumPy Vectorization ‘np.vectorize ()’, потому что он намного быстрее, чем обычные циклы for при работе с наборами данных от среднего до большого размера.

Более подробное обсуждение можно найти в следующем среднем сообщении в блоге.



ШАГ 3

Удаление знаков препинания, цифр и специальных символов

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

ШАГ - 4

Удаление коротких слов

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

Например, такие термины, как «хм», «и», «ой», очень малопригодны. От них лучше избавиться.

ШАГ - 5

Токенизация

Теперь мы будем токенизировать все очищенные твиты в нашем наборе данных. Токены - это отдельные термины или слова, а токенизация - это процесс разделения строки текста на токены.

Здесь мы токенизируем наши предложения, потому что на следующем этапе мы применим Stemming из пакета «NLTK».

ШАГ - 6

Стебель

Стемминг - это основанный на правилах процесс удаления суффиксов («ing», «ly», «es», «s» и т. Д.) Из слова.

Например, «играть», «игрок», «играл», «играет» и «играет» - это разные варианты слова «играть».

Теперь давайте соединим эти жетоны вместе.

Итак, наконец, это основные шаги, которые нужно выполнить, когда нам нужно предварительно обработать набор данных, содержащий текстовые данные.

Примечание. Чтобы получить подробные сведения о концепциях, используемых на различных этапах предварительной обработки, таких как Stemming, Tokenization, Regex, NLTK, обратитесь к следующему блогу. сообщение.



Хорошо, теперь мы закончили этапы предварительной обработки данных.

Перейдем к следующему шагу - визуализации данных.

Визуализация данных

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

Итак, приступим.

WordCloud

Один из популярных методов визуализации - WordCloud.

WordCloud - это визуализация, в которой наиболее часто используемые слова отображаются в большом размере, а менее частые - в меньшем размере.

Итак, в Python у нас есть пакет для генерации WordCloud.

Давайте погрузимся в код, чтобы увидеть, как создать WordCloud.

Импорт пакетов, необходимых для создания WordCloud

Создание WordCloud для твитов с меткой «0».

Сохраните все слова из набора данных, которые не являются расистскими / сексистскими.

Код для создания необходимого WordCloud.

Каждая строка правильно прокомментирована для лучшего понимания.

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

Создание WordCloud для твитов с меткой «1».

Сохраните все слова из набора данных, которые не являются расистскими / сексистскими.

Код для создания необходимого WordCloud.

Каждая строка правильно прокомментирована для лучшего понимания.

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

Понимание влияния хэштегов на настроение твитов

Хеш-теги в Твиттере могут иметь большое влияние, когда дело доходит до количества ваших подписчиков, за счет использования общих и неспецифических хэштегов. Если вы помечаете общие слова, такие как #creative, или события, например #TIFF,, которые происходят, скорее всего, ваш твит выйдет за пределы вашего списка подписчиков.

Итак, мы посмотрим, как мы можем извлечь хэштеги, и посмотрим, какие хэштеги попадают в какую категорию.

Функция извлечения хэштегов из твитов

Вложенный список всех хэштегов из положительных отзывов из набора данных.

ВЫХОД:

Здесь мы разворачиваем список

ВЫХОД:

Вложенный список всех хэштегов из отрицательных отзывов из набора данных

ВЫХОД:

Здесь мы разворачиваем список

ВЫХОД:

Построение гистограмм

Для положительных твитов в наборе данных

Подсчет частоты употребления слов с положительным мнением

ВЫХОД:

FreqDist({'love': 1654, 'posit': 917, 'smile': 676, 'healthi': 573, 'thank': 534, 'fun': 463, 'life': 425, 'affirm': 423, 'summer': 390, 'model': 375, ...})

Создание фрейма данных для наиболее часто используемых слов в хэштегах

Построение гистограммы для 20 наиболее часто используемых слов в хэштегах

Для отрицательных твитов в наборе данных

Подсчет частоты употребления слов с отрицательным мнением

ВЫХОД:

FreqDist({'trump': 136, 'polit': 95, 'allahsoil': 92, 'liber': 81, 'libtard': 77, 'sjw': 75, 'retweet': 63, 'black': 46, 'miami': 46, 'hate': 37, ...})

Создание фрейма данных для наиболее часто используемых слов в хэштегах

Построение гистограммы для 20 наиболее часто используемых слов в хэштегах

И это завершение Части I.

Итак, давайте посмотрим, что мы узнали на данный момент.

Резюме :

1. Заявление о проблеме

Что именно мы собираемся делать в этом проекте.

2. Описание набора данных

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

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

  • Удаление дескрипторов Twitter (@user)
  • Удаление знаков препинания, цифр, специальных символов
  • Удаление коротких слов, то есть слов с длиной
  • Токенизация
  • Стемминг

4. Визуализация данных

  • WordCloud
  • Барные участки

На этом пока все, ребята. Скоро вернусь с частью-II этого поста, где мы узнаем о двух самых популярных методах встраивания слов Bag-of-Words и TF-IDF.

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

Следите за обновлениями.

Изменить: если вы хотите прочитать вторую часть этой статьи, перейдите к следующему сообщению.



Вы можете связаться со мной по

LinkedIn: https://www.linkedin.com/in/deepak-das-profile/

GitHub: https://github.com/dD2405

Приятного чтения !!!