Calcolo della distanza di Levenshtein tra due stringhe
La distanza di Levenshtein indica quante modifiche di un carattere servono per trasformare una stringa in un’altra.
Esegui gratis nel browser
Inserisca due stringhe per ottenere il numero minimo di inserimenti, eliminazioni e sostituzioni. È utile quando l’uguaglianza esatta è troppo rigida, ma occorre una misura chiara e riproducibile. Il confronto è deterministico, distingue maiuscole e minuscole e opera sui punti di codice Unicode, senza rete né punteggi probabilistici.
Che cosa indica la distanza
La distanza di Levenshtein è un intero non negativo. Zero significa che le stringhe sono identiche; uno indica che basta un inserimento, un’eliminazione o una sostituzione. Valori maggiori richiedono più modifiche. L’algoritmo considera tutte le sequenze valide e restituisce il totale minimo, invece di procedere avidamente da sinistra a destra. Ciò è importante con caratteri ripetuti o frammenti spostati. Il risultato distingue maiuscole e minuscole ed è un conteggio assoluto, non una percentuale. Una distanza di tre può essere rilevante per un codice di quattro caratteri e modesta per un paragrafo. La interpreti insieme alla lunghezza delle stringhe e alla tolleranza adatta alla Sua applicazione.
Come avviene il calcolo
Il calcolatore usa la programmazione dinamica per trovare il modo meno costoso di trasformare ogni prefisso della prima stringa in ogni prefisso della seconda. In ciascuna posizione valuta inserimento, eliminazione e sostituzione; i caratteri uguali non aggiungono costo. Conserva soltanto la riga precedente e quella corrente, ottenendo il risultato esatto con memoria proporzionale all’input più corto. I caratteri sono letti come punti di codice Unicode, quindi un carattere supplementare rappresentato da una coppia surrogata JavaScript vale come un elemento. Non vengono applicate normalizzazione Unicode né conversione delle maiuscole. Se rappresentazioni visivamente uguali devono coincidere, normalizzi i testi prima di inviarli.
Come usare il risultato
Invii i valori nei campi <code>first</code> e <code>second</code>. Entrambi devono essere stringhe, ma una stringa vuota è valida; la distanza sarà il numero di punti di codice Unicode dell’altra. La risposta contiene l’intero <code>distance</code>. Può confrontare un nome inserito con uno noto o verificare se un identificatore corretto dista una modifica dall’originale. Non adotti una soglia universale: codici brevi, nomi e frasi hanno profili d’errore diversi. Stabilisca inoltre se spazi, punteggiatura, accenti e maiuscole devono contare. Il browser è adatto ai controlli interattivi; l’API usa la stessa implementazione deterministica per $0.002 a richiesta. I valori non stringa vengono rifiutati senza conversioni implicite.
Casi d'uso
Individuare probabili errori di battitura
Misuri quante modifiche separano una parola o un nome inserito dal valore atteso prima di applicare una soglia specifica.
Confrontare identificatori
Segnali per la revisione gli identificatori che differiscono per uno o due inserimenti, eliminazioni o sostituzioni.
Valutare correzioni testuali
Quantifichi il cambiamento carattere per carattere tra originale e versione corretta con un intero riproducibile.
Domande frequenti
Quali operazioni contribuiscono alla distanza?
Ogni inserimento, eliminazione o sostituzione di un carattere costa uno. Viene restituito il totale minimo.
Il confronto distingue maiuscole e minuscole?
Sì. Converta prima entrambi i testi nello stesso formato se desidera ignorare tale differenza.
Una delle stringhe può essere vuota?
Sì. La distanza è il numero di punti di codice Unicode presenti nell’altra stringa.
Il calcolatore normalizza Unicode?
No. Confronta i punti di codice ricevuti; normalizzi prima le forme combinate se devono risultare equivalenti.
Restituisce una percentuale di somiglianza?
No. Restituisce il numero minimo assoluto di modifiche, normalizzabile con un denominatore adatto.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. La capacità può anche essere eseguita nel browser per uso interattivo.
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/text/text-similarity-levenshtein \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"first":"kitten","second":"sitting"}'const res = await fetch("https://api.kit.forhosting.com/text/text-similarity-levenshtein", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"first": "kitten",
"second": "sitting"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/text-similarity-levenshtein",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"first": "kitten",
"second": "sitting"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/text-similarity-levenshtein", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"first":"kitten","second":"sitting"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"first":"kitten","second":"sitting"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/text-similarity-levenshtein", 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
{
"first": "kitten",
"second": "sitting"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.text_similarity_levenshtein",
"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.
Limiti
max_tokens | 20000 |
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. |