Programme de recherche de VKontakte aux vues similaires [Open source]

VK fournit de très bons outils pour le ciblage publicitaire, qui vous permettent de trouver des personnes du bon sexe, âge, statut social et matrimonial, abonnées à des groupes spécifiques, etc. Ce n'est que la pointe de l'iceberg, si vous fouillez dans les mégadonnées disponibles sur les réseaux sociaux, vous pouvez découvrir la personne presque plus qu'il ne sait de lui-même.

Dans le même temps, il n'y a pratiquement pas de mécanisme pour trouver de nouveaux amis, ce qui est plutôt ironique dans le contexte d'un réseau social. D'un autre côté, il est compréhensible que si quelque chose ne génère pas de revenus, cela signifie qu'il ne se développera probablement pas. Pour les rencontres, VK a récemment lancé l'application, mais, si je comprends bien, il s'agit en fait d'un clone Tinder, et il ne tire aucune donnée des profils, même une attitude banale envers le tabagisme ou l'alcool - du réseau social, il n'y a qu'une autorisation.

Il est devenu intéressant pour nous de résoudre de manière réaliste cette situation à l'aide de l'API VK, et voici ce qui en est ressorti:

Ruban similaire sur votre écran d'accueil

Comme c'était?


Donc, pour commencer, cela vaut la peine de peindre l'état initial. La seule stratégie adéquate qui vous vient à l'esprit est de trouver une communauté aussi proche que possible de vous en termes d'indicateurs de vision du monde / esthétique / hobby, et d'ouvrir une recherche d'abonnés. Introduisez quelques filtres, par exemple l'âge, puis regardez tout de suite.

Mais cette option présente les inconvénients suivants:

  • Nombreux profils abandonnés, fermés, faux
  • La recherche par domaine de vie est interrompue
  • Il n'y a pas de choix multiple dans la recherche, c'est-à-dire une attitude négative et fortement négative à l'égard de l'alcool, par exemple - vous ne pouvez pas choisir
  • Vous devez constamment basculer entre les onglets du navigateur
  • Il faut évaluer manuellement à quel endroit l'utilisateur dans la liste a le public en question, est-il vraiment intéressé
  • Il est nécessaire d'évaluer manuellement ce à quoi l'utilisateur est toujours abonné, s'il existe d'autres publics qui nous intéressent ou quelque chose d'inacceptable.
  • Vous ne pouvez pas marquer les profils que vous avez consultés si vous n'avez pas vu tout le monde à la fois.

Heureusement, presque tout cela est résoluble, et compte tenu de 100 millions d'utilisateurs actifs par mois, même les introvertis aux goûts très spécifiques ont la chance de trouver des personnes partageant les mêmes idées.



Comment c'est?


Nous avons décidé d'essayer de faire un projet basé sur l'analyse des abonnements, avec une interface pratique et des outils d'automatisation. En mode entièrement automatique, l'algorithme ressemble à ceci:

  1. L'utilisateur se connecte via VK
  2. Télécharger la liste de ses abonnements (moins de 1M)
  3. Nous évaluons chacun d'eux en fonction de la position dans la liste.
  4. Téléchargez N abonnés de chacun de ses groupes (N dépend du temps qu'il a indiqué)
  5. Nous retrouvons dans la base de données les utilisateurs abonnés à plusieurs groupes et calculons leur note
  6. Pour les personnes ayant la note la plus élevée, téléchargez leurs listes d'abonnements pour vous assurer que les groupes trouvés ne sont pas à la 2048e place pour construire leurs meilleurs intérêts

Ensuite, le programme passe en mode manuel, où vous pouvez en outre spécifier des groupes indésirables, modifier les notes, ajouter des groupes qui ne sont pas abonnés, mais dont les personnes sont également intéressantes - tout sera recalculé, le sommet sera reconstruit. Il existe également un mode complet qui peut être utilisé pour analyser des petits groupes individuels. Dans ce document, la base de données est formée exclusivement en obtenant des données de chaque utilisateur, il n'est pas nécessaire de télécharger tous les groupes de la liste.




À propos du code source


Nous avons décidé d'ouvrir la source pour que tout le monde (qui connaît C ++, hein) puisse expérimenter même avec les paramètres qui ne sont pas définis dans les paramètres. Eh bien, personne ne craignait que sa page ne soit prise en esclavage par les pilotes du bot et que les données soient vendues sur le darknet.

Certains développeurs ouvrent le code pour se vanter - voyez comment je peux. Ce n'est pas le cas. Le projet s'est développé sans spécifications techniques claires, avec des exigences en constante évolution, et il ne peut y avoir de bonne architecture ici en tant que classe - même la plus flexible, le plus souvent, ne se plie pas du tout là où elle était supposée. Une fois le projet devenu définitif et les exigences devenues claires, nous devons généralement procéder à une refactorisation à très grande échelle, mais dans ce cas, nous avons décidé de le reporter.

Premièrement, le programme est devenu particulièrement pertinent à la lumière des événements récents, et retarder la publication d'un mois serait insensé. Du coup, quelqu'un en quarantaine est particulièrement solitaire, vous pouvez trouver des amis sur Internet.

Deuxièmement, il est difficile de savoir si quelqu'un est intéressé par ce programme, et sinon, il ne sert à rien de perdre du temps à améliorer le code, car aucun support n'est attendu. Donc, pour la dette technique et les raccourcis ne donnent pas grand-chose, nous sommes au courant.

Il était également nécessaire de différer d’autres améliorations, par exemple en accélérant le travail grâce aux procédures VK ou en tenant compte de la position du groupe dans la liste des utilisateurs afin de réduire la contribution des groupes de bas niveau. Une version antérieure et une plus grande stabilité étaient plus importantes.

Configuration requise


Moniteur de 1366 x 768, FullHD recommandé. Le SSD ne sera pas non plus superflu.

Les bases n'ont pas été testées pour plus de 5 millions, après 10 freins puissants vont sûrement commencer. Vous pouvez passer à un SGBD plus puissant assez rapidement (les abstractions Qt le permettent), mais jusqu'à présent, cela semble peu pratique car les publics de plusieurs millions de dollars ont peu à dire sur les abonnés, de sorte que beaucoup de gens ne peuvent pas être des niches.

Sources ici . Binaires pour Windows et Linux .

PS J'ai des réflexions sur la façon dont VK pourrait améliorer la situation de son côté, mais c'est un sujet pour un article séparé.

PPS De nombreux éditeurs informatiques (y compris Habr) ont des listes d'abonnés fermées et vous ne pourrez pas en tenir compte.

All Articles