首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TF-IDF的快速实现

TF-IDF的快速实现
EN

Stack Overflow用户
提问于 2018-04-12 04:47:20
回答 1查看 569关注 0票数 1

我正在尝试使用下面的函数计算词频反向文档频率,以获得归一化的权重。当行数为百行时,结果非常快,但当行数为数千行(仅两万行)时,几乎需要3到4分钟才能得到结果。有人能给我指出正确的方向来减少计算时间吗?

代码语言:javascript
复制
tfidf=function(mat){
  mat = mat[,names]
  tf = mat/rowSums(mat)
  id=function(col){sum(!col==0)}
  idf = log10(nrow(mat)/apply(mat, 2, id))
  tfidf = mat
  for(word in names(idf)){tfidf[,word] <- tf[,word] * idf[word]}
  return(tfidf)
}
EN

回答 1

Stack Overflow用户

发布于 2018-04-12 06:27:23

我推荐使用text2vec::TfIdf()类--与text2vec::create_dtm()创建的矩阵配合使用时,它的速度非常快,如果您用过它的话,它的界面类似于sklearn

请查看矢量化vignette的this part,以获取tfidf权重的实际应用示例。

(更广泛地说,我发现text2vec::的大部分核心功能都快得惊人,所以如果您正在为NLP使用R,这是一个很好的选择:p)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49784211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档