Что можно узнать из текста в телеграмм-канале?

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, Хабр!

Два года назад я создал телеграмм-канал и начал постить туда всякое, что считал интересным. Изначально это было что-то вроде публичного дневника с регулярными и короткими заметками из моей студенческой жизни. После, я попробовал превратить этот канал в блог о современном искусстве, ну а пару месяцев назад понял, что не могу жить без любимой айтишечки и начал постить в канал новости из мира Data Science и ИИ.

И вот, спустя 2 года, мне пришло в голову, что телеграмм-канал - это довольно необычный источник текстов. Я у мамы дата сайнтист, так что на этих данных и решил устроить себе небольшой NLP-Этюд, чтобы попрактиковаться и пощупать новые инструменты. Процессом и результатами своей работы я поделюсь в этой статье.

Содержание:

  • Загрузка и предобработка данных из Telegram

  • Статистический анализ текстов

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

  • Sentiment analysis и баловство с трансформерами

  • Визуализация эмбеддингов и кластерный анализ

Загрузка данных

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

Как получить данные из телеграмм-канала?

Для того, чтобы получить выгрузку из любого телеграм-канала, нужно открыть его и нажать на три точки в правом верхнем углу. В выпавшем меню жмём на кнопку "export chat history"

Выпадающее меню канала в телеграмм
Выпадающее меню канала в телеграмм

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

Меню экспорта в телеграмме
Меню экспорта в телеграмме

Теперь эти данные нужно загрузить в среду, в которой будем дальше работать. В моём случае, я буду обрабатывать текст в Python.

Так исторически сложилось, что JSON выгрузка из телеграмма имеет большую степень вложенности, так что простая функция read_json() из библиотеки pandas нам не подойдёт. Вместо неё мы используем функцию json_normalize(), которая превращает JSON с кучей вложенных структур в плоскую таблицу.

import json
import pandas as pd

with open("./data/result.json") as f:
	data = json.load(f)

messages = data['messages']
df = pd.json_normalize(messages)
Получившийся DataFrame
Получившийся DataFrame

Полученный pd.DataFrame имеет весьма устрашающий облик из-за обилия в нём технической и малоинтересной для нас информации, вроде id действующего лица, ширины и высоты приложенного фото и т.п. Нас же интересует именно текстовая сторона данных, так что мы оставляем только столбцы с id сообщения, датой и временем выхода поста и текстом.

Но телеграмм довольно необычно хранит тексты сообщений. Из-за возможностей форматирования текста, в нашей табличке он выглядит примерно вот так:

['Можете называть меня странным, но я получаю абсолютно неподдельное удовольствие от прогулок на google картах… 						
Источник: https://habr.com/ru/articles/837134/


Интересные статьи

Интересные статьи

(спойлер – мысль не материальна)Мысль - она объективна, материальна? Можно ли какую-нибудь «мысль» взвесить или ещё как-то количественно сравнить с другой «мыслью» в объективных единицах измерения? - ...
В предыдущих статьях мы уже рассмотрели установку Ansible и подготовку шаблонов для автоматизации работы с управляемыми узлами. В этой статье мы продолжим обсуждать те возможности, которые есть у Ansi...
Могут ли российские BI-платформы все-таки заменить зарубежные системы? Мы много раз возвращались к этому вопросу, потому что сегодня именно он интересует и даже беспокоит многих руководителей. И, наве...
Из нового мысленного эксперимента следует, что квантовая механика не работает без использования этих странных чисел, становящихся отрицательными при возведении в квадрат Несколько де...
Python 3 существует уже какое-то время и довольно много разработчиков, особенно те, кто только начинает свой путь в Python, уже используют эту версию языка. Несмотря на то, что мн...