produits purs à sec | algorithme de déduplication massif courte scène texte

L'approche la plus simple,

Dans la plupart des cas, un grand nombre de texte en double est généralement pas une bonne chose, comme la copie les uns des autres nouvelles, la majorité des messages de spam, une copie de la publicité omniprésente, etc., ce qui peut provoquer l'homogénéité du contenu Web et d'augmenter la charge de stockage de base de données pire est de réduire la qualité du contenu du texte. Par conséquent, la nécessité d'un texte précis et efficace algorithme de déduplication. La plus simple approche est toute comparaison de paires de texte, simple et facile à comprendre, plus conforme à l'intuition humaine, pour une petite quantité de texte, il est également très facile à réaliser, mais pour les grandes quantités de texte, ce qui est évidemment ne va pas au travail, parce qu'il complexité du temps est au niveau de 100 millions pour que le texte lourd, du temps que nous pouvons avoir dans les années, ce qui est le cas.

De plus, nous avons parlé de désaccentuation, implique en fait deux aspects, le premier est de comparer ce moyen est plus efficace, et le second est le temps de comparer les critères de poids sont. Ici Déduplication texte standard dans le domaine, il est de savoir comment mesurer la similitude des deux textes, comprennent généralement la distance d'édition, la distance Jaccard, la distance cosinus, la distance euclidienne, etc. distance sémantique, l'utilisation de différents domaines et dans différents scénarios mesure de similarité, ce n'est pas l'objet de cet article, donc refrain, ci-dessous se concentrer sur la résolution du problème de rendement relativement élevé.

L'idée de base

La clé pour réduire la complexité du temps: >  Le meilleur potentiel similaire à une polymérisation en texte, limitant ainsi considérablement la gamme à comparer

simHash algorithme

texte masse à l'intérieur algorithme de déduplication, le plus connu est l'algorithme simHash, est Google a proposé un ensemble d'algorithmes et appliqué au poids réel de la page Web pour aller. algorithme SimHash est la plus caractéristique importante: le mappage d'une chaîne de texte 01 et 01 pour obtenir des similitudes entre la chaîne de texte sont similaires, que dans quelques positions 0 et 1 ne sont pas les mêmes. Pour caractériser la similitude de texte peut être calculé entre les deux chaînes différentes du nombre 01 position, elle la distance de Hamming est utilisé pour caractériser le degré de similitude entre les deux textes algorithme de simHash, de manière générale, la texte similaire, la distance Hamming entre la chaîne 01 correspondant à simHash la carte obtenue plus petite.

Afin de rendre ce processus plus clairement, ici donner un exemple simple.

t1 = « mère veut que vous veniez dîner. »

t2 = « ma mère vous a dit de manger. »

On peut le voir, les deux premières chaînes, bien que seulement un autre mot, mais la valeur de hachage obtenue par un simple algorithme de hachage peut complètement différent, et ne peut donc être caractérisé par la similitude du texte original obtenu en utilisant la valeur de hachage. Cependant, après simhash par l'algorithme de mise en correspondance, simHash est une valeur obtenue de la manière suivante:

SH1 = "1000010010101101 1111110000010101101000 00111110000100101 001011"

SH2 = "1000010010101101 1111110000010101101000 00111110000100101 001011"

Une observation attentive, que ce qui précède deux valeurs trois endroits différents simHash (différent de la place avec « » marqué), de sorte que la distance de Hamming entre le texte original est 3. En général, le critère de distance de Hamming pour la détection du texte similaire est 3, qui est, lorsque la distance de Hamming entre les deux textes correspondants simHash inférieur ou égal à 3, qui est considéré comme deux textes similaires, S'il est lourd va, alors vous ne pouvez laisser un d'entre eux.

Pour re-processus de l'algorithme simHash idée est très simple, tout d'abord, il est un point clé: >  Si le critère de texte similaire est la distance de Hamming 3, d'être présent dans un poids deux concentration de corpus de texte similaire, à savoir la valeur maximale de la distance de Hamming entre les deux texte similaire 3 (correspondant à la valeur de hachage d'un maximum de 3 dans des endroits différents), si simHash est de 64, cela peut être une valeur de hachage 64 bits de haut en bas, est divisé en quatre consécutifs de 16 bits, puis trois positions différentes peuvent remplir l'une des quatre trois intervalles (vous pouvez vous tourner, si ces quatre sections sont remplies, et il est devenu une distance de Hamming de 4). Ce texte similaire deux doit être exactement la même chose sur un 16 d'entre eux continue.

