R 文本分类中的特征哈希算法

R 文本分类中的特征哈希算法,r,hash,hashcode,feature-extraction,text-classification,R,Hash,Hashcode,Feature Extraction,Text Classification,我正试图在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(wl

我正试图在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
因此,我基本上是使用
digest
返回的md5哈希的最后5个十六进制数字将字符串转换为整数。问题:

1-是否有任何包可以为我做到这一点?我没有找到。 2-使用
摘要
作为哈希函数是个好主意吗?如果没有,我能做什么

PS:我应该在发帖前测试一下它是否有效,但是我的文件很大,需要很多处理时间,所以我认为有人给我指出正确的方向更聪明,因为我肯定我做错了


谢谢你在这方面的帮助

我不知道有任何关于这个的CRAN软件包

然而,我为自己编写了一个包来进行特性哈希。源代码如下:,但API不同

在我的例子中,我使用它将data.frame转换为包中的自定义稀疏矩阵
CSRMatrix
。我还实现了一个helper函数,将
CSRMatrix
转换为
Matrix::dgCMatrix
。对于文本分类,我想稀疏矩阵更合适

如果要尝试,请检查此处的测试脚本:


请注意,我只在Ubuntu中使用它,所以我不知道它是否适用于windows或Mac。请随时向我询问有关此套餐的任何问题。

谢谢,我很快会尝试的!我在Mac OS X上遇到一些编译问题。你现在可以在Mac OS X上试试。