我最近读了一篇关于 TF-ICF 的文章。简而言之,一般的意思是,与 TF-IDF 不同,我们在语料库中取词,而不是在文档中。这种方法对于文本聚类来说还不错,此外,如果有新文本出现,我们不需要重新计算单词的权重。理论上,这种方法将适用于稀疏矩阵,然后您可以通过余弦相似度或欧几里得或曼哈顿找到相似的文本。
问题 1:在语料库中存储字典长度x文本数量的 稀疏矩阵非常非常昂贵。特别是考虑到任务的细节:搜索相似的文本段落。语料库中的每个文本都被分成段落并搜索相似的段落。随着段落的增长,占用的内存量也会增加,这样的矩阵可能会占用几千兆字节。
问题 2: 创建 { word:weight } 结构的字典也是不可能的,因为 TF ICF 和 TF IDF 一样,是动态的。那些。对于相同单词的每个句子,由于 TF,权重会有所不同(回想一下,这是一个单词在文档中出现的次数与文档中的总单词数之比)。
帮助我想出一种适当的方法来查找相似的段落,而无需求助于创建稀疏矩阵和泡菜存档器。
PS我对此的看法:
- 根据 Zipf 分布减少字典。几千到40,这是很多,但仍然不是现在的18万。
- 也许您需要以某种方式使用词袋,即 看看文本在哪里相交,用什么词,然后根据我们拥有的权重,给一些交点比其他的更重要。但我还没想好怎么做。
谢谢你。
不管我对这个问题有多么挣扎,我没有找到其他选择,只能编译一个 ICF 字典,然后以流模式读取 TF ICF 并创建一个晶石矩阵。