TangoBot

De Wikipast
Aller à la navigation Aller à la recherche

Résumé des fonctionnalités

Ce bot permet de supprimer les entrées redondantes sur une page.

Description technique

Pour pouvoir éliminer les entrées redondantes, il faut les comparer chacune les unes aux autres et estimer leur similarité.

Avant de comparer les phrases il faut les "nettoyer".

  • Supprimer tout caractère spécial ou signe de ponctuation.
  • Mettre tous les caractères en minuscule.

Séparer les mots et en filtrer certains.

  • Les mots commençant par "http" sont des sources et il est préférable de les ignorer car ce ne sont pas des mots et n'aide pas à comparer le sens de la phrase.
  • Les "stopwords", ("Mot vide") ('au', 'ce', 'du', 'étais', 'le' 'la', 'il', 'je', 'nous',...) sont des mots tellement communs qu'il est inutile de les prendre en compte, car il apparaissent avec une fréquence semblables dans n'importe quel texte. Il n'aide pas à distinguer un texte par rapport à un autre et n'apporterait que de l'information inutile en plus. Par conséquent ils sont ignorés.

Et les modifier pour en avoir plus en commun.

  • "Stemming", ("Racinisation") est un procédé de transformation des flexions en leur radical ou racine. Ce qui permet de lier par exemple les mots continuait, continuerai et continuant qui ont comme racine commune continu.

On applique ensuite le TF-IDF (Term Frequency-Inverse Document Frequency) qui est une méthode qui permet de d'évaluer l'importance d'un mot dans un texte.

L'idée du "term frequency" est juste le nombre d'occurrences dans un fichier sur le nombre d'occurrences totals dans tous les fichiers

tf(i,i) = n(i,i)/sum(n(k,i))


La fréquence inverse vise à donner plus de poids au terme moins fréquent qui peuvent aider à mieux différencier un texte d'un autre.

idf(i) = log(abs(D)/abs(dj tq ti appartient à dj) ou D est le nombre total de documents dans le corpus et le dénominateur le nombre de document ou le terme ti apparait

Le poids s'obtient en multiplant les deux mesures: tfidf(i,j) = tf(i,j) * idf(i)

Le poids augmente proportionnellement au nombre d'occurrences du terme dans le texte.

On peut donc utiliser cette pondération pour décrire les différents textes dans un modèle vectoriel ou chaque document est représenté par un vecteur. Sous forme vectoriel il est très facile de calculer la similarité entre deux vecteurs (deux textes) par la similarité cosinus. Le produit scalaire de deux vecteurs A et B donne:

||A|| * ||B|| * cos(theta)

on peut donc déterminer l'angle theta et comme cos(theta) est compris entre -1 et 1 on peut évaluer le degré de similarité.

Une fois que le degré de similarité entre chaque document est établis le choix de quelle version des entrées dupliquées se fait sur le nombre d'hyperliens dans l'entrées. Les entrées les plus complètes seront toujours gardées.

Exemples

1) Si le TangoBot compare deux phrases identiq]]ues :

  • "1828.05.08 / Genève. Naissance de Henri Dunant. [1] | [2]." est présente deux fois dans la même page. Alors le TangoBot remarquera directement que les mêmes phrases possèdent les mêmes mots aux mêmes endroits. Il décidera donc d'en supprimer une des deux.

2) Si le TangoBot compare deux phrases contenant les mêmes mots-clés mais pas identiques :

3) Si le TangoBot compare deux phrases similaires :

Le tango

Comme le TangoBot est un grand amateur de musiques de salon, il souhaite après chaque execution, vous faire partager sa passion. Il devrait donc mettre un player ou un lien youtube en bas de la page qu'il a vérifié afin que vous puissiez écouter un bout de son morceaux préféré.

Code

Code accessible sur Github