J'essaie de détecter si un article ou un message sur le forum est une entrée en double dans la base de données. J'y ai réfléchi, en arrivant à la conclusion que quelqu'un qui duplique du contenu le fera en utilisant l'un des trois (en descendant difficile à détecter):
- copier simple coller tout le texte
- copier et coller des parties de texte en les fusionnant avec les leurs
- copier un article d'un site externe et se faire passer pour le mien
Préparation du texte pour l'analyse
Fondamentalement, toute anomalie; le but est de rendre le texte aussi "pur" que possible. Pour des résultats plus précis, le texte est "standardisé" par:
- Suppression des espaces blancs en double et découpage en début et en fin.
- Les retours à la ligne sont normalisés à \ n.
- Les balises HTML sont supprimées.
- L'utilisation d'un RegEx appelé Daring Fireball URL est supprimée.
- J'utilise du code BB dans mon application, donc ça va.
- (ä) les centres et les étrangers (outre l'anglais) sont convertis sous leur forme non étrangère.
Je stocke des informations sur chaque article dans (1) tableau de statistiques et dans (2) tableau de mots-clés.
(1) Tableau des statistiques Les statistiques suivantes sont stockées sur le contenu textuel (un peu comme ce post)
- longueur du texte
- nombre de lettres
- nombre de mots
- nombre de phrases
- mots moyens par phrase
- indice de lisibilité automatisé
- score de brouillard
Pour les langues européennes, Coleman-Liau et l'indice de lisibilité automatisé doivent être utilisés car ils n'utilisent pas le comptage des syllabes, ils devraient donc produire un score raisonnablement précis.
(2) Tableau des mots-clés
Les mots clés sont générés en excluant une énorme liste de mots vides (mots courants), par exemple, «le», «a», «de», «à», etc., etc.
Exemples de données
- text_length, 3963
- letter_count, 3052
- word_count, 684
- phrase_compte, 33
- word_per_sentence, 21
- gunning_fog, 11,5
- auto_read_index, 9.9
- mot-clé 1, tué
- mot-clé 2, officiers
- mot-clé 3, police
Il convient de noter qu'une fois qu'un article est mis à jour, toutes les statistiques ci-dessus sont régénérées et peuvent avoir des valeurs complètement différentes.
Comment puis-je utiliser les informations ci-dessus pour détecter si un article qui est publié pour la première fois existe déjà dans la base de données?
Je suis conscient que tout ce que je vais concevoir ne sera pas parfait, le plus grand risque étant (1) Le contenu qui n'est pas un doublon sera signalé comme dupliqué (2) Le système autorise le contenu en double à passer.
Par conséquent, l'algorithme doit générer un numéro d'évaluation des risques de 0 à aucun risque de double, 5 à double possible et 10 à double. Tout ce qui est supérieur à 5, il y a de fortes chances que le contenu soit en double. Dans ce cas, le contenu pourrait être signalé et lié aux articles qui sont des doublons possibles et un humain pourrait décider de supprimer ou d'autoriser.
Comme je l'ai dit auparavant, je stocke des mots clés pour l'ensemble de l'article, mais je me demande si je pourrais faire la même chose sur la base des paragraphes; cela signifierait également une séparation supplémentaire de mes données dans la base de données, mais cela faciliterait également la détection de (2) dans mon message initial.
Je pense en moyenne pondérée entre les statistiques, mais dans quel ordre et quelles seraient les conséquences ...