テキスト分類の問題を解決するために R に機能ハッシュを実装しようとしていますが、本来の方法でそれを行っているかどうかはわかりません。私のコードの一部は、この投稿に基づいています:整数を特定の範囲にマッピングするためのハッシュ関数? .
私のコード:
random.data = function(n = 200, wlen = 40, ncol = 10){
random.word = function(n){
paste0(sample(c(letters, 0:9), n, TRUE), collapse = '')
}
matrix(replicate(n, random.word(wlen)), ncol = ncol)
}
feature_hash = function(doc, N){
doc = as.matrix(doc)
library(digest)
idx = matrix(strtoi(substr(sapply(doc, digest), 28, 32), 16L) %% (N + 1), ncol = ncol(doc))
sapply(1:N, function(r)apply(idx, 1, function(v)sum(v == r)))
}
set.seed(1)
doc = random.data(50, 16, 5)
feature_hash(doc, 3)
[,1] [,2] [,3]
[1,] 2 0 1
[2,] 2 1 1
[3,] 2 0 1
[4,] 0 2 1
[5,] 1 1 1
[6,] 1 0 1
[7,] 1 2 0
[8,] 2 0 0
[9,] 3 1 0
[10,] 2 1 0
したがって、基本的には、によって返される md5 ハッシュの最後の 5 桁の 16 進数を使用して、文字列を整数に変換していますdigest
。質問:
1 - これを実行できるパッケージはありますか? 私は何も見つけていません。digest
2 -ハッシュ関数として使用するのは良い考えですか? そうでない場合、どうすればよいですか?
PS: 投稿する前に動作するかどうかをテストする必要がありますが、私のファイルは非常に大きく、多くの処理時間がかかるため、誰かが私を正しい方向に向ける方が賢いと思います。違う!
これについて助けてくれてありがとう!