Jaro-Ähnlichkeit zweier Zeichenfolgen berechnen
MARTHA und MARHTA erreichen 0,9444444444444445, also fast 1, obwohl zwei Buchstaben vertauscht sind. Jaro belohnt gemeinsame Zeichen in passender Reihenfolge, statt Änderungen zu zählen, was gut zu Namen und kurzen Codes passt. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Erster
- MARTHA
- Zweiter
- MARHTA
- Ähnlichkeit
- 0,9444444444
Die Jaro-Ähnlichkeit misst, wie ähnlich sich zwei Zeichenfolgen sind. Dazu sucht sie übereinstimmende Zeichen innerhalb eines begrenzten Abstands und prüft, ob diese Zeichen in einer vergleichbaren Reihenfolge stehen. Das Ergebnis reicht von null, wenn keine gültigen Übereinstimmungen vorliegen, bis eins bei identischen Zeichenfolgen. Das Verfahren eignet sich besonders für kurze Namen, Bezeichnungen, Kennungen und andere Werte, bei denen eine kleine Ersetzung oder Vertauschung einen möglichen Treffer nicht automatisch ausschließen soll.
Verstehen Sie die Aussage des Jaro-Werts
Die Jaro-Ähnlichkeit ist ein zeichenbasiertes Maß für unscharfe Vergleiche. Sie ermittelt nicht, wie viele Einfügungen, Löschungen oder Ersetzungen erforderlich wären, um einen Wert in den anderen umzuwandeln. Stattdessen sucht sie gleiche Zeichen in einem Vergleichsfenster, dessen Größe von der längeren Zeichenfolge abhängt.
Anschließend verbindet sie drei Anteile: den übereinstimmenden Teil der ersten Zeichenfolge, den entsprechenden Teil der zweiten und den Anteil der zugeordneten Zeichen, deren Reihenfolge kompatibel bleibt. Ein Ergebnis von eins steht nach diesem Verfahren für identische Zeichenfolgen; null bedeutet, dass kein Zeichen die Bedingungen für eine Zuordnung erfüllt hat. Werte dazwischen beschreiben unterschiedliche Ähnlichkeitsgrade, doch die Funktion erklärt keinen bestimmten Wert automatisch zum Treffer.
Diesen Grenzwert sollten Sie anhand der Folgen falsch positiver und falsch negativer Entscheidungen bestimmen. Namen, kompakte Codes und kurze Katalogbezeichnungen profitieren häufig von Jaro, weil gemeinsame Zeichen und ihre Reihenfolge gewichtet werden, ohne jede kleine Verschiebung als vollständig getrennte Bearbeitungsoperation zu behandeln.
Bereiten Sie Zeichenfolgen einheitlich vor
Der Vergleich erfolgt exakt und unterscheidet Groß- und Kleinschreibung. Unterschiedlich geschriebene Buchstaben gelten als verschiedene Zeichen; Leerzeichen und Satzzeichen fließen ebenfalls in die Berechnung ein. Die Implementierung vergleicht Unicode-Codepunkte.
Deshalb werden beispielsweise viele ergänzende Emoji als ein Vergleichselement statt als zwei UTF-16-Einheiten behandelt. Eine Unicode-Normalisierung findet jedoch nicht statt: Ein vorgefertigtes Zeichen kann sich von einem Grundzeichen mit nachfolgendem Kombinationszeichen unterscheiden, obwohl beide gleich aussehen. Bereiten Sie beide Eingaben vor dem Aufruf nach denselben Regeln vor, falls Ihr Ablauf Schreibweise, Leerraum, Akzente oder Unicode-Formen vereinheitlichen soll.
Indem diese Entscheidungen außerhalb des Rechners bleiben, ist das Verhalten nachvollziehbar und Kennungen werden nicht unbemerkt verändert. Zwei leere Zeichenfolgen ergeben eins, da sie identisch sind; eine leere und eine nicht leere Zeichenfolge ergeben null. Verwenden Sie bei großen Datenbeständen eine einheitliche Vorverarbeitung für die gesamte Sammlung und dokumentieren Sie diese gemeinsam mit dem gewählten Grenzwert.
Setzen Sie den Wert in Abgleichsprozessen umsichtig ein
Ein Jaro-Wert eignet sich als Hinweis in einem Zuordnungsprozess, nicht als Beweis dafür, dass zwei Datensätze dieselbe Entität beschreiben. Beginnen Sie mit repräsentativen, gekennzeichneten Paaren aus Ihren eigenen Daten. Berechnen Sie deren Werte und untersuchen Sie, wo sich tatsächliche und fälschliche Treffer überschneiden.
Danach können Sie einen Grenzwert oder einen Prüfbereich wählen, der zu den Folgen einer Fehlentscheidung passt. Kombinieren Sie bei Kunden- oder Lieferantendaten den Textwert mit unabhängigen Merkmalen, etwa einer stabilen internen Kennung, einem bestätigten Adressbestandteil oder einem Datum. Das Verfahren ist symmetrisch: Wenn Sie die erste und zweite Zeichenfolge vertauschen, bleibt das Ergebnis gleich.
Dadurch eignet es sich zum Sortieren von Kandidaten und zur Duplikaterkennung. Es betrachtet Nähe und Reihenfolge von Zeichen, versteht aber weder Bedeutung noch Synonyme, Transliteration oder Aussprache. Für längere Texte oder semantische Vergleiche ist ein anderes Verfahren besser geeignet.
Anwendungsfälle
Mögliche Namensduplikate sortieren
Bewerten Sie Paare von Kunden-, Lieferanten- oder Kontaktnamen, bevor unklare Kandidaten manuell geprüft werden.
Kurze Katalogbezeichnungen vergleichen
Finden Sie Produkte oder Kategorien, die sich nur durch einen kleinen Tippfehler oder eine lokale Vertauschung unterscheiden.
Regeln für unscharfe Treffer prüfen
Erzeugen Sie deterministische Werte für gekennzeichnete Beispiele, während Sie einen anwendungsspezifischen Grenzwert auswählen.
Häufige Fragen
In welchem Bereich liegt das Ergebnis?
Die Ähnlichkeit liegt zwischen null und eins. Eins steht für identische Zeichenfolgen, null für das Fehlen gültig zugeordneter Zeichen.
Wird zwischen Groß- und Kleinschreibung unterschieden?
Ja. Vereinheitlichen Sie beide Zeichenfolgen vor dem Senden, wenn Ihre Abgleichsregel diesen Unterschied ignorieren soll.
Werden Akzente oder Satzzeichen entfernt?
Nein. Jeder gelieferte Unicode-Codepunkt wird unverändert berücksichtigt, einschließlich Leerzeichen, Satzzeichen und akzentuierter Zeichen.
Ist die Jaro-Ähnlichkeit dasselbe wie Jaro-Winkler?
Nein. Jaro-Winkler ergänzt eine präfixbasierte Anpassung. Diese Funktion gibt ausschließlich die unveränderte Jaro-Ähnlichkeit zurück.
Welcher Wert sollte als Treffer gelten?
Es gibt keinen allgemeingültigen Grenzwert. Bestimmen Sie ihn mit repräsentativen gekennzeichneten Daten und planen Sie einen Prüfbereich für unsichere Paare ein.
Welchen Wertebereich hat das Ergebnis?
Das Ergebnis liegt zwischen 0 und 1. Eins bedeutet identische Zeichenfolgen, null bedeutet, dass kein Zeichen als Treffer gilt. Zwei leere Eingaben ergeben 1, eine leere und eine gefüllte ergeben 0.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/str/jaro-similarity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"first":"MARTHA","second":"MARHTA"}'const res = await fetch("https://api.kit.forhosting.com/str/jaro-similarity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"first": "MARTHA",
"second": "MARHTA"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/jaro-similarity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"first": "MARTHA",
"second": "MARHTA"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/jaro-similarity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"first":"MARTHA","second":"MARHTA"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"first":"MARTHA","second":"MARHTA"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/jaro-similarity", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"first": "MARTHA",
"second": "MARHTA"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.jaro_similarity",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Fragen
Was kostet ein Vergleich über die API?
Jede API-Anfrage kostet $0.002.