2016-05-31 6 views
-2

に1つの文字列のすべての組み合わせに一致する私は2番目の文字列の列に一致/ファジーマッチする最初の文字列のすべての組み合わせをカウントしようとしているデータフレームにRワード数 - 別の文字列

例:
がstring1 = "米国、カナダ、英国、オーストラリア、日本、インド、」 string2の= "USAカナダ、インド、英国、オーストラリア、中国、ブラジル、フランス"

期待される結果

  • シングルワードマッチカウント= 5(USAカナッド英国、オーストラリア、インド)= 2(米国、カナダ、英国、オーストラリア)の連続した単語が

  • 三ワードマッチカウント= 0

  • 4本のワードマッチカウント= 0

    にマッチした

  • 2つのワードマッチカウントを一致

  • ファイブ単語マッチカウント= 0

  • 六単語マッチカウント= 0

  • 合計= 5 + 2 = 7

  • お時間をいただき、ありがとうございますと偉大な誰かがこの関数を記述したり

  • +1

    tm'と 'quanteda' – HubertL

    +1

    単一ワード整合のナイーブバージョン'パッケージ内ngram' 'のためのルック - '交差(strsplit(文字列1、 "\\ S +")[[1]]、strsplit (string2、 "\\ s +")[[1]]) ' - しかし、正式なパッケージを使うほうが良いでしょう。 – thelatemail

    +0

    パッケージ参照のためのHubertLありがとう – prav

    答えて

    0

    にこのコードを既存のパッケージを使用するために私を指すように助けることができるトリックを行う必要があります:

    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

    Gauravありがとう、私のために働いています – prav

    関連する問題