2017-12-07 1 views
0

Ich muss orthographische Ähnlichkeit (Edit/Levenshtein Abstand) zwischen Wörtern in einem gegebenen Korpus berechnen.R - berechne paarweise orthographische Ähnlichkeit einer Liste

Das R-Paket vwr diese Lage zu sein, scheint zu berechnen:

coltheart.N(list1, list2) 

in dem der Levenshtein Abstand zwischen den paarweise zusammenpassenden Worte der beiden Wortlisten berechnet wird.

Ich frage mich, ob es eine Möglichkeit gibt, die Levenshtein-Distanz zwischen allen möglichen Wortkombinationen einer gegebenen Wortliste zu berechnen. Kann mir jemand einen Hinweis geben?

Antwort

1

Sie die Funktion levenshtein.distance aus dem Paket vwr und Schleife über jedes einzelne Wort in der Liste verwenden können:

library(vwr) 

wordlist <- list("but", "nut", "rut") 

output <- lapply(wordlist, function(x) levenshtein.distance(x, wordlist)) 

> output 
[[1]] 
but nut rut 
    0 1 1 

[[2]] 
but nut rut 
    1 0 1 

[[3]] 
but nut rut 
    1 1 0 

Es wird eine Warnmeldung ist eine Liste Argument stringdist über vorbei, aber die Ergebnisse passen, so Ich bin mir ziemlich sicher, dass du es ignorieren kannst.


Edit:

Um die Wörter als Namen für die Listenelemente zuzuweisen, verwenden Sie nur

names(output) <- wordlist 

> output 
$but 
but nut rut 
    0 1 1 

$nut 
but nut rut 
    1 0 1 

$rut 
but nut rut 
    1 1 0 
+0

zu funktionieren scheint (obwohl es ein wenig Zeit nehmen, IIT ist eine riesige Liste) - Vielen Dank! Noch eine Frage: Wie kann ich '[[1]]' durch das Wort "Quelle" ersetzen? –

+1

Siehe meine Bearbeitung unten. – LAP

+0

vielen vielen dank! –

Verwandte Themen