Après envie de comprendre ce point critique, peut-être tout le texte est d'effectuer une simHash (ici en utilisant 64 par exemple) remappage, la chaîne 01 de haut en bas sont divisés en sections, comme discuté ci-dessus, deux il y aura un texte similaire à un paragraphe, toujours avec l'exemple ci-dessus, est divisé en quatre sections, comme suit:

t1 = « mère veut que vous veniez dîner. »

SH1 = "1000010010101101 1111110000010101101000 00111110000100101 001011"

SH1_1 = # premier paragraphe "1000010010101101"

SH1_2 = " 111111000001010" # deuxième segment

SH1_3 = "1101000 00111110" # troisième section

SH1_4 = "000100101 001011" # quatrième segment

t2 = « ma mère vous a dit de manger. »

SH2 = "1000010010101101 1111110000010101101000 00111110000100101 001011"

SH2_1 = # premier paragraphe "1000010010101101"

SH2_2 = " 111111000001010" # deuxième segment

SH2_3 = "1101000 00111110" # troisième section

SH2_4 = "000100101 001011" # quatrième segment

Une fois cette étape terminée, l'étape suivante consiste à construire l'indice. Comme discuté ci-dessus, sont chacun simHash de haut en bas sont divisés en quatre segments, chaque segment de 16 bits. Dans le procédé de construction d'un index inversé, l'interception des 16 fragments de ces chaînes 01, respectivement, que la valeur de la clé d'index, et la totalité du fragment de texte correspondant ayant la position ajoutés aux champs de valeurs d'index. compréhension intuitive, tout d'abord il y a quatre cuves, 1,2,3,4, respectivement (correspondant à un 64-bit valeur de hachage de la première, deux, trois, quatre), chacun dans une cuve, respectivement, et après un petit tonneau, dont le nombre tonnelet pendant l'indexation de chaque texte correspondant à la valeur obtenue à partir de simHash 0000000000000000 à 1111111111111111., respectivement, pour examiner chaque section (a détermination des cuves 2, 3 et 4), selon une autre valeur de hachage du segment de 16 bits, le texte sera placé dans le fût de la cuve correspondant au nombre correspondant. Une fois l'indexation est bonne, en raison de la similitude dans le seau certain texte sera une valeur de hachage 16 bits, et donc de poids (peut être fait en parallèle) pour tous ces segments du canon, ils peuvent tous les textes similaires dans la collection texte supprimés .

La réutilisation de processus simHash ci-dessous:

En résumé, une étape à la simHash du poids global principalement trois: 1. simHash être mis en correspondance avec un poids pour chaque texte; 2. simHash le segment établir la valeur d'index inversé; 3. une valeur de hachage de chaque segment le fonctionnement en parallèle de déduplication.

De lourds utilisation simHash il y a deux points cruciaux: - Après la cartographie simHash reste la similitude du texte original; - diviser et les pensées Conquer réduire considérablement le nombre de comparaisons inutiles.

Ainsi, avec ces deux font que pour le long texte algorithme de simHash poids et bonne mesure de distance de Hamming de similitude entre le texte, peut réduire considérablement la complexité temporelle de l'algorithme, et peut également obtenir effet. Toutefois, dans le scénario court texte, cet effet devient pauvre méthode de mesure, habituellement utilisé pour mesurer long texte seuil similaire à distance de Hamming est 3, mais le texte court, la distance de Hamming entre le texte similaire la distance habituellement supérieur à 3, et l'algorithme est basé sur le plus élevé le seuil de similitude de la distance Hamming, la complexité temporelle de l'algorithme sera plus élevé, la distance de Hamming ne peut pas continuer à ce moment comme une mesure de similitude de texte court critères appliqués à la désaccentuation dans le court texte.

algorithme de déduplication en fonction du texte de l'information locale

processus de déduplication à base de texte informations locales, l'idée de base et simHash similaire, mais au lieu d'utiliser la valeur de hachage, mais l'utilisation directe d'une chaîne de sous-texte comme une clé, puis ceux qui ont cette sous-chaîne du texte sera mis à l'enfant chaîne godet correspondant. Cela implique une prémisse: >  Tous les deux textes similaires peuvent être déterminées doivent être sur un ou plusieurs sous-chaîne est exactement le même.

En outre, les sous-chaînes de production peuvent être produits par des n-grammes similaires (si le mot et le niveau de parole, correspondant à zona) méthode, une fenêtre glissante est prélevée directement à partir du texte original, qui peut être enlevé après que les mots restants sont désactivés séquence pris des combinaisons de mots, peut également être prise après l'original digest pour générer du texte, tant que le court texte dans la base de lossy texte original ou une plage acceptable, ceux-ci peuvent être produits en utilisant comme indice sous-chaîne idées similaires.

