Calculateur similarité Sørensen–Dice
Notez la ressemblance de deux textes selon les paires de caractères qu'ils partagent : night et nacht n'ont que ht en commun et obtiennent 0,25, alors que deux chaînes identiques obtiennent 1. Utile pour les noms quasi dupliqués et les fautes de frappe. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte a
- night
- Texte b
- nacht
- Coefficient
- 0,25
- Pourcentage
- 25
- Bigrammes de A
- 4
- Bigrammes de B
- 4
Le coefficient de Sørensen–Dice est une mesure classique de similarité floue entre chaînes, fondée sur les bigrammes de caractères partagés plutôt que sur l’égalité exacte ou des chemins d’édition complets. À partir de deux textes, ce calculateur extrait chaque paire consécutive de caractères dans chaque chaîne, traite ces paires comme des multiensembles et renvoie le double de la taille de leur intersection divisé par la somme des tailles des deux multiensembles. Le score se situe entre zéro et un : les chaînes identiques donnent un, les sacs de bigrammes totalement disjoints donnent zéro, et les quasi-correspondances courantes comme night versus nite ou de courts jetons réordonnés se placent entre les deux. Comme la méthode repose sur des paires qui se chevauchent plutôt que sur un alignement global, elle tolère de légères différences d’orthographe et résiste mieux à l’ordre des mots que la distance de Levenshtein pure pour comparer des étiquettes de type sac. Étudiants, ingénieurs de données et équipes produit l’utilisent pour des indices de déduplication, des traits de classement de recherche et des contrôles de devoirs sans déployer une pile d’apprentissage automatique.
Comment le coefficient de bigrammes Sørensen–Dice est défini
Partez de deux chaînes A et B. Formez le multiensemble de bigrammes de caractères de chaque chaîne : pour une chaîne de longueur n vous obtenez n moins un paires qui se chevauchent, ainsi night produit ni, ig, gh, ht. Comptez combien de fois chaque paire apparaît afin que les lettres répétées contribuent plusieurs jetons plutôt qu’une seule appartenance d’ensemble.
La taille de l’intersection est la somme, sur chaque bigramme distinct, du minimum de ses comptes dans A et dans B. Le coefficient de Sørensen–Dice vaut alors deux fois cette intersection divisée par le total de bigrammes en A plus le total en B. Lorsque les deux chaînes normalisées sont vides ou identiques, le coefficient est défini comme un.
Lorsqu’elles diffèrent et qu’au moins l’une a moins de deux caractères, il n’y a pas de bigrammes comparables et le coefficient vaut zéro. La formule est entièrement déterministe et indépendante de la collation de locale au-delà de l’indexation Unicode ordinaire, ce qui stabilise les résultats pour les tests automatisés et les déploiements multi-régions. Ce n’est pas une similarité sémantique : apple et fruit ne partagent aucune paire de caractères et marquent près de zéro même si un humain les jugerait liés.
Utilisez des outils à embeddings lorsque le sens compte ; utilisez Dice lorsque la forme de surface et la proximité orthographique comptent.
Où la similarité floue par bigrammes apporte de la valeur produit
Les équipes catalogue et CRM appliquent un calculateur de similarité de chaînes Sørensen–Dice pour fusionner des noms d’entreprise, titres de produit ou lignes d’adresse quasi en double qui ne diffèrent que de quelques caractères, sans configurer une recherche floue full-text. Les ingénieurs de recherche et de ranking utilisent le coefficient comme trait lexical peu coûteux à côté de BM25 ou du chevauchement de jetons, surtout pour les requêtes et titres courts où les paires de caractères capturent les typos mieux que l’égalité de mot entier.
Les scripts de localisation et d’assurance qualité de contenu signalent des chaînes candidates presque identiques après des éditions de mémoire de traduction afin que les relecteurs se concentrent sur le vrai glissement de sens plutôt que sur des variantes orthographiques accidentelles. Les plateformes de classe et de préparation aux entretiens ont besoin d’un oracle déterministe de la formule de manuel pour que les étudiants vérifient des devoirs sur des paires du type night versus nacht et voient l’intersection et les comptes de bigrammes, pas seulement un score boîte noire.
Préférez cet outil lorsque vous voulez une formule de multiensemble explicable ; passez à la distance d’édition lorsque les coûts d’insertion et de suppression dominent, ou aux embeddings lorsque l’objectif produit est la parenté sémantique. Gardez des entrées courtes lorsque c’est possible, figez coefficient et intersection dans les tests, et vous obtenez des scores flous reproductibles sans base de données vectorielle ni GPU.
Cas d’usage
Appariement de noms et titres quasi en double
Notez titres de produit, noms de fournisseur ou étiquettes SKU qui diffèrent par des typos ou une orthographe mineure afin que les règles de fusion fassent un soft-match sans revue manuelle complète.
Trait lexical pour le classement de recherche
Ajoutez un coefficient Dice de bigrammes entre requête et titre comme trait transparent à côté du chevauchement de jetons dans des rankers légers et des évaluations hors ligne.
Devoirs et enseignement d’algorithmes
Permettez aux étudiants de vérifier la formule de bigrammes en multiensemble sur des paires de manuel et d’inspecter intersection et comptes à côté du coefficient.
Questions fréquentes
Qu’est-ce que le coefficient de Sørensen–Dice entre deux chaînes ?
C’est le double de l’intersection en multiensemble des bigrammes de caractères divisé par la somme des comptes de bigrammes des deux chaînes, soit un score de 0 à 1. Les chaînes identiques marquent 1.
Que se passe-t-il si une chaîne est vide ou n’a qu’un caractère ?
Si les chaînes normalisées sont identiques, elles marquent 1. Si elles diffèrent et qu’un côté a moins de deux caractères, aucun bigramme ne peut correspondre et le coefficient vaut 0.
Pourquoi night et nacht obtiennent-ils 0,25 ?
Chaque mot compte quatre paires de caractères, et la seule qu'ils partagent est ht. Deux fois cette paire commune, divisé par les huit paires au total, donne 0,25, soit 25 %.
Les majuscules et minuscules changent-elles le score ?
Pas par défaut : les deux textes sont mis en minuscules avant la comparaison, donc Night et night comptent comme identiques. Activez la comparaison sensible à la casse quand elle compte, par exemple pour des codes, des mots de passe ou des identifiants de langue.
Un score élevé signifie-t-il que deux mots ont le même sens ?
Non. Le coefficient ne mesure que l'orthographe commune. Apple et fruit ne partagent aucune paire de caractères et obtiennent presque zéro, bien qu'ils soient liés : servez-vous-en pour les fautes de frappe et les quasi-doublons, pas pour le sens.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/dev/dice-coefficient \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text_a":"night","text_b":"nacht"}'const res = await fetch("https://api.kit.forhosting.com/dev/dice-coefficient", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text_a": "night",
"text_b": "nacht"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/dice-coefficient",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text_a": "night",
"text_b": "nacht"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/dice-coefficient", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text_a":"night","text_b":"nacht"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text_a":"night","text_b":"nacht"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/dice-coefficient", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"text_a": "night",
"text_b": "nacht"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.dice_coefficient",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Comment le coefficient de bigrammes Sørensen–Dice est défini
Le repli de casse est optionnel : par défaut les deux côtés sont mis en minuscules avant l’extraction des bigrammes, de sorte que Night et night marquent une correspondance parfaite ; définissez case_sensitive à true si vous avez besoin d’une comparaison sensible à la casse pour mots de passe, codes ou identifiants de langue.
Contrat d’entrée, champs de réponse et erreurs de validation
Exemple : night et nacht partagent le bigramme ht une fois sur quatre paires chacun, donc l’intersection vaut un, le dénominateur huit et le coefficient 0.25. Associez le score à votre propre politique de seuil pour les soft matches ; ce point d’accès n’invente jamais une étiquette de réussite ou d’échec au-delà de la mesure numérique. L’échec de validation n’est pas facturé. Envoyez un corps JSON avec deux champs chaîne obligatoires, text_a et text_b. Les alias a, string1, s1, left et first correspondent à text_a, et b, string2, s2, right et second à text_b, pour que les charges utiles courtes restent lisibles. L’option case_sensitive vaut false par défaut ; acceptez les booléens true ou false, ou des formes courantes comme true, false, one et zero. Chaque chaîne ne peut être vide qu’en cas limite volontaire ; les champs manquants, les types non chaîne et les chaînes de plus de dix mille caractères échouent avec invalid_input en nommant le champ. En cas de succès la réponse répète text_a, text_b et le drapeau case_sensitive résolu ; coefficient est le score sur l’intervalle unitaire arrondi à douze décimales pour des goldens stables ; percent vaut coefficient multiplié par cent pour les tableaux de bord qui préfèrent un pourcentage ; bigrams_a et bigrams_b indiquent combien de paires chaque côté a fournies ; intersection est le compte de chevauchement du multiensemble ; et formula reformule DSC comme le double de l’intersection sur la somme des tailles. Les appels parse réussis utilisent le prix de base publié $0.002 sans jetons de modèle ni réseau sortant.
Où la similarité floue par bigrammes apporte de la valeur produit
Comme l’implémentation est pure parse de niveau A, chaque appel réussi coûte $0.002 avec une latence prévisible en bordure, et le chemin gratuit du navigateur correspond octet pour octet à l’API sur le même module.
Questions techniques
Comment appeler le calculateur de similarité Sørensen–Dice ?
Envoyez text_a et text_b en chaînes. Définissez éventuellement case_sensitive à true pour conserver la casse. L’API renvoie coefficient, percent, bigrams_a, bigrams_b, intersection et formula.
La casse compte-t-elle ?
Par défaut case_sensitive vaut false et les deux chaînes sont mises en minuscules avant l’extraction des bigrammes. Mettez case_sensitive à true pour une comparaison sensible à la casse.
Combien coûte le calculateur ?
L’outil navigateur est gratuit. Les requêtes API utilisent le solde prépayé KIT à $0.002 par appel réussi ; une entrée invalide n’est pas facturée.