2015-02-08 63 views

回答

7

这不是直接可能的,因为没有办法将这些向量化工所需的词汇表进行并行化/分布式访问。

要执行并行文档矢量化,请改为使用HashingVectorizer。 scikit文档提供了使用此矢量化器的an example来批量训练(和评估)分类器。类似的工作流程也适用于并行化,因为输入项​​映射到相同的矢量索引,而并行工作人员之间没有任何通信。

只需单独计算部分术语文档矩阵,并在所有作业完成后连接它们。此时,您也可以在级联矩阵上运行TfidfTransformer

不存储输入项词汇表的最大缺点是难以找出哪些项被映射到最终矩阵中的哪一列(即反向变换)。唯一有效的映射是对术语使用散列函数来查看它分配给哪个列/索引。对于逆向变换,您需要为所有独特的术语(即您的词汇)做到这一点。

+0

我喜欢这个答案,我试图实现它,但我该如何将并行化的'HashingVectorizer'的结果连接起来? – 2017-08-09 20:30:36

+0

Nvm。我知道了。我使用了'scipy.sparse.vstack'。 – 2017-08-09 20:58:12

+0

你能解释更多关于获取相应的词汇吗? – 2018-02-12 01:47:54