Outil de déduplication de texte
Supprimez rapidement le contenu en double du texte, prend en charge la déduplication par ligne, mot et phrase
Qu'est-ce que la déduplication de texte ?
Text Deduplicate supprime les lignes, mots ou entrées répétés d’un texte afin de rendre les listes plus propres et plus faciles à relire. Il sert pour extraits CSV importés, listes de mots-clés, collections d’e-mails, fragments de logs, codes produit, variantes de prompts et notes où les doublons viennent de copies, fusions ou exports défectueux. L’essentiel réside dans la règle de comparaison: casse, espaces de début ou fin, lignes vides, ponctuation, normalisation et ordre d’origine peuvent décider si deux entrées sont identiques. L’outil accélère le nettoyage, mais ne remplace pas la revue métier lorsque de petites différences ont du sens.
Mode d'emploi
Opérations de base
- Saisissez ou collez le texte à dédupliquer dans la zone de texte de gauche
- Choisissez le mode de déduplication approprié (par ligne, mot, phrase, etc.)
- Ajustez les options si nécessaire (sensibilité à la casse, conserver l'ordre, etc.)
- Consultez les résultats de déduplication et les statistiques en temps réel à droite
- Cliquez sur le bouton Copier pour enregistrer le résultat dans le presse-papiers
Description des modes
- Par ligne : traite chaque ligne comme une unité indépendante, supprime les lignes identiques
- Par mot : découpe le texte par espaces, supprime les mots en double
- Par phrase : découpe par points, points d'interrogation et points d'exclamation, supprime les phrases en double
- Par paragraphe : sépare selon les lignes vides et supprime les paragraphes en double
- Par caractère : supprime les caractères qui apparaissent plusieurs fois dans le texte
Cas d’utilisation
Principe technique
La déduplication est une analyse en un seul passage soutenue par un Set JavaScript. Le Set ECMAScript utilise l'algorithme d'égalité SameValueZero (la même comparaison que Array.prototype.includes, où NaN est égal à NaN mais +0 est égal à -0) et la spécification exige qu'il offre une recherche moyenne sous-linéaire — V8 l'implémente comme une table de hachage à adressage ouvert avec insertion amortie en O(1), si bien que l'ensemble du passage est en O(n) par rapport au nombre d'éléments. L'alternative naïve — pousser dans un tableau résultat et appeler indexOf sur chaque élément — est en O(n²) et devient pénible à partir d'environ 10 000 entrées. Le découpage dépend du mode : le mode ligne découpe sur /\r?\n/ pour absorber à la fois les fins de ligne CRLF (Windows) et LF (Unix), le mode mot découpe sur /\s+/, le mode phrase sur /(?<=[.!?])\s+/, et le mode paragraphe sur /\n{2,}/. Chaque unité passe par des normaliseurs optionnels avant de devenir une clé de Set : trim() pour supprimer les espaces de début et de fin, toLowerCase() pour une correspondance insensible à la casse, et String.prototype.normalize('NFC') pour que les chaînes visuellement identiques écrites en forme composée (é, U+00E9) vs décomposée (e + U+0301) se réduisent à une seule entrée. L'ordre est préservé car le tableau résultat est construit dans l'ordre d'itération — le Set n'est consulté que comme filtre « ai-je déjà vu ceci ? ». Le même choix de structure sous-tend SQL DISTINCT et Python set() ; la seule véritable alternative pour des dizaines de millions d'éléments est un filtre de Bloom probabiliste, qui échange un faible taux de faux positifs (environ 1 % à 10 bits/élément) contre une mémoire constante et qui est surdimensionné pour un outil de texte côté navigateur.
- La recherche par Set utilise l'algorithme SameValueZero (ECMA-262 §7.2.10) — NaN correspond à NaN, +0 correspond à -0, sinon égalité stricte
- V8 implémente le Set comme une table de hachage ; insert et has sont en O(1) amorti, rendant l'ensemble de la déduplication en O(n) contre O(n²) pour indexOf
- Le regex du mode ligne /\r?\n/ gère CRLF, LF et CR de fin en un seul découpage ; ignorer cela laisse des suffixes '\r' invisibles qui faussent la correspondance exacte
- La normalisation Unicode via String.prototype.normalize('NFC') regroupe les formes composées/décomposées (par ex. 'é' U+00E9 vs 'e' + U+0301) en une seule clé
- Le mode insensible à la casse ne passe la clé qu'en minuscules — la valeur en casse d'origine est préservée en sortie de sorte que le premier 'ERROR' est conservé tel quel tandis que les lignes 'error' suivantes sont écartées
- La préservation de l'ordre est gratuite : le tableau résultat est construit dans l'ordre d'entrée et le Set n'est consulté que comme filtre, il se comporte donc comme SQL DISTINCT avec un tri stable
- Pour plus de 10 millions d'éléments où la mémoire devient le goulot d'étranglement, un filtre de Bloom (environ 10 bits/élément pour 1 % de faux positifs) remplace le Set — non nécessaire dans le navigateur, où un Set d'1 million de chaînes tient confortablement sous 100 Mo
Exemples
Déduplication de lignes, première occurrence conservée
Entrée :
apple
banana
apple
orange
banana
Sortie :
apple
banana
orangeDéduplication de lignes avec espaces supprimés
Entrée :
hello
hello
hello
world
Sortie (après trim) :
hello
worldDéduplication insensible à la casse
Entrée :
ERROR
error
Warning
WARNING
warning
Sortie (insensible à la casse) :
ERROR
WarningExtraction d'une liste d'e-mails uniques
Entrée :
alice@example.com
bob@example.com
ALICE@example.com
carol@example.com
bob@example.com
Sortie (insensible à la casse, mode ligne) :
alice@example.com
bob@example.com
carol@example.comDéduplication de mots
Entrée : hello world hello again world
Sortie : hello world againDéduplication de phrases
Entrée : This is a test. This is a test. Another sentence.
Sortie : This is a test. Another sentence.FAQ
Qu'est-ce qui est considéré comme un doublon ?
Chaque unité (ligne, mot, phrase, paragraphe ou caractère) est comparée aux autres. Les unités identiques sont des doublons. Activez ou désactivez la sensibilité à la casse. La page sort la liste déduppliquée et indique combien de doublons ont été retirés.
L'ordre est-il préservé ?
Oui : la première occurrence de chaque élément unique est conservée à sa position d'origine, et les doublons suivants sont supprimés. La sortie préserve l'ordre original.
Les lignes vides sont-elles traitées comme des doublons ?
Les lignes vides sont comparées comme n'importe quelle autre ligne. La première ligne vide est conservée ; les lignes vides identiques apparaissant plus loin sont supprimées comme les autres doublons.
Peut-il dédupliquer par sous-chaîne ou par colonne ?
Non. La déduplication agit sur le contenu complet de chaque unité (ligne, mot, phrase, paragraphe ou caractère). Il n'y a pas de mode basé sur une colonne ou une sous-chaîne.
Va-t-il trier la sortie ?
Non. La sortie conserve toujours l'ordre d'origine. Il n'y a pas d'option de tri.
Quelle taille de fichier peut-il gérer ?
La limite est la mémoire du navigateur. Des centaines de milliers de lignes fonctionnent sur les navigateurs de bureau. Les fichiers de plusieurs millions de lignes manquent de mémoire ; pour ceux-là, utilisez un outil CLI comme `sort -u` ou `awk '!seen[$0]++'`.
Mon texte est-il envoyé ?
Non. La déduplication utilise un Set en mémoire dans votre navigateur. Les lignes collées ne sont pas transmises.