Funktion DICECOEFFICIENT( )
Gibt den Dice-Koeffizienten von zwei angegebenen Zeichenfolgen zurück. Er misst, wie ähnlich die beiden Zeichenfolgen sind.
Syntax
DICECOEFFICIENT(Zeichenfolge1; Zeichenfolge2 <;N-Gramm>)
Parameter
Name | Typ | Beschreibung |
---|---|---|
Zeichenfolge1 | Zeichen | Die erste Zeichenfolge des Vergleichs. |
Zeichenfolge2 | Zeichen | Die zweite Zeichenfolge des Vergleichs. |
N-Gramm Optional |
numerisch |
Die Länge des zu verwendenden N-Gramms. Geben Sie eine ganze Zahl ab 1 an. Wenn die N-Gramm-Länge angehoben wird, wird die Ähnlichkeit der beiden Zeichenfolgen strikter bewertet. Wenn Sie keine Länge angeben, wird die Standardlänge 2 verwendet. N-Gramme sind sich überlappende Teilzeichenfolgen (Zeichenblöcke), in die Vergleichszeichenfolgen im Rahmen der Berechnung des Dice-Koeffizienten aufgeteilt werden. Detaillierte Informationen finden Sie unter Bemerkungen. |
Ausgabe
Numerisch. Der Wert ist der Dice-Koeffizient der beiden Zeichenfolgen, der dem Prozentsatz der Gesamtanzahl identischer N-Gramme in den beiden Zeichenfolgen entspricht. der von 0,0000 bis 1,0000 schwanken kann (inklusive).
Beispiele
Einfache Beispiele
Wie sich die Länge des N-Gramms auf das Ergebnis auswirkt
Die drei folgenden Beispiele vergleichen dieselben beiden Zeichenfolgen. Das Ausmaß der gemeldeten Ähnlichkeit hängt von der angegebenen N-Gramm-Länge ab.
Gibt „0,9167“ zurück (mit der N-Gramm-Standardlänge (2) sind die N-Gramme der beiden Zeichenfolgen zu 92% identisch):
DICECOEFFICIENT("125 SW 39TH ST, Suite 100";"Suite 100, 125 SW 39TH ST")
Gibt „1,0000“ zurück (mit der N-Gramm-Länge „1“ sind die N-Gramme der beiden Zeichenfolgen zu 100% identisch):
DICECOEFFICIENT("125 SW 39TH ST, Suite 100";"Suite 100, 125 SW 39TH ST"; 1)
Gibt „0,8261“ zurück (mit der N-Gramm-Länge „3“ sind die N-Gramme der beiden Zeichenfolgen zu 83% identisch):
DICECOEFFICIENT("125 SW 39TH ST, Suite 100";"Suite 100, 125 SW 39TH ST"; 3)
Feldeingabe
Gibt den Dice-Koeffizienten jedes Werts im Feld Adresse bei einem Vergleich mit der Zeichenfolge „125 SW 39TH ST, Suite 100“ zurück (basierend auf der N-Gramm-Standardlänge von „2“):
DICECOEFFICIENT(Adresse;"125 SW 39TH ST, Suite 100")
Weiterführende Beispiele
Mit transponierten Elementen arbeiten
Indem Sie die N-Gramm-Länge verringern und unnötige Zeichen entfernen, können Sie DICECOEFFICIENT( ) bei der Suche nach transponierten Elementen optimieren.
Gibt „0,7368“ zurück (mit der N-Gramm-Standardlänge (2) sind die N-Gramme der beiden Zeichenfolgen zu 74% identisch):
DICECOEFFICIENT("John Smith";"Smith, John")
Gibt „1,0000“ zurück (indem das Komma zwischen dem Nachnamen und dem Vornamen ausgeschlossen und die N-Gramm-Länge „1“ verwendet wird, sind die N-Gramme der beiden Zeichenfolgen zu 100% identisch):
DICECOEFFICIENT("John Smith"; EXCLUDE("Smith, John"; ","); 1)
Rangfolge von Werten auf Basis von „125 SW 39TH ST, Suite 100“ erstellen
Erstellen Sie das Kalkulationsfeld Dice_Co, um den Dice-Koeffizienten zwischen „125 SW 39TH ST, Suite 100“ und jedem Wert innerhalb des Felds Adresse anzuzeigen:
DEFINE FIELD Dice_Co COMPUTED DICECOEFFICIENT(Adresse;"125 SW 39TH ST, Suite 100")
Fügen Sie das Kalkulationsfeld Dice_Co der Ansicht hinzu. Nehmen Sie dann eine Schnellsortierung in absteigender Reihenfolge vor, damit alle Werte im Feld Adresse nach ihrer Ähnlichkeit mit „125 SW 39TH ST, Suite 100“ aufgelistet werden.
Fuzzy-Duplikate für „125 SW 39TH ST, Suite 100“ isolieren
Erstellen Sie einen Filter, der alle Werte des Felds Adresse innerhalb einer festgelegten Ähnlichkeit mit „125 SW 39TH ST, Suite 100“ isoliert:
SET FILTER TO DICECOEFFICIENT(Adresse;"125 SW 39TH ST, Suite 100") > 0,5
Durch eine Änderung der Zahl im Ausdruck können Sie den Grad der Ähnlichkeit in den gefilterten Werten anpassen.
Bemerkungen
Wann Sie DICECOEFFICIENT( ) verwenden sollen
Verwenden Sie DICECOEFFICIENT( ), um nahezu identische Werte (Fuzzy-Duplikate) zu suchen. Sie können DICECOEFFICIENT( ) auch verwenden, um Werte mit identischen oder fast identischen Inhalten, aber transponierten Elementen zu finden. Beispiel:
- Telefonnummern oder Sozialversicherungsnummern mit transponierten Ziffern
- Versionen mit derselben Adresse, die unterschiedlich formatiert sind
Funktionsweise
DICECOEFFICIENT( ) gibt den Dice-Koeffizienten der zwei ausgewerteten Zeichenfolgen zurück. Der Dice-Koeffizient misst die Ähnlichkeit der beiden Zeichenfolgen auf einer Skala von 0,0000 bis 1,0000. Je größer der zurückgegebene Wert ist, umso ähnlicher sind sich die beiden Zeichenfolgen:
-
1,0000 – deutet an, dass sich jede Zeichenfolge aus identischen Zeichen zusammensetzt, obwohl die Zeichen womöglich unterschiedlich angeordnet sind und sich die Groß- und Kleinschreibung unterscheiden kann.
-
0,7500 – bedeutet, dass die N-Gramme der beiden Zeichenfolgen zu 75% identisch sind.
-
0,0000 – bedeutet, dass die beiden Zeichenfolgen keine gemeinsamen N-Gramme (unten erläutert) beinhalten oder die für die Berechnung verwendete Länge der N-Gramme größer ist als die kürzere der beiden Vergleichszeichenfolgen.
Verwendungstipps
- Filtern oder Sortieren Wenn man die Werte über ein Feld mit ihrem Dice-Koeffizienten filtert oder sortiert, findet man diejenigen Werte, die der Vergleichszeichenfolge am ähnlichsten sind.
- Unterscheidung von Groß- und Kleinschreibung Die Funktion berücksichtigt die Groß- und Kleinschreibung nicht, sodass beispielsweise „SMITH“ und „smith“ gleichwertig sind.
- Führende und nachgestellte Leerzeichen Die Funktion schneidet automatisch führende und nachgestellte Leerzeichen in Feldern ab, sodass die TRIM( )- oder ALLTRIM( )-Funktionen nicht verwendet werden müssen, wenn ein Feld als Parameter angegeben wird.
- Generische Elemente entfernen Die OMIT( )- und EXCLUDE( )-Funktionen können die Effektivität der DICECOEFFICIENT( )-Funktion verbessern, indem generische Elemente wie „Corporation“ oder „Inc.“ bzw. Zeichen wie Kommas, Punkte und das Kaufmannsund (&) aus den Feldwerten entfernt werden.
Durch das Entfernen generischer Elemente und Satzzeichen konzentriert sich der Zeichenfolgenvergleich mit DICECOEFFICIENT( ) nur auf den Teil der Zeichenfolge, in dem aussagekräftige Unterschiede auftreten.
Wie der Dice-Koeffizient berechnet wird
Der Dice-Koeffizient ist der Prozentsatz der Gesamtanzahl identischer N-Gramme in den beiden Zeichenfolgen.
Der Dice-Koeffizient wird berechnet, indem die zu vergleichenden Zeichenfolgen zuerst in N-Gramme aufgeteilt werden. N-Gramme (auch als Q-Gramme bezeichnet) sind sich überlappende Teilzeichenfolgen oder Zeichenblöcke mit einer Länge von n. Mit dem Parameter N-Gramm können Sie die Länge von n festlegen oder die Standardlänge 2 akzeptieren.
Zwei in N-Gramme aufgeteilte Namen
Hier sind die Namen „John Smith“ und „Smith, John D.“ in N-Gramme der Länge 2 aufgeteilt sowie in N-Gramme der Länge 3. Unterstriche deuten Leerzeichen an. Interne Leerzeichen und Zeichensetzung werden als Zeichen gezählt.
Länge des N-Gramms |
„John Smith“ N-Gramme |
„Smith, John D.“ N-Gramme |
---|---|---|
2 |
Jo | oh | hn | n_ | _S | Sm | mi | it | th |
Sm | mi | it | th | h, | ,_ | _J | Jo | oh | hn | n_ | _D | D. |
3 |
Joh | ohn | hn_ | n_S | _Sm | Smi | mit | ith |
Smi | mit | ith | th, | h,_ | ,_J | _Jo | Joh | ohn | hn_ | n_D | _D. |
Formel des Dice-Koeffizienten
Sobald die N-Gramme für zwei zu vergleichende Zeichenfolgen festgelegt wurden, wird die Berechnung mit der folgenden Formel abgeschlossen:
-
2 x Anzahl der gemeinsamen N-Gramme / Gesamtanzahl der N-Gramme in beiden Zeichenfolgen
Gemeinsame N-Gramme sind N-Gramme, die in beiden Zeichenfolgen vorkommen. „ABC“ und „BCD“ haben beispielsweise das gemeinsame N-Gramm „BC“, wenn man von einer Länge der N-Gramme von 2 ausgeht (AB | BC und BC | CD).
Beispiele für die Berechnung des Dice-Koeffizienten
Die folgende Tabelle veranschaulicht den Dice-Koeffizienten für die beiden Zeichenfolgen „John Smith“ und „Smith, John D.“ mit unterschiedlichen N-Gramm-Längen.
Beachten Sie, dass der Wert des Dice-Koeffizienten sinkt und dadurch eine geringere Ähnlichkeit andeutet, sobald die Länge der N-Gramme für dieselben Zeichenfolgen angehoben wird. Auch wenn die Zeichenfolgen identisch bleiben, wird die Ähnlichkeit strikter beurteilt, weil die Zeichenfolgen in längere N-Gramme aufgeteilt werden. Dies hat zur Folge, dass längere Zeichensequenzen eines N-Gramms identisch sein müssen, um als gemeinsam betrachtet zu werden.
Man kann sich dies auch dadurch veranschaulichen, dass die relative Position von Zeichen stärker gewichtet wird, wenn man die Länge der N-Gramme erhöht. Im Gegensatz hierzu wird die relative Zeichenposition überhaupt nicht berücksichtigt, wenn man als N-Gramm-Länge den Wert 1 festlegt. Die relative Position bezieht sich auf die Position der Zeichen im Verhältnis zueinander und nicht auf ihre absolute Position innerhalb einer Zeichenfolge.
Tipp
Wenn Sie spezifisch nach einem Buchstabendreher suchen, verwenden Sie eine N-Gramm-Länge von 1.
Länge des N-Gramms |
„John Smith“ N-Gramme |
„Smith, John D.“ N-Gramme |
Gemeinsame N-Gramme |
Dice-Koeffizient |
---|---|---|---|---|
1 |
J | o | h | n | _ | S | m | i | t | h (10 N-Gramme) |
S | m | i | t | h | , | _ | J | o | h | n | _ | D | . (14 N-Gramme) |
10 |
2x10 / (10+14) = 0,8333 |
2 (Grundwert) |
Jo | oh | hn | n_ | _S | Sm | mi | it | th (9 N-Gramme) |
Sm | mi | it | th | h, | ,_ | _J | Jo | oh | hn | n_ | _D | D. (13 N-Gramme) |
8 |
2x8 / (9+13) = 0,7273 |
3 |
Joh | ohn | hn_ | n_S | _Sm | Smi | mit | ith (8 N-Gramme) |
Smi | mit | ith | th, | h,_ | ,_J | _Jo | Joh | ohn | hn_ | n_D | _D. (12 N-Gramme) |
6 |
2x6 / (8+12) = 0,6000 |
4 |
John | ohn_ | hn_S | n_Sm | _Smi | Smit | mith (7 N-Gramme) |
Smit | mith | ith, | th,_ | h,_J | ,_Jo | _Joh | John | ohn_ | hn_D | n_D. (11 N-Gramme) |
4 |
2x4 / (7+11) = 0,4444 |
DICECOEFFICIENT( ) im Vergleich mit ISFUZZYDUP( ) und LEVDIST( )
Einer der Hauptunterschiede zwischen der Funktion DICECOEFFICIENT( ) und den Funktionen LEVDIST( ) sowie ISFUZZYDUP( ) (welche die Levenshtein-Distanz verwenden) besteht darin, dass DICECOEFFICIENT( ) die relative Position von Zeichen oder Zeichenblöcken der beiden Vergleichszeichenfolgen weniger stark beachtet oder diese vollständig ignoriert. Die relative Position ist in Funktionen auf Basis der Levenshtein-Distanz jedoch wichtig.
Vergleichswerte mit Transposition
Wenn Sie Zeichenfolgen wie Adressen vergleichen, in denen gesamte Elemente transponiert sein könnten, ist DICECOEFFICIENT( ) möglicherweise die bessere Wahl. Dieselbe Adresse mit dem transponierten Element „Suite“ wird durch DICECOEFFICIENT( ) beispielsweise als sehr ähnlich, aber durch LEVDIST( ) als sehr unterschiedlich eingeschätzt:
Adresspaar |
Dice-Koeffizient (Standard-N-Gramm von 2) |
Levenshtein-Distanz |
---|---|---|
|
0,9167 |
22 (je größer die Levenshtein-Distanz, desto stärker weichen die zwei Zeichenfolgen ab) |
Vergleichswerte ohne Transposition
Wenn Buchstabendreher ein geringeres Problem darstellen, liefert LEVDIST( ) möglicherweise nützlichere Ergebnisse. Dieselbe Gesellschaft mit unterschiedlichen Satzzeichen wird durch DICECOEFFICIENT( ) beispielsweise als sehr unterschiedlich, aber durch LEVDIST( ) als sehr ähnlich eingeschätzt:
Gesellschaftsnamen |
Dice-Koeffizient (Standard-N-Gramm von 2) |
Levenshtein-Distanz |
---|---|---|
|
0,3750 |
3 |