В сегодняшней среде, где главенствующую роль играет искусственный интеллект, машинное обучение, искусственный интеллект и чат-боты преобразуют отрасли беспрецедентными темпами.
Все больше компаний стремятся интегрировать ИИ в свои операции, но то, как построены эти системы, часто упускается из виду. Главный ингредиент? Данные. Модель машинного обучения хороша настолько, насколько хороши данные, на которых она обучена. Но откуда берутся все эти данные?
Значительная часть данных, на которые мы полагаемся, находится в открытом доступе, часто встречается в сообщениях в социальных сетях, отзывах пользователей и другом онлайн-контенте. Для анализа настроений одним из самых богатых источников данных является Twitter , который непрерывно транслирует контент, создаваемый пользователями в режиме реального времени. Однако проблема заключается в том, как эффективно и чисто собирать эти данные.
Когда я начал работать над проектом анализа настроений с использованием данных Twitter, я изначально рассматривал возможность использования API Twitter. Однако я быстро столкнулся с существенным ограничением: API бесплатного уровня предоставляет доступ только к твитам за последние семь дней. Для комплексного анализа настроений, особенно для трендовых тем или политических событий, охватывающих недели или месяцы, это ограничение серьезно ограничивает объем и качество доступных данных.
Хотя обновление до более высокого уровня API было вариантом, стоимость была непомерно высокой для такого мелкомасштабного проекта, как мой. Это оставило мне два пути: попытаться собрать данные вручную с помощью традиционного скрапинга (который имел свой собственный набор проблем, таких как CAPTCHA, избыточность и неполные записи) или найти альтернативное решение.
Вот где Bright Data вступает в игру, решая эти проблемы без проблем, предлагая чистые, масштабируемые и исторические наборы данных Twitter. Вместо того, чтобы ограничиваться ограничениями API, я мог получить доступ к разнообразным, высококачественным данным для своего проекта без обычных проблем.
В этой статье я расскажу вам, как можно использовать Marketplace Bright Data для получения высококачественных данных Twitter для анализа настроений, а также поделюсь своим опытом.
Перейдите на сайт Bright Data и создайте бесплатную учетную запись, чтобы начать. После входа в систему вы будете перенаправлены на Data Marketplace, где можно получить доступ к различным готовым наборам данных, включая те, которые связаны с Twitter.
После выбора набора данных вы можете загрузить его прямо на локальный компьютер или получить к нему доступ через API. Быстрый процесс позволяет вам начать работать с высококачественными данными практически сразу. Я использовал набор данных Twitter-posts
Необработанные данные Twitter обычно содержат много метаданных, которые могут не иметь отношения к анализу настроений, например, информацию о пользователях, URL-адреса изображений и другие нетекстовые данные. Мы сосредоточимся на тексте твитов, поскольку именно там будет применяться анализ настроений, а также на соответствующих показателях вовлеченности, таких как репосты и лайки.
import pandas as pd df = pd.read_csv("path_to_your_dataset.csv") df.head()
Следующим шагом является очистка данных путем обработки пропущенных значений и удаления ненужных столбцов.
df_clean = df[['user_posted', 'description', 'date_posted', 'reposts', 'likes']] df_clean = df_clean.dropna(subset=['description']) df_clean = df_clean.drop_duplicates(subset=['description']) df_clean.head()
Теперь, когда мы очистили данные и имеем соответствующий текст, пришло время погрузиться в анализ настроений . Анализ настроений означает определение эмоционального тона, стоящего за словами, — является ли твит положительным, отрицательным или нейтральным.
Я использовал популярную библиотеку VADER (Valence Aware Dictionary and Sentiment Reasoner), специально разработанную для текстов в социальных сетях. Она отлично справляется с неформальным языком, таким как сленг и эмодзи.
Фрагмент кода ниже выполняет анализ настроений с использованием VADER.
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer analyzer = SentimentIntensityAnalyzer() def get_sentiment(text): sentiment = analyzer.polarity_scores(text) return sentiment['compound'] df_clean['sentiment'] = df_clean['description'].apply(get_sentiment) df_clean.head()
После расчета оценок настроений мы можем проанализировать распределение, чтобы увидеть, насколько позитивны или негативны твиты в среднем. Это может дать представление об общем общественном настроении по поводу определенной темы или события. Мы также можем визуализировать распределение настроений с помощью гистограммы или облака слов, чтобы определить ключевые эмоции.
Этот график даст вам хорошее представление о распространении настроений, будь то в сторону позитива, негатива или нейтральности. В этом случае наблюдается высокая частота нейтральных твитов.
Теперь, когда у нас есть оценки настроений для каждого твита, следующим шагом будет изучение того, есть ли какая-либо корреляция между настроениями и показателями вовлеченности, такими как лайки и репосты. В аналитике социальных сетей можно было бы ожидать, что более позитивные настроения могут привести к более высокой вовлеченности (больше лайков, больше репостов). Однако так ли это на самом деле?
Чтобы это выяснить, мы можем рассчитать корреляцию между оценками настроений и показателями вовлеченности. Результаты следующие:
Correlation between sentiment and likes: 0.022806738610786123
Correlation between sentiment and reposts: 0.008885789875330416
Учитывая слабые значения корреляции из моего анализа данных, мы видим, что нет сильной связи между настроением и вовлеченностью. Корреляция между настроением и лайками составила 0,02, а для настроения и репостов она составила всего 0,008. Эти значения говорят о том, что метрики вовлеченности, такие как лайки и репосты, не сильно зависят от настроения твитов .
Слабая корреляция между настроениями и вовлеченностью показывает, что есть и другие факторы. Хотя анализ настроений помогает нам понять общественное мнение, вовлеченность, вероятно, обусловлена дополнительными факторами, такими как:
Хотя анализ настроений является ценным инструментом для понимания того, что люди чувствуют по поводу темы, он не всегда является надежным предсказателем вовлеченности. Чтобы получить более глубокое представление о поведении пользователя, важно учитывать другие факторы, такие как время контента, релевантность и влияние пользователя.