Количественная оценка расстояния между различными СМИ

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

Предварительный просмотр окончательных результатов

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

Данные

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

  • Каждая строка в данных представляет одно видео

Есть 5 столбцов

  1. Идентификатор канала – предоставляет идентификатор индийского медиаканала, который можно использовать для уникальной идентификации выхода.
  2. Название плейлиста – это название плейлиста, к которому относится видео.
  3. Дата — дата публикации выпуска.
  4. Заголовок — название видео.
  5. Описание — описание видео.

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

  • Объединение столбцов Заголовоки Описание в «текстовый» столбец

  • Векторизация документов

Для векторизации документов мы используем пользовательский токенизатор из библиотеки NLTK — RegexpTokenizer для фильтрации числовых терминов и терминов, содержащих менее 2 символов.

Мы передаем пользовательский токенизатор в CountVectorizer через ключевое слово tokenizer.

Count Vectorizer преобразует набор текстовых документов в матрицу количества токенов и выводит матрицу, как показано ниже.

Алгоритм

Теперь, когда у нас есть числовое представление для каждого видео, мы приступаем к вычислению расстояния.

  1. Сначала мы группируем видео по каналам
  2. Затем для каждой группы мы транспонируем кадр данных и вычисляем попарное расстояние.

— При транспонировании у нас есть слова/термины в виде строк и каждое видео в виде столбца. Поэтому теперь, когда мы используем pairwise_distance, он вычисляет расстояния между словами/терминами, а не между видео.

3. После того, как у нас есть расстояние Term x Term, мы просто объединяем результаты для разных групп.

4. Теперь, когда у нас есть матрица «term x term», мы используем эту матрицу для расчета расстояния между каналами.

5. Для каждого термина мы выделяем его вектор из матрицы «термин x термин», сортируя столбец, соответствующий термину, и выбирая ближайшие n терминов.

Как и в приведенном ниже примере, W1 и W2 — единственные термины, которые появляются в топ-4, поэтому мы используем их на следующем шаге.

6. Теперь поворачиваем вектор по каналам и вычисляем попарные расстояния (евклидианы) между каналами

7. Последний шаг — просто расплавить расстояния, чтобы у нас было только 3 столбца. столбцы 1 и 2 представляют пару каналов, а 3-й столбец содержит расстояние между двумя

Визуализация

Теперь у нас есть данные в нужном формате для наших визуализаций.

Мы выполнили два расчета

  1. Срок X Срок расстояние
  2. Канал X Расстояние между каналами

Поэтому мы можем сделать два типа визуализации

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

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

Визуализация сети

У нас уже есть термин расстояние со всеми терминами, поэтому теперь мы используем библиотеку NetworkX для позиционирования терминов и каналов в сетевой форме, используя значения расстояния в качестве краевых расстояний.

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

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

Теперь, когда у нас есть наши сетевые позиции, сохраненные в формате pdf, нам просто нужно их построить.

Для построения графиков мы используем Grammar of Graphics API, аналогичный GGPLOT в R, предоставляемый plotnine.

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

Ниже приведен окончательный вывод для термина «Китай».

Если вам понравилась эта статья или у вас есть предложения и отзывы, не стесняйтесь обращаться к LinkedIn.