gpt4 book ai didi

r - R 中用于文本分类的特征散列

转载 作者:行者123 更新时间:2023-12-02 01:44:36 25 4
gpt4 key购买 nike

我正在尝试在 R 中实现特征散列来帮助我解决文本分类问题,但我不确定我是否按照应有的方式进行。我的部分代码基于这篇文章:Hashing function for mapping integers to a given range? .

我的代码:

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 - 使用 digest 作为散列函数是个好主意吗?如果没有,我该怎么办?

PS:我应该在发布之前测试它是否有效,但我的文件很大并且需要很多处理时间,所以我认为有人为我指明正确的方向会更聪明,因为我确定我'我做错了!

感谢您对此的帮助!

最佳答案

我不知道任何现有的 CRAN 包。

不过,我自己写了一个包来做特征散列。源代码在这里:https://github.com/wush978/FeatureHashing , 但 API 不同。

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

如果你想尝试,请查看这里的测试脚本:https://github.com/wush978/FeatureHashing/blob/master/tests/test-conver-to-dgCMatrix.R

请注意,我只在 Ubuntu 中使用它,所以我不知道它是否适用于 Windows 或 Mac。请随时在https://github.com/wush978/FeatureHashing/issues上问我关于包裹的任何问题.

关于r - R 中用于文本分类的特征散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26446728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com