1

私は、約 5,000 の地域名を含むデータベースを持っています。そのほとんどは、タイプミス、順列、略語などの繰り返しです。さらに処理を高速化するために、それらを類似性によってグループ化したいと考えています。最良の方法は、各バリエーションを「プラトニック形式」に変換し、元の形式とプラトニック形式で 2 つの列を並べて配置することです。Multiple sequencealignmentについて読んだことがありますが、これは主にバイオインフォマティクスで DNA/RNA/ペプチドの配列に使用されているようです。地名でうまくいくかどうかはわかりません。Rでそれを行うのに役立つライブラリを知っている人はいますか? または、多くのアルゴリズムのバリエーションのうち、どれが適応しやすいでしょうか?

編集:Rでそれを行うにはどうすればよいですか? これまで、私は adist() 関数を使用していました。これは、文字列の各ペア間の距離のマトリックスを提供してくれました (ただし、転座を本来あるべき方法で処理していません。以下のコメントを参照してください)。私が現在取り組んでいる次のステップは、このマトリックスを十分に類似した値のグループ化/クラスタリングに変えることです。前もって感謝します!

編集:転座の問題を解決するために、2 文字を超えるすべての単語を取得し、それらを並べ替え、残っている句読点を削除し、文字列に再度貼り付ける小さな関数を実行しました。

sep <- function(linha) {
    resp <- strsplit(linha," |/|-")
    resp <- unlist(resp)
    resp <- gsub(",|;|\\.","",resp)
    resp <- sort(resp[which(nchar(resp) > 2)])
    paste0(resp,collapse=" ")
}

次に、これをテーブルのすべての行に適用します

locs[,9] <- apply(locs,1,function(x) sep(x[1])) # 1=original data; 9=new data

最後に adist() を適用して類似度テーブルを作成します。

4

1 に答える 1