Déduplication algorithme complet est divisé en cinq grands cadres, chacun comprenant: un pré-traitement de texte, l'index inversé, la partition parallélisation, de ré-implémentation de l'algorithme, le texte de fusion et similaires.

Texte pré-traitement

Selon le pré-texte de la méthode d'interception sous-chaîne spécifique choisie, elle varie. Si les sous-chaînes sont formées par une combinaison de mots, il est nécessaire de diviser le mot texte, si la nécessité de supprimer les mots d'arrêt, ce travail est le pré-traitement de texte. Pour simplifier le processus d'analyse, cela est principalement pris directement à la sous-chaîne de texte, par exemple, inférieure à la normale et donc relativement peu de travaux de pré-traitement.

indexation Inverted

Supposons que deux textes similaires potentiel (dont l'une est nécessaire pour enlevé le poids) sont T1 et T2, la sous-chaîne de texte identique consécutive maximale a k entre eux, ils forment un ensemble, qui est défini comme S = {s1, s2, ..., sk}, chaîne texte sous-longueur est correspondant à un ensemble l = {l1, l2, ..., lk}, pour être texte re-deux pour ce moment particulier, sélectionné l'interception d'une longueur de chaîne sous-texte ne peut pas dépasser une certaine valeur de seuil, parce que si la longueur d'interception dépasse ce seuil, les deux textes ne plus la même chaîne de texte sous-index, l'algorithme ne va pas tout le chemin de comparer les deux textes, donc nous ne pouvons pas atteindre l'objectif de dé-duplication. Ce seuil sera défini comme la longueur maximale du poids à ces deux textes, sont:

En haut poids de tous les mots de texte global, ce qui correspond a également une longueur de déduplication globale m, qui caractérise Si vous voulez que cette partie de l'ensemble du texte similaire au texte au poids des mots, pour chacun des besoins de texte pour sélectionner une longueur d'interception appropriée. En général, la complexité temporelle de choix avec des taux de déduplication et de l'algorithme de déduplication globale liée à la longueur du choix réel, est d'envisager un taux de compromis du poids et de la complexité du temps. Effet Deduplication de déduplication globale longueur choisie plus petite, plus le texte (rapport poids augmente), mais la complexité de temps correspondant est plus élevé. Un poids plus important à la longueur totale du texte sélectionné semblable à l'effet de la variation du poids (comparatif des parties similaires ne sera pas le texte), mais réduira la complexité du temps. Voici pourquoi: Si la durée excessive globale de déduplication sélectionnée, sera supérieure à la longueur maximale à beaucoup de texte lourd similaires, de sorte que ces textes similaires ne sera plus déterminé comme étant un texte similaire, les taux de déduplication va donc tomber, mais est aussi parce que la réduction du nombre de comparaisons, la complexité du temps sera réduite. En revanche, avec la diminution de la longueur totale de la masse de texte plus similaire est divisé en le même indice, après un calcul de similarité, la similitude du texte correspondant sera retiré, et donc le rapport pondéral global à augmenter, Cependant, en raison d'une augmentation du nombre de comparaisons, la complexité du temps augmentera.

En supposant un échantillon sur le corpus de texte de texte similaire à C, peut être déterminée en fonction d'une longueur de déduplication globale m de cet ensemble échantillon, la situation réelle indique, en général, lorsque m > = 4 (ce qui correspond généralement à la longueur de deux mots chinois), des algorithmes de calcul parallèle, la complexité temporelle a été réduite à une gamme acceptable peut être obtenu:

Est supposé être un texte lourd t, dont la longueur est n. Pris dans leur sous-chaînes définissant un ensemble de S, en fonction de la relation de taille m m-grammes et n, il y a les deux situations suivantes: (1) lorsque n > = M, le m peut être prise en fonction de la taille de certains sous-ensemble m-gramme de chaînes de caractères, la taille de l'ensemble de n-m + 1, comme indiqué par le symbole S = {s1, s2, ..., sn-m + 1}; (2) lorsque n < Lorsque m, ne peut pas la longueur ordonnée à l'origine de la chaîne sous-m, de sorte que tout le texte dans son ensemble est ajouté à la sous-ensemble de chaînes qui, par conséquent S = {t}. Chaque être texte Déduplication sous-chaîne m-gramme jeu génération après, t pour chaque texte, traversant les éléments correspondants dans l'ensemble, chaque sous-ensemble de la chaîne de caractères comme clé, le texte original correspondant à la valeur t comme combinées en une paire de valeurs de clé. sous-ensemble de l'ensemble de la chaîne de texte m-gramme après la fin de la traversée, chaque texte peut obtenir son index inversé n-m + 1 e sous-chaînes m-gramme. Ensuite, selon les différentes valeurs de la clé d'index, la polymérisation peut être réalisée avec tout le texte de l'indice des valeurs clés, pour la logique de re à réaliser.

cadre de l'algorithme parallèle

Après cette trame parallèle reposent principalement sur Spark atteint, l'ensemble du texte original dans HDFS est stockée sur chaque noeud de la grappe, au moins conformément à la méthode ci-dessus indiquée de chaque partie du texte est divisé en l'index correspondant à chaque un index de hachage en tant que clé, et toutes les valeurs de hachage en fonction du poids à affecter aux noeuds de la machine de textes appropriés (serveur au dessin), chacun d'un noeud de grappe distribué est nécessaire seulement de travailler sous la machine de travail agricole de la présente . cadre Spark à base répartis comme suit, chaque serveur est un nud de travail, le pilote responsable de la distribution et le déploiement de HDFS sera stocké sous la forme d'une collection de texte distribué à ces noeuds, l'équivalent du potentiel du texte peut être répété un grain grossier leur agrégation, pas reproduire le texte a été complètement séparé, de sorte que chaque serveur ne doit être tenu responsable des travaux lourds sur ce nud, chaque serveur dans le texte final est laissé après la première désaccentuation.

la mise en uvre de Déduplication

Après la mise en place du cadre parallèle peut être divisée pour chacun des textes dans un indice de comparaison par paires (comme celui représenté sur la figure., Chacun de la pluralité d'indices serveur est possible de traiter le texte correspondant), le texte de ce qui conduit à poids. 1 d'après l'analyse, les deux textes similaires peuvent être déterminées T1 et T2, il doit être sur une ou plusieurs sous-chaîne de texte est exactement le même. 3.1.1 Les paramètres de ces sous-chaîne continue maximale identique constituent un ensemble S = {s1, s2, ..., sk}, pendant t1 et t2 pour diviser les sous-chaînes de m-grammes, on suppose m-gramme peut être obtenue sous-chaînes sont définis comme S1 et S2, S peut supposer qu'il y a une sous-chaîne de Si, de sa longueur | si | plus grande longueur que la déduplication m global, alors il doit être divisé en la sous-chaîne si | si | -m + 1 ième sous-chaîne m-gramme, et ceux-ci seront présents à la fois dans la sous-chaîne S1, S2 est également présent dans le. En outre, t1 et t2 sont simultanément présents pour que | si | -m + 1 ème inversé clé d'index sous-chaîne m-gramme.

Déduplication quand, pour chacun de tous peut être calculé le texte de l'indice de similitude entre deux. Approche spécifique est dynamiquement maintenu un ensemble de résultats dans l'état initial sélectionné de façon aléatoire l'un à partir du texte dans l'index de texte de semence, puis parcourt à être dans le texte indice de déduplication, des tentatives pour traverser de chaque texte ajouté à l'ensemble de résultats , au cours de l'addition, le calcul de la traverse vers le texte dans le jeu de résultats pour chacun si le texte peut être jugée comme étant similaire (avec une mesure de seuil de similitude), si le résultat mis à une disposition de ces conditions similaires atteint, sortir les résultats traversant l'ensemble, le jeu de résultats si le déclencheur pas complètement traverse des conditions similaires, il indique que le texte soit lourd et sont connus pour l'ensemble de résultats n'a pas de double du texte ajouté à l'ensemble de résultats, et commence à être sous texte lourd une fois traversé. Lorsque la déduplication, mesure de similarité entre les deux textes est critique, affectent directement les résultats de déduplication. Le procédé peut être utilisé comprennent la distance d'édition, similitude Jaccard et similaires. En utilisation réelle, similitude Jaccard calculée à comparer nécessite généralement le mot de texte, il est supposé être comparé après les deux ensembles de segmentation de mots sont A et B, par définition similitude Jaccard peut être obtenu à la fois le texte de toute évidence la similitude, dont le texte deux similarité de Jaccard complètement incompatible est égal à 0, deux texte identique, en regard de laquelle la similitude Jaccard 1, de sorte que la similitude Jaccard est un nombre compris entre 0 et 1, la déduplication ils peuvent réellement besoin de déterminer une valeur de seuil appropriée, est supérieur à sera déterminé comme étant si semblable que le texte est retiré de la valeur seuil.

Pour réaliser tout le poids du pseudo-code suivant:

état initial:

Texte ensemble T = {t_1, t_2, ..., t_n}

résultat Déduplication R = {}

Similarity seuil sim_th

sortie:

Résultats déduplication R

processus algorithmiques:

for i in T:

 drapeau = true

 pour j R:

 if (similitude (i, j) <  sim_th)

 drapeau = false

 briser - >  suivant i

 d'autre

 continuer - >  prochaine j

 if (drapeau)

 R.append (i) # i représente le texte de jeu actuel de résultat et tout texte ne se répète pas, le jeu de résultats sera ajouté à l'i

Texte à re-fusion

Le but principal de cette étape est une division dans le texte sur les différents noeuds selon la préprogrammé bonne id de machine, un re-hachage pour un poids normal, comme au cours de l'étape précédente, les sous-chaînes peuvent être différentes selon godet correspondant repartira avec un texte, après cette étape de re-hachage, ils ont mis ces id répétées enlevé. Le résultat final est obtenu, l'ensemble du corpus de texte, le texte n'a retenu une répétition, en vue de l'achèvement de dé-duplication. Pour tout le poids du flux comme indiqué ci-dessous:

Comparez et simHash

Ici, proposé par le simHash algorithme de déduplication par rapport à, respectivement, de la complexité du temps et de la précision de revenir là-dessus,

Tout d'abord, la complexité de temps est considérablement réduit - le nombre de points en fonction de la taille des seaux du changement dynamique de la quantité de texte, est d'environ 2 fois le nombre de texte, un texte ne signifie pas une baignoire unique, la baignoire complexité de calcul est considérablement réduit, l'algorithme simHash le nombre, la baignoire est fixé 4 * 216 = 260000 - en général, le texte ne combinaisons semblables ont des mots similaires, de sorte que sous une combinaisons de mots spécifique comme la majorité du texte, un seul baril à complexité temporelle sévère tend à O (N); dissemblable de simhash respective, à canon unique encore beaucoup de texte, la complexité de temps a tendance à sévère O (N ^ 2)

En second lieu, une mesure plus précise de la similitude: - utiliser un outil de similarité plus précis métriques, mais irréalisables dans lequel un texte court simHash distance de Hamming, le rappel est trop faible, le texte ne satisfait pas beaucoup la distance de Hamming similaire est inférieure à 3 conditions

résumé

Le présent document établies à partir des informations locales telles que l'algorithme de texte du poids, il est dans l'autre scénario court texte simHash Déduplication Déduplication algorithme ne peut pas répondre aux fins proposées, en effet, être appliqué également aux exigences lourdes sous texte long, théoriquement la complexité du temps peut être beaucoup plus faible que simHash, l'effet peut et simHash presque le seul inconvénient est que l'espace de stockage sera plus grande, car l'algorithme requis pour stocker une copie de beaucoup de texte, mais dans les magasins ces copie de texte, ils peuvent utiliser unique au monde id au lieu, de sorte que la pression n'améliore pas le lot de stockage, par rapport à réduire considérablement la complexité temporelle de cet espace pour stocker la pression est complètement supporter.

sortie d'origine au nombre de micro-chaîne publique - Tencent QQ gros volumes de données (qq_bigdata)

160 yuans passé ramassé un ordinateur portable Lenovo F41A, ou montagnes enneigées commémorative
Précédent
Coloré aussi regarder vers le bas sur? Les gens est devenu le troisième plus grand fournisseur de carte graphique marques du monde
Prochain
système de recommandation QQ Aegis basé sur les recommandations liées au combat modèle de conduction thermique
matériel Eagles couverture complète! chaud Gigabyte moniteur de jeu Aorus
produits purs secs | connaissance et l'application expresse de distribution de cartes
Fab Five Tongde tire un bloc Yeston 9800GTX + graphiques, les performances de la machine essayer
navigateur mobile peut faire le jeu: non seulement pas propre publicité vous aidera à l'annonce
les performances de la puce A11 iPhone8 de la force? Non seulement le bit assouplissement Xiaolong 835, tuer aussi leur propre PBM
Rencontre avec trois villas réparties exigences de routage réseau pour profiter pleinement de la gloire
Je l'habitude de jouer à des jeux nécessaires, le prix d'au moins dix yuans chacun, maintenant sans valeur
Jingdong débuts exclusifs de nombreuses nouvelles entreprises, la victoire de la saison scolaire Jingdong 3C
Garbage est devenu une carte graphique, mais il est l'année pour revenir sur le marché du continent, mais le produit phare de Gigabyte
AI Challenger 2018: avis utilisateur Fine-grain idées champion du classement de sentiment résumé
Dans le cercle de bricolage, aussi longtemps que vous avez un corps matériel, et qui prennent le drame fera