我正在尝试为文本挖掘问题构建矢量机。使用的词汇应从给定文件中拟合。但是,将构建字典vocabulary_
的文件数相对较大(例如10^5)。是否有一种简单的方法可以并行化?
更新:正如我发现的那样,有一种"手动"方式...不幸的是,它仅适用于 min_df=1
让我示例性地描述我对两个的示例性内核:将您的输入分成两个块。训练向量器(例如VEC1和VEC2),每个核心都在一个核心上,并在您的一大块数据上(我使用multiprocessing.Pool
)。然后,
# Use sets to dedupe token
vocab = set(vec1.vocabulary_) | set(vec2.vocabulary_)
# Create final vectorizer with given vocabulary
final_vec = CountVectorizer(vocabulary=vocab)
# Create the dictionary final_vec.vocabulary_
final_vec._validate_vocabulary()
将完成这项工作。
您可以使用mllib
,apache-spark
中包含的机器学习库将处理分发累积节点。
这是有关如何将其用于特征提取的教程。
- https://spark.apache.org/docs/latest/mllib-feature-traction.html
您还可以在上检查Sklearn文档,以便在此处如何优化速度以获得一些灵感。