最快的Count向量化实现

3

我正在寻找一种n-grams计数向量化的实现,比scikit-learn的CountVectorizer更高效。 我已经确定CountVectorizer.transform()调用是软件中的巨大瓶颈,如果我们能够使管道的这一部分更加高效,就能显著提高模型吞吐量。适配时间并不重要,我们只关心转换时间。最终输出必须是一个scipy.sparse向量。如果有人有潜在的替代方案,将不胜感激。


关于在 mapreduce 上自制计数实现,你怎么看?之后可以转换为稀疏矩阵。 - szxk
我们已经拥有数据并行处理(不同进程处理不同的数据块),因此使用mapreduce调用可能不会增加吞吐量。感谢您的建议。 - Madison May
1个回答

4
你试过HashingVectorizer吗?它略微快一些(如果我记得正确的话,最多达到2倍)。下一步是对代码进行分析,在CountVectorizerHashingVectorizer中去除你不使用的功能,并将剩余部分重写为经过优化的Cython代码(再次进行分析后)。
Vowpal Wabbit使用哈希技巧的基本特征处理可能会给你一个可行性的提示。

感谢您的回复,Olivier。使用HashingVectorizer稍微提高了一点速度(约30%)。我们不需要映射回原始词汇表,所以以后会继续使用HashingVectorizer。我肯定也会尝试Cython优化。分析显示transform调用中没有明显的瓶颈,因此我猜测Cython优化将是唯一真正加速的机会。 - Madison May
3
如果我们发现任何可以提高效率但不会削减功能的严重机会,我们会确保提交PR。 - Madison May
@MadisonMay,那么故事的结局是什么,如果不是秘密的话? :) - Anton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接