Aller au contenu

Calculer le taux de duplication avec SimHash en Python

L’autre jour, j’ai voulu identifier le taux de duplication entre deux pages en exploitant le Simhash de Charikar.

(Ceci est un doublon (à peu de choses prêt) de l’article que j’ai publié sur le blog de Babbar)

En l’occurrence, les deux pages correspondaient à la page d’un client et celle d’un de ses prestataire à qui le client envoyait son contenu, aussi la fonctionnalité de Babbar sur la duplication interne n’allait malheureusement pas m’aider, mais je me suis dit que je pouvais utiliser une fonction semblable pour aider le client à identifier le niveau de duplication.

Petit disclaimer tout de même : il s’agit ici d’identifier, sur des pages que je connais déjà, si le contenu allait être considéré comme dupliqué. Il ne s’agit pas de trouver des pages qui me copient sur le web.

Alors comment j’ai voulu m’y prendre ?

Tout d’abord, j’ai récupéré les urls qui pouvaient être concernées et j’en ai fait des couples d’urls (je ne me suis pas embêté à faire des couples correspondants forcément, j’ai pris la liste des urls du client, celle du site partenaire, et j’ai fait une création de couples d’urls en dehors du même host, le code pour ça est ici:)

Attention, il se peut que vous deviez installer les éléments suivants avant l’exécution du script :

à utiliser comme suit :
Copiez le code ci-dessus, collez le dans un fichier texte que vous enregistrez sous “nomdufichier.py” (changez le nom du fichier si besoin mais vous devrez alors changer l’équivalent après). Puis créez votre liste d’urls dans VotreListeDUrl.txt (même commentaire sur le nom du fichier que précédemment).

Ouvrez une invite de commande, naviguez jusqu’au dossier sur lequel vous avez vos deux fichiers (python & txt) et entrez cette commande :

Que va t il se passer?

Vous allez vous retrouver sur ce dossier avec un nouveau fichier csv : couples.csv. lequel va permettre de constituer des paires de pages, ainsi qu’un autre fichier csv : urls_categorisees.csv qui indique les urls ainsi que les sites sur lesquels elles sont.

Enfin on va créer un fichier Excel input-text.xlsx qui va recenser les contenus des urls, qu’on aura extrait avec trafilatura.
Et à partir de là on a tout ce qu’il faut pour calculer la distance de simhash de ces couples d’urls à partir du contenu extrait via trafilatura. Pour des raisons de sauvegarde de mémoire, on ajoute cette distance dans couples.csv (Attention : distance veut dire que plus la métrique est petite, plus les pages sont proches).

Et voilà !