Простой проект Python

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

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

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

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

Прежде чем углубляться в детали, вот ключевые части проектов:

  • Создайте учетную запись разработчика в Twitter
  • Используйте Tweepy, чтобы удалить твиты
  • Создайте фрейм данных Panda
  • Статистический анализ твитов
  • Анализ настроений
  • Частотный анализ слов
  • Тематическое моделирование

Создайте учетную запись разработчика в Twitter

Мне просто нужно было зарегистрироваться и ответить на несколько вопросов на сайте разработчика Twitter. Утверждение со стороны Twitter пришло примерно через 2–3 часа.

Нам понадобится следующая информация из вашей учетной записи разработчика: consumer_key, consumer_secret, access_key и access_secret.

Используйте Tweepy, чтобы удалить твиты

Tweepy - это простая в использовании библиотека Python для доступа к Twitter API.

Во-первых, давайте импортируем все библиотеки, которые мы будем использовать.

import tweepy 
import pandas as pd
import numpy as np from IPython.display 
import display 
import matplotlib.pyplot as plt
import seaborn as sns 
from textblob import TextBlob
import re
import warnings
warnings.filterwarnings('ignore') 
%matplotlib inline

Затем давайте сохраним все учетные данные Twitter. Я явно спрятал свое. Было бы неплохо создать отдельный файл для хранения учетных данных, но я использовал тот же файл.

#It's not a good pratice to include the keys in the same code, as we have to display. However, I am lazy
consumer_key = "XXXXXXXXXXXXXXXXX"
consumer_secret = "XXXXXXXXXXXXXXXX"
access_key = "XXXXXXXXXXXXXXXXXX"
access_secret = "XXXXXXXXXXXXXXXXXX"

Затем мы выполняем итерацию, чтобы извлечь твиты, удаляя по 200 твитов за раз. При проведении этого анализа я черпал вдохновение из анализа настроений Трампа в блоге Родольфо Ферро.

Создайте фрейм данных Panda

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

Затем мы добавим эти соответствующие параметры в DataFrame.

Статистический анализ твитов

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

Теперь давайте посмотрим на тенденцию количества лайков и ретвитов за последние 2 года. Я не изучал ограничение Twitter на общий доступ к API, но полагаю, что он ограничивается 3200 твитами. Вот почему у нас есть данные только за последние два года.

Чтобы построить тренд, мы создадим серию «Панда», а затем построим график. Даже в этот короткий период времени мы можем наблюдать тенденцию к росту количества лайков и ретвитов.

Давайте создадим забавные графики.

Во-первых, мы создадим график корреляции, чтобы понять характеристики понравившихся и ретвитированных твитов.

Некоторые неудивительные выводы: RT и лайки сильно коррелированы. Еще несколько информативных уроков включают:

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

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

Это еще раз указывает на то, что твиты с негативными настроениями получают больше RT и лайков. Однако мы не проводили тщательную очистку, и индийский английский (с использованием слов хинди) мог повлиять на эти результаты.

Анализ настроений

Для анализа настроений мы будем использовать TextBlob. Это библиотека Python, которая предлагает простой доступ к API для выполнения основных задач обработки естественного языка.

TextBlob работает так же, как строки Python, и, следовательно, может аналогичным образом использоваться для преобразования данных.

exampleText=TextBlog("Ajitesh")
exampleText[1:3]

Вывод → TextBlob («цзи»)

exampleText.upper()

Вывод - TextBlob («АДЖИТЕШ»)

Мы выполняем анализ тональности в 3 этапа - очистка текста твита, токенизация и анализ тональности.

Анализируя твиты, мы просто хотим ограничиться твитами, опубликованными г-ном Моди. Хотя у нас нет возможности идентифицировать твиты, ретвитированные г-ном Моди. У нас есть один ярлык. Мы можем игнорировать твиты, у которых нет лайков, поскольку Twitter не отмечает «лайки» ретвитированных твитов пользователям, которые ретвитнули. Кроме того, маловероятно, что у любого твита г-на Моди будет ноль "лайков".

Начнем с этапа очистки данных.

Далее мы проведем токенизацию и анализ настроений.

Частотный анализ слов

Одной из запоминающихся для меня инициатив г-на Моди была «Свачх Бхарат» - инициатива по сохранению чистоты в Индии. Посмотрим, сколько раз он говорил о Swachh Bharat в этих твитах.

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

Интересно, что Западная Бенгалия и Одиса, где партия г-на Моди добилась удивительных успехов, упоминаются чаще.

Я также создал таблицу частот на старом питоне:

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

Тематическое моделирование

Предположим, у вас есть все речи Махатмы Ганди в текстовой форме. Вы можете использовать тематическое моделирование, чтобы определить ключевые темы этих выступлений.

Я наткнулся на блестящий доклад Кристин Дойг в PyTexas о тематическом моделировании и попробовал реализовать его в нашем случае.

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

Существует два способа проведения тематического моделирования - LSA (скрытый семантический анализ) и методы вероятностного вывода, такие как LDA (скрытое распределение Дирихле). Ниже представлено наглядное изображение разницы между LSA и LDA. В нашем случае мы будем использовать LDA.

Давайте реализуем LDA для обозначения тем в твитах.

Результатом является интерактивный график, который я не знаю, как встроить. Однако вы можете найти полный код с выводом здесь.

Я мог видеть две четкие темы - политику и благодарность - обозначенные цифрами 4 и 1 соответственно. Однако тематическое моделирование здесь не использовалось. Я, вероятно, применю их к сборнику речей.

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