2015-02-08 68 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