Переосмысление Twitter «на кого подписываться» (с использованием Node.js и d3.js)

Я немного поработал с Twitter API, и мой подход дал мне несколько хороших предложений 😄

Иногда я смотрю в раздел Twitter На кого подписываться и никогда не вижу людей, за которыми действительно хочу подписаться. Я не знаю, какой подход Twitter использует (и я не хочу скажите, как каждый должен выполнять свою работу), но давно я создал followInsights как способ найти новые профили GitHub, на которые можно вдохновиться - я применил здесь ту же логику.

Допустим, у нас есть «пользователь root» (потому что он меня запоминает как дерево). Если этот «пользователь root» следует за некоторыми людьми, мы можем предположить, что они доверяют этой сети, верно? Давайте назовем пользователей, за которыми следует «пользователь root», пользователями «первого уровня». Теперь, если этот «первый уровень» имеет отношение к «пользователю root», люди, за которыми они подписаны (назовем их «вторым уровнем»), вероятно, также имеют отношение. Итак, что нам нужно сделать, это получить всех пользователей со второго уровня и подсчитать, сколько раз пользователь появляется там. Потому что, если много людей на первом уровне подписаны на данного пользователя, это указывает на некоторую релевантность (смешные шутки, гифки с котиками, хорошие идеи).

Проблема: API Twitter имеет ограничение скорости (что очевидно, они не хотят, чтобы мы загружали все оттуда). Поэтому нам нужно делать это партиями, и это займет некоторое время.

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

👋 Последователи

Используя я как пример, вот первые одиннадцать результатов, подсчитывающих, сколько раз появляется пользователь:

  1. Паул_ириш, 277
  2. Rafael_sps (это я 👋), 249
  3. Jeresig, 247
  4. Аддёсмани, 247
  5. Гитхаб, 228
  6. BrendanEich, 213
  7. Илонмуск, 187
  8. Nodejs, 183, г.
  9. Раухг, 181
  10. Матиас, 177
  11. Барак Обама, 175

Очевидно, что если я буду следовать за многими людьми, которые будут следовать за мной в ответ, это сделает меня релевантным для моей собственной сети (даже больше, чем Обама? 🤔😄 ).

Итак, давайте удалим людей, на которых я уже подписан, из этих результатов:

  1. Илонмуск, 157
  2. Барак Обама, 156
  3. Chriscoyier, 126
  4. ChromiumDev, 124
  5. Брианлеру, 114
  6. Sarah_edo, 112
  7. Чуть позже, 110
  8. СараСуэйдан, 108
  9. Sindresorhus, 103
  10. Рмурфей, 102

И вот список с некоторыми указаниями. Ура!

Но ЧТО ЕСЛИ мы рассматриваем оценку, основанную на том, сколько раз появляется пользователь? Предположим, что за пользователем следуют jeresig (который появляется 247 раз) и paul_irish (277), поэтому у этого пользователя будет оценка: 247 + 277 = 524. Список станет (имя пользователя, оценка):

  1. Паул_ириш, 14306
  2. Jeresig, 13284
  3. Аддёсмани, 12941
  4. Раухг, 10971
  5. Матиас, 10968
  6. БренданЭйх, 10957
  7. Жаффатекейк, 10474
  8. Брианлеру, 9707
  9. Томдейл, 9481
  10. Стубборнелла, 9388

И удаление того, на кого я уже подписан:

  1. Брианлеру, 9707
  2. Чуть позже, 8956
  3. Далмаер, 8613
  4. Chriscoyier, 8586
  5. Sarah_edo, 8399
  6. Рмурфей, 8008
  7. ChromiumDev, 7777
  8. Крамфорс, 7752
  9. Рейбанго, 7706
  10. Sindresorhus, 7469

А у нас здесь новые лица!

Если мы проанализируем данные, чтобы они соответствовали удивительному графику d3.js Hierarchical Edge Bundling, то вот результат:

Замечательно то, что вы можете навести указатель мыши на имя пользователя, чтобы увидеть, как все пользователи связаны между собой:

🌎 Местоположение

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

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

Сан-Франциско, Калифорния
Сан-Франциско
Сан-Франциско, Калифорния
Район залива Сан-Франциско
Сан-Франциско, Калифорния, США
Сан-Франциско, Калифорния, США
Сан-Франциско, Калифорния, США
Сан-Франциско, Интернет (🤔 крутой штат, кстати)
Ванкувер || Сан-Франциско

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

Вот сколько набранных баллов (суммированы все баллы пользователей) и сколько пользователей, которых я не отслеживаю, находятся в определенном месте:

(Местоположение, оценка, общее количество пользователей в этом месте)

  1. Изгиб, 10088, 2
  2. Ванкувер || Сан-Франциско, 9707, 1
  3. Глазго, 7798, 2
  4. Южная Флорида, 7706, 1
  5. Бангкок, 7469, 1

Приятно видеть действительно актуальных людей не только в Кремниевой долине (да, мистер очевидно!).

А при сортировке локаций по количеству пользователей:

  1. «», 1419, 224 (в большинстве случаев местоположение остается пустым)
  2. Сан-Франциско, 1377, 116
  3. Сан-Паулу, 610, 58
  4. Нью-Йорк, 2784, 40
  5. Лондон, 808, 36

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

📝 Описания / биография

Мы можем группировать пользователей по биографии / описанию. Пять самых популярных слов в моей сети (слово, частота):

  1. паутина, 46
  2. застройщик, 25
  3. javascript, 21
  4. гугл, 14
  5. создатель, 14

Итак, пользователи, в описании которых есть Интернет:

  1. слегка поздно, 124
  2. Рейбанго, 105
  3. теплый, 100
  4. cramforce, 96
  5. timberners_lee, 96 (я думаю, этот парень кое-что знает о "сети")

И слово Разработчик:

  1. ChromiumDev, 140
  2. sarah_edo, 126
  3. СараСуэйдан, 120
  4. МайлсБоринс, 100
  5. ThePracticalDev, 90

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

Я использую Twit в качестве оболочки API и d3.js для построения графика. Код доступен здесь.

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