Контекст

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

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

Я сделал некоторую компиляцию, и вот основные вехи:

Хотя это ни в коем случае не полная хронология, мы надеемся, что она даст вам общее представление о том, как продвигаются дела в контексте этого противоречия.

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

Представив вам контекст, я изложу свои вопросы, а затем представлю свой процесс и выводы ниже.

Вопросы

  1. Каково отношение широкой общественности к маскам на фоне этого информационного конфликта в США?
  2. Коррелируют ли отношение к маске и скорость увеличения числа положительных случаев?

*Примечание: основная часть описанного ниже процесса будет посвящена первому вопросу. Второй вопрос — активный проект отслеживания, встроенный в приложение, по мере того, как будет собираться больше данных, будет сделан вывод.

Данные

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

  1. Twitter API, для сбора общественного мнения о маске.
    *Примечание: из-за ограничений, наложенных Twitter API (невозможно получить твиты старше 7 дней), для анализ, написанный в этом блоге, я использовал специальный пакет высокого уровня под названием GetOldTweets, чтобы получить старые твиты с 1 января по 1 мая 2020 года.
  2. Covidtracking API, для сбора актуальных данных о росте числа положительных случаев.
    * Примечание. Этот API используется только при расследовании второго вопроса, касающегося Настроение против инфекции. Оцените» корреляции в приложении.

Очистка данных + разработка функций

В отличие от контролируемых проектов по машинному обучению, которые я выполнял в прошлом, очистка данных и проектирование признаков – это интегрированный процесс в обработке естественного языка (NLP), особенно для анализа настроений. .

Во-первых, инструмент анализа настроений, который я выбрал, называется Vader Sentiment»(VS) , Основная причина выбора этого более популярного «TextBlob» заключается в том, что VS был специально обучен с использованием данных социальных сетей, он немного лучше справляется с корпусом более короткая длина, в моем случае, твиты.

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

Я активно собираю данные в своей базе данных для этой цели:

При этом, это будет более длительный процесс, посмотрим, что из этого получится.

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

Поскольку меня интересуют только США, сначала я удалю все зарубежные локации:

И кадр данных будет выглядеть так:

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

Обратите внимание, что нам нужны необработанные твиты для работы VS оптимально (в основном потому, что если мы сначала очистим, мы потеряем индикаторы настроений, такие как знаки препинания, слова с заглавной буквы и т. д.), мы сначала запустите VS, чтобы дать нам составные баллы, прежде чем мы серьезно очистим твиты для разработки дополнительных функций.

Результирующий фрейм данных будет выглядеть так со всеми функциями, которые нам нужны:

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

В рамках неконтролируемого моделирования для этого проекта мы сначала проведем некоторое тематическое моделирование, чтобы понять, о чем люди говорят в этих твитах. Мы можем выяснить это, проведя Скрытый семантический анализ (LSA).
*Обратите внимание, что этот шаг можно рассматривать как часть разработки функций.

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

  1. Vectoring-векторизатор TFIDF (преобразование слов в числа)
  2. Токенизация — токенизатор Treebank (разделение предложений на слова, в процессе избавления от пунктуации.)
  3. Stemming — стеммер Snowball (сокращение формируемых слов до их основы, например, бег, бег, бег до бег).

Запуск функции с использованием фрейма данных, который мы очистили и спроектировали на последнем шаге, скажет нам, что после 3 тем объясненный коэффициент дисперсии начнет уменьшаться, поэтому мы оставим его на уровне 3 тем:

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

Неконтролируемая кластеризация

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

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

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

Кластеризация даст нам это:

Результаты

Объединив весь анализ, который мы сделали до сих пор, вот выводы:

Способ интерпретировать диаграмму таков: например, люди с более нейтральным отношением к маске имеют самые длинные твиты, они более субъективны и с большей вероятностью содержат цифры в своих твитах.

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

Приложение для отслеживания настроений в маске

Как я уже упоминал ранее, чтобы ответить на второй вопрос (Связаны ли отношение к маске и увеличение числа положительных случаев?), я создал приложение Flask-Dash :

Слева находится трекер в реальном времени, который обновляется каждые 2 секунды, а справа – актуальный ежедневный статус настроения и данные о заражении в США для вашего исследования.

Время идет и собирается больше данных, и мы сможем ответить на второй вопрос.

Для получения дополнительной информации о коде и процессе посетите мой репозиторий GitHub.

Примечание от In Plain English

А вы знали, что у нас четыре публикации и канал на YouTube? Вы можете найти все это на нашей домашней странице plainenglish.io — проявите свою любовь, подписавшись на наши публикации и подписавшись на наш канал YouTube!