Twitter - один из самых богатых источников данных как для бизнес-анализа, так и для академической или педагогической обработки естественного языка; многие из лучших наборов данных на Kaggle были собраны в Twitter, одно из самых популярных встраиваний текста было обучено с помощью Twitter, и почти каждая компания активно следит за Twitter.
Для этого есть ряд причин: Twitter имеет доступный API, а его система хэштегов упрощает сбор и сортировку данных. Это еще и потому, что Twitter - это невероятно поляризованная и реакционная платформа; когда что-то в тренде в Твиттере, обычно это заявление о продукте, взорвавшее умы людей, новый релиз, подвергающийся критике, или кто-то говорит что-то подстрекательское. Это делает Twitter чрезвычайно мощным источником информации о настроениях общественности. Мои сотрудники и я заметили, что нам часто приходится собирать и анализировать данные Twitter, поэтому мы решили создать для этого удобный пакет - twitter-nlp-toolkit. Здесь я покажу вам, как его использовать, пройдя через визуализацию, созданную мною ранее в этом году, демонстрирующую влияние нескольких подстрекательских комментариев Илона Маска в Твиттере.
Для начала вам нужно будет зарегистрироваться для получения ключа API Twitter, установить пакет и установить en_core_web_sm
модели Spacy. Вы можете легко сделать первое здесь - вас просто попросят дать краткое описание того, что вы делаете, что требует одного - а вторые два еще проще; просто запустите pip install twitter-nlp-toolkit
и python -m spacy download en_core_web_sm
в своем терминале. twitter-nlp-toolkit
требует tensorflow ≥2
и scikit-learn ≥0.22
, поэтому вы можете установить его в новой виртуальной среде.
Прослушивание
Основное предложение Twitter API - это прослушиватель, который позволяет передавать твиты на диск в режиме реального времени. Логика поиска задокументирована здесь. Сначала сохраните свой ключ API Twitter на диск как keys.key
в формате .json
в рабочем каталоге, например:
Им вы можете построить своего слушателя. Он будет прослушивать твиты, содержащие «Маск» и / или «Тесла:» (если вы хотите использовать оба ключевых слова, просто установите target_words = [‘Musk Tesla’]
.)
Это будет непрерывно передавать все входящие твиты, содержащие «Musk» и / или «Tesla», на musk_tweets.json
. Этот файл может быть довольно большим и содержать много потенциально посторонней информации, поэтому следует контролировать использование диска. Например, этот твит:
Сохраняется более 10 КБ информации:
Ой. Синтаксический анализатор преобразует .json
файл, содержащий твиты, в файл .csv
, который будет намного удобнее:
Производство parsed_musk_tweets.csv
:
(Поскольку у нас нет коммерческого ключа API Twitter, мы не можем видеть точное местоположение пользователя.)
Мы также можем получить последние 200 или около того твитов самого Маска, используя инструмент массовой загрузки:
Это создаст твиты, уже проанализированные в формате.csv
.
Анализ настроений
twitter_nlp_toolkit
также включает пакет анализа настроений, который может оценить положительность или отрицательность твита:
Функция predict()
производит двоичные прогнозы - 0 для отрицательных или 1 для положительных, а predict_proba()
производит непрерывные прогнозы.
Построение графика объема твитов и среднего настроения как функции времени в Tableau дало следующую визуализацию, показывающую, что, хотя Twitter был несколько встревожен твитами, преуменьшающими серьезность COVID-19, они были гораздо больше встревожены твитом о высокой цене акций Tesla.
Местоположение учетной записи пользователя также может быть использовано для создания приблизительной географической карты. Здесь я использовал службу геокодирования Tableau; однако Tableau смог интерпретировать менее 20% местоположений, предоставленных пользователем, и некоторые из этих интерпретаций были неправдоподобными или неточными. Карты Google, вероятно, будут работать намного лучше, но на бесплатном уровне скорость ограничена примерно 2000 запросами в день:
Здесь также следует отметить, что анализ настроений дает точность только около 85% в нашем тестировании и может быть менее точным в реальных условиях; наши инструменты анализа настроений обучаются только текстовому контенту с использованием набора данных Sentiment140, который довольно старый. Хотя мы работаем над улучшением моделей, их, вероятно, следует использовать только для наблюдения за тенденциями, а не для классификации отдельных твитов, если их нельзя точно настроить на данных домена.
Список желаний
Пакет все еще находится в активной разработке, но показанные здесь функциональные возможности не должны нарушаться. Текущие приоритеты включают улучшение моделей анализа тональности, повышение эффективности и настройки синтаксического анализа твитов и языковой предварительной обработки, а также интеграцию Google Geocoding API.
Весь код в пакете, включая еще несколько примеров, размещен на Github here. Читателям предлагается обращаться к разработчикам с вопросами или пожеланиями по функциям.