Calcolatore similarità Sørensen–Dice
Valuti la somiglianza tra due testi in base alle coppie di caratteri che condividono: night e nacht hanno in comune solo ht e ottengono 0,25, mentre due stringhe identiche ottengono 1. Utile per nomi quasi duplicati ed errori di battitura. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo a
- night
- Testo b
- nacht
- Coefficiente
- 0,25
- Percentuale
- 25
- Bigrammi di A
- 4
- Bigrammi di B
- 4
Il coefficiente di Sørensen–Dice è una misura classica di similarità fuzzy tra stringhe basata su bigrammi di caratteri condivisi, non sull’uguaglianza esatta né su percorsi di edit completi. Date due sequenze di testo, questo calcolatore estrae ogni coppia consecutiva di caratteri in ciascuna stringa, tratta tali coppie come multi-insiemi e restituisce il doppio della dimensione della loro intersezione diviso per la somma delle dimensioni dei due multi-insiemi. Il punteggio sta tra zero e uno: stringhe identiche danno uno, borse di bigrammi del tutto disgiunte danno zero, e le quasi-corrispondenze quotidiane come night contro nite o token brevi riordinati restano nel mezzo. Poiché il metodo dipende da coppie sovrapposte anziché da un allineamento globale, tollera piccole differenze ortografiche ed è meno fragile all’ordine delle parole della pura distanza di Levenshtein quando si confrontano etichette di tipo borsa. Studenti, data engineer e team di prodotto lo usano per indizi di deduplica, feature di ranking di ricerca e controlli di compiti senza montare uno stack di machine learning.
Come è definito il coefficiente di bigrammi Sørensen–Dice
Si parta da due stringhe A e B. Si formi il multi-insieme di bigrammi di caratteri per ciascuna stringa: per una stringa di lunghezza n si ottengono n meno uno coppie sovrapposte, così night produce ni, ig, gh, ht. Si conti quante volte compare ogni coppia affinché le lettere ripetute contribuiscano con più token e non con una sola appartenenza d’insieme.
La dimensione dell’intersezione è la somma, su ogni bigramma distinto, del minimo dei suoi conteggi in A e in B. Il coefficiente di Sørensen–Dice è allora il doppio di tale intersezione diviso per il totale dei bigrammi in A più il totale in B. Quando entrambe le stringhe normalizzate sono vuote o altrimenti identiche, il coefficiente è definito come uno.
Quando differiscono e almeno una ha meno di due caratteri, non ci sono bigrammi confrontabili e il coefficiente è zero. La formula è pienamente deterministica e indipendente dalla collazione di locale al di là della normale indicizzazione Unicode, il che mantiene risultati stabili per test automatici e deployment multi-regione. Questa non è similarità semantica: apple e fruit non condividono coppie di caratteri e ottengono un punteggio vicino a zero anche se un umano le giudicherebbe correlate.
Si usino strumenti basati su embedding quando conta il significato; si usi Dice quando contano la forma superficiale e la prossimità ortografica.
Dove la similarità fuzzy a bigrammi genera valore di prodotto
I team di catalogo e CRM applicano un calcolatore di similarità tra stringhe Sørensen–Dice quando uniscono nomi di azienda, titoli di prodotto o righe di indirizzo quasi duplicati che differiscono di pochi caratteri senza configurare una ricerca fuzzy full-text. Gli ingegneri di search e ranking usano il coefficiente come feature lessicale economica accanto a BM25 o alla sovrapposizione di token, soprattutto per query e titoli brevi in cui le coppie di caratteri catturano i typo meglio dell’uguaglianza di parola intera.
Gli script di localizzazione e QA dei contenuti segnalano stringhe candidate quasi identiche dopo modifiche alla translation memory così i revisori si concentrano sul vero scostamento di significato e non su varianti ortografiche accidentali. Le piattaforme scolastiche e di preparazione ai colloqui necessitano di un oracolo deterministico della formula da manuale affinché gli studenti possano controllare esercizi su coppie nello stile night versus nacht e vedere intersezione e conteggi di bigrammi, non solo un punteggio a scatola nera.
Si preferisca questo strumento quando si vuole una formula di multi-insieme spiegabile; si passi alla distanza di edit quando dominano i costi di inserimento e cancellazione, o agli embedding quando l’obiettivo di prodotto è la parentela semantica. Si mantengano input brevi quando possibile, si fissino coefficient e intersection nei test e si ottengono punteggi fuzzy riproducibili senza database vettoriale né GPU.
Casi d'uso
Corrispondenza di nomi e titoli quasi duplicati
Si assegnino punteggi a titoli di prodotto, nomi di fornitore o etichette SKU che differiscono per typo o ortografia minore così le regole di merge fanno soft-match senza revisione manuale completa.
Feature lessicale per il ranking di ricerca
Si aggiunga un coefficiente Dice a bigrammi tra query e titolo come feature trasparente accanto alla sovrapposizione di token in ranker leggeri e valutazioni offline.
Compiti e insegnamento di algoritmi
Si consenta agli studenti di verificare la formula di bigrammi a multi-insieme su coppie da manuale e di ispezionare intersezione e conteggi accanto al coefficiente.
Domande frequenti
Che cos’è il coefficiente di Sørensen–Dice tra due stringhe?
È il doppio dell’intersezione a multi-insieme dei bigrammi di caratteri diviso per la somma dei conteggi di bigrammi in entrambe le stringhe, con un punteggio da 0 a 1. Le stringhe identiche ottengono 1.
Cosa succede se una stringa è vuota o ha un solo carattere?
Se le stringhe normalizzate sono identiche ottengono 1. Se differiscono e un lato ha meno di due caratteri, nessun bigramma può combaciare e il coefficiente è 0.
Perché night e nacht ottengono 0,25?
Ogni parola ha quattro coppie di caratteri e l'unica che condividono è ht. Il doppio di quella coppia comune, diviso per le otto coppie totali, dà 0,25, cioè il 25%.
Maiuscole e minuscole cambiano il punteggio?
Per impostazione predefinita no: entrambi i testi vengono portati in minuscolo prima del confronto, quindi Night e night risultano identici. Attivi il confronto che distingue le maiuscole quando conta, per esempio con codici, password o identificatori di lingua.
Un punteggio alto vuol dire che due parole hanno lo stesso significato?
No. Il coefficiente misura solo la grafia in comune. Apple e fruit non condividono alcuna coppia di caratteri e ottengono quasi zero pur essendo collegate: lo usi per errori di battitura e quasi duplicati, non per il significato.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"text_a": "night",
"text_b": "nacht"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.dice_coefficient",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Come è definito il coefficiente di bigrammi Sørensen–Dice
Il ripiegamento del maiuscolo/minuscolo è opzionale: di default entrambi i lati vengono convertiti in minuscolo prima dell’estrazione dei bigrammi, così Night e night ottengono una corrispondenza perfetta; si imposti case_sensitive a true se serve un confronto case-aware per password, codici o identificatori di lingua.
Contratto di ingresso, campi di risposta ed errori di validazione
Esempio: night e nacht condividono il bigramma ht una volta su quattro coppie ciascuno, quindi l’intersezione è uno, il denominatore è otto e il coefficiente è 0.25. La validazione fallita non viene fatturata. Si invii un corpo JSON con due campi stringa obbligatori, text_a e text_b. Gli alias a, string1, s1, left e first mappano su text_a, e b, string2, s2, right e second su text_b, così i payload brevi restano leggibili. L’opzionale case_sensitive ha default false; accetta booleani true o false, o forme comuni come true, false, one e zero. Ogni stringa può essere vuota solo come caso limite deliberato; campi mancanti, tipi non stringa e stringhe più lunghe di diecimila caratteri falliscono con invalid_input nominando il campo. In caso di successo la risposta ripete text_a, text_b e il flag case_sensitive risolto; coefficient è il punteggio sull’intervallo unitario arrotondato a dodici decimali per goldens stabili; percent è coefficient per cento per dashboard che preferiscono una percentuale; bigrams_a e bigrams_b riportano quante coppie ha contribuito ciascun lato; intersection è il conteggio di sovrapposizione del multi-insieme; e formula riafferma DSC come il doppio dell’intersezione sulla somma delle dimensioni. Si abbini il punteggio alla propria politica di soglia per soft match; questo endpoint non inventa mai un’etichetta di superato o fallito oltre alla misura numerica. Le chiamate parse riuscite usano il prezzo base pubblicato $0.002 senza token di modello e senza rete in uscita.
Dove la similarità fuzzy a bigrammi genera valore di prodotto
Poiché l’implementazione è parse pura di livello A, ogni chiamata riuscita costa $0.002 con latenza prevedibile all’edge, e il percorso gratuito del browser coincide byte per byte con l’API sullo stesso modulo.
Domande tecniche
Come si invoca il calcolatore di similarità Sørensen–Dice?
Si inviino text_a e text_b come stringhe. Facoltativamente si imposti case_sensitive a true per preservare il maiuscolo/minuscolo. L’API restituisce coefficient, percent, bigrams_a, bigrams_b, intersection e formula.
Il maiuscolo e il minuscolo contano?
Di default case_sensitive è false e entrambe le stringhe vengono convertite in minuscolo prima dell’estrazione dei bigrammi. Si imposti case_sensitive a true per un confronto case-aware.
Quanto costa il calcolatore?
Lo strumento nel browser è gratuito. Le richieste API usano il saldo prepagato KIT a $0.002 per chiamata riuscita; l’input non valido non viene fatturato.