문자 분류 문제를 해결하기 위해 R에서 해시 피쳐를 구현하려고하지만이를 수행해야하는지 잘 모르겠습니다. 내 코드의 일부는이 게시물을 기반으로합니다 : Hashing function for mapping integers to a given range?.텍스트 분류를 위해 R에서 해싱 기능 (Feature hashing)
내 코드 :
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
그래서, 나는 기본적으로 digest
에 의해 반환 된 MD5 해시의 마지막 5 자리의 16 진수를 사용하여 정수로 문자열을 변환하고 있습니다. 질문 :
1 - 나를 위해이 작업을 수행 할 수있는 패키지가 있습니까? 나는 아무 것도 발견하지 못했다. 2 - 해시 함수로 digest
을 사용하는 것이 좋은가요? 그렇지 않다면 무엇을 할 수 있습니까?
추신 : 내가 게시하기 전에 작동하는지 테스트해야하지만 내 파일이 상당히 크고 많은 처리 시간이 필요하므로 누군가가 올바른 방향으로 나를 가리키게하는 것이 더 영리하다고 생각합니다. 내가 잘못하고있어!
감사합니다.
감사합니다. 곧 사용해 보겠습니다. – Fernando
Mac OS X에서 컴파일 문제가 발생했습니다. – Fernando
이제 Mac OS X에서 사용해 볼 수 있습니다. – wush978