Email or username:

Password:

Forgot your password?
Sv9t

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

9 comments
Who Let The Dogs Out 🐾

@iggisv9t Вероятно хорошая визуализация. Но где данные для воспроизведения результата?
Ссылки на более подробное изложение имеются?

Sv9t

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

Who Let The Dogs Out 🐾

@iggisv9t Отлично. Я запомнил этот пост.

Sv9t

@ashed Текущий шаг из списка в 48К. Правда у меня туда попадают не только каналы, но и чаты и юзернеймы. Каналы отсеиваю уже на попытке распарсить.

kurator88

@iggisv9t @ashed данные сами собираете ? Было бы интересно почитать как вы телегу парсите и куда складываете. Уверен на хорошую техническую статьи или даже доклада наберётся.

Sv9t

@kurator88 @ashed сделал кровлер на основе вот этого github.com/bellingcat/snscrape

Там есть класс `TelegramChannelScraper()`, его надо инициировать с именем канала (которое в ссылке на канал) и дальше можно итерироваться по постам. Вот оттуда выдёргиваю все ссылки и проверяю подходят они или нет для того, чтобы идти их скрапить. Очень наколеночный код. Всё складываю в csv а не в базы, никаких очередей нет, просто пачками поднимаю csv на каждом новом шаге и смотрю кого ещё не скрапил. Получается BFS по графу упоминаний.

@kurator88 @ashed сделал кровлер на основе вот этого github.com/bellingcat/snscrape

Там есть класс `TelegramChannelScraper()`, его надо инициировать с именем канала (которое в ссылке на канал) и дальше можно итерироваться по постам. Вот оттуда выдёргиваю все ссылки и проверяю подходят они или нет для того, чтобы идти их скрапить. Очень наколеночный код. Всё складываю в csv а не в базы, никаких очередей нет, просто пачками поднимаю csv на каждом новом шаге и смотрю кого ещё не скрапил. Получается...

koshchey

@iggisv9t
Что означает дистанция между точками?

Sv9t

@koshchey чем больше связей между узлами, тем больше между ними упоминаний (репосты или ссылки) и тем ближе они друг к другу. Не всегда строго соблюдается, но это потому что укладка на плоскость, и соотношения сохраняются лишь примерно.

Sv9t

@koshchey Можно погуглить force-directed graph layout и почитать, если интересны подробности. В двух словах, узлы моделируются как отталкивающие друг друга заряженные частицы, а рёбра как упругие нити, и ещё есть притяжение к центру. Вот такая система симулируется и получаются позиции вершин.

Go Up