Количественная оценка расстояния между различными СМИ
Использование текстовой аналитики для понимания тем, на которых сосредоточены индийские СМИ, и для количественной оценки сходства между различными медиа-домами.
Предварительный просмотр окончательных результатов
Нашим конечным результатом будет информационная панель, которая будет визуализировать сетевой график средств массовой информации на основе выбранного термина. Ниже приведены результаты для термина «китай».
Данные
Имеющиеся у нас данные основаны на видео на YouTube. Мы извлекли метаданные видео из избранных новостных каналов и собираемся использовать заголовок и описание каждого видео в нашем анализе. Ниже приведен предварительный просмотр доступных данных.
- Каждая строка в данных представляет одно видео
Есть 5 столбцов
- Идентификатор канала – предоставляет идентификатор индийского медиаканала, который можно использовать для уникальной идентификации выхода.
- Название плейлиста – это название плейлиста, к которому относится видео.
- Дата — дата публикации выпуска.
- Заголовок — название видео.
- Описание — описание видео.
Предварительная обработка данных
- Объединение столбцов Заголовоки Описание в «текстовый» столбец
- Векторизация документов
Для векторизации документов мы используем пользовательский токенизатор из библиотеки NLTK — RegexpTokenizer для фильтрации числовых терминов и терминов, содержащих менее 2 символов.
Мы передаем пользовательский токенизатор в CountVectorizer через ключевое слово tokenizer.
Count Vectorizer преобразует набор текстовых документов в матрицу количества токенов и выводит матрицу, как показано ниже.
Алгоритм
Теперь, когда у нас есть числовое представление для каждого видео, мы приступаем к вычислению расстояния.
- Сначала мы группируем видео по каналам
- Затем для каждой группы мы транспонируем кадр данных и вычисляем попарное расстояние.
— При транспонировании у нас есть слова/термины в виде строк и каждое видео в виде столбца. Поэтому теперь, когда мы используем pairwise_distance, он вычисляет расстояния между словами/терминами, а не между видео.
3. После того, как у нас есть расстояние Term x Term, мы просто объединяем результаты для разных групп.
4. Теперь, когда у нас есть матрица «term x term», мы используем эту матрицу для расчета расстояния между каналами.
5. Для каждого термина мы выделяем его вектор из матрицы «термин x термин», сортируя столбец, соответствующий термину, и выбирая ближайшие n терминов.
Как и в приведенном ниже примере, W1 и W2 — единственные термины, которые появляются в топ-4, поэтому мы используем их на следующем шаге.
6. Теперь поворачиваем вектор по каналам и вычисляем попарные расстояния (евклидианы) между каналами
7. Последний шаг — просто расплавить расстояния, чтобы у нас было только 3 столбца. столбцы 1 и 2 представляют пару каналов, а 3-й столбец содержит расстояние между двумя
Визуализация
Теперь у нас есть данные в нужном формате для наших визуализаций.
Мы выполнили два расчета
- Срок X Срок расстояние
- Канал X Расстояние между каналами
Поэтому мы можем сделать два типа визуализации
Термин x расстояние термина можно использовать для создания графа сети, тогда как расстояние канала x канала можно использовать для создания тепловой карты.
Поскольку тепловая карта довольно проста, мы сосредоточимся на визуализации сети.
Визуализация сети
У нас уже есть термин расстояние со всеми терминами, поэтому теперь мы используем библиотеку NetworkX для позиционирования терминов и каналов в сетевой форме, используя значения расстояния в качестве краевых расстояний.
Учитывая вектор расстояния термина, для каждой строки в векторе мы создаем взвешенное ребро, где вес является значением расстояния.
Затем мы используем алгоритм направленной силы Фрухтермана-Рейнгольда, чтобы разместить узлы в положениях, отражающих их расстояния друг от друга.
Теперь, когда у нас есть наши сетевые позиции, сохраненные в формате pdf, нам просто нужно их построить.
Для построения графиков мы используем Grammar of Graphics API, аналогичный GGPLOT в R, предоставляемый plotnine.
Для каждого ребра мы добавляем отрезок линии. Для каждого слова мы добавляем текстовую геометрию на график, а для каждого канала мы добавляем метку. Остальной код предназначен для настройки цветов и темы и устранения беспорядка.
Ниже приведен окончательный вывод для термина «Китай».
Если вам понравилась эта статья или у вас есть предложения и отзывы, не стесняйтесь обращаться к LinkedIn.