2016-05-31 10 views
-2

Ich versuche alle Kombinationen von Übereinstimmungen/Fuzzy Matching ersten Zeichenfolgenspalte in den zweiten Zeichenfolgenspalte in einem Datenrahmen zu zählenR Word Count - passend zu allen Kombination von einer Zeichenkette in eine andere Zeichenkette

Eg:
Zeichenfolge1 = " USA Kanada UK Australien Japan Indien“ string2 = "USA Kanada Indien UK Australien China Brasilien Frankreich"

Erwartete Ergebnisse

  • Einzelwortspiel count = 5 (USA Canad a UK Australien Indien) abgestimmt

  • Zwei Wortspiel count = 2 (USA Kanada, Großbritannien Australien) aufeinander folgende Wörter Zählung

  • Drei Wort match = 0

  • Vier Wortspiel count = 0

    abgestimmt
  • Fünf Wortspiel count = 0

  • Sechs Wortspiel count = 0

  • Insgesamt = 5 + 2 = 7

Dank für Ihre Zeit danken und groß, jemand kann helfen, diese Funktion zu schreiben oder mich jedes bestehendes Paket sollte

+1

sucht 'ngram' im Paket' tm' und 'quanteda' – HubertL

+1

Eine naive Version von Wort Matching -' intersect (strsplit (string1, "\\ s +") [[1]], strsplit (string2, "\\ s +") [[1]]) '- aber Sie sind wahrscheinlich besser dran mit einem formellen Paket. – thelatemail

+0

Vielen Dank HubertL für die Paketnummer – prav

Antwort

0

Dieser Code zu verwenden, weist den Trick :

string1 <- "USA Canada UK Australia Japan India" 
string2 <- "USA Canada India UK Australia China Brazil France" 

str1 <- unlist(strsplit(string1, " ")) 

library(ngram) 
for(i in 1:length(str1)){ 
    ng1 <- ngram_asweka(string1, min = i, max = i, sep = " ") 
    ng2 <- ngram_asweka(string2, min = i, max = i, sep = " ") 
    print(paste(i, "word match count", length(which(ng1 %in% ng2)), sep=" ")) 
} 
+0

Danke Gaurav, arbeitet für mich – prav

Verwandte Themen