2016-03-22 4 views
1

übereinstimmt Ich versuche, Namen in R ähnlich zu VISHWANATHAN KRISHNA GURUVAYUR und GURUVAYUR KRISHNA VISHWANATHAN zu entsprechen. Nach dem Entfernen von Leerzeichen gibt levenshtein eine 21% Übereinstimmung. Ich möchte wissen, ob es eine String-Matching-Algorithmus, der diese beiden Namen als ähnlich markieren könnte ...Zeichenkette, die für Namen mit verwirrten Wörtern in R

library(RecordLinkage) 
levenshteinSim("GURUVAYURKRISHNAVISHWANATHAN","VISHWANATHANKRISHNAGURUVAYUR") 

#[1] 0.2142857 
+0

Bestellen Sie die drei Wörter gleich, bevor Sie sie verketten? – cory

+0

Es gibt Millionen von Datensätzen in der Tabelle und die Reihenfolge der Wörter ist nicht definiert. Es könnte stattdessen 'GURUVAYUR VISHWANATHAN KRISHNA' oder' KRISHNA GURUVAYUR VISHWANATHAN' sein. – Oshan

+1

Warum soll die Levenshtein-Distanz zwischen "abcdef" und "efabcd" 1 sein? – cory

Antwort

0

Versuchen Sie, die Jaro-Winkler-Algorithmus, auch aus dem RecordLinkage Paket. Siehe here zum Beispiel und here für mehr.

In Ihrem Fall

jarowinkler("GURUVAYURKRISHNAVISHWANATHAN","VISHWANATHANKRISHNAGURUVAYUR") 

ergibt:

0,7063492

Ergebnisse sind immer zwischen 0 und 1, so ist dies eine Verbesserung.