减少距离/邻接矩阵的内存要求

时间:2018-01-23 11:49:37

标签: python-3.x scipy word-embedding

基于大约5,000到100,000个字嵌入(GloVe,300维)的子样本,我需要构建一个邻接矩阵,即1和0的矩阵,表示两个单词之间的欧几里德(或余弦)距离是小于x

目前,我正在使用scipy.spatial.distance.pdist

distances = pdist(common_model, 'euclidean')
adjacency = (distances <= 0.4)
adjacency = csr_matrix(squareform(adjacency), dtype=np.uint8)

随着词汇量的增加,我的记忆力会很快填满,而pdist会因MemoryError而失败(当common_model的形状为(91938, 300)且包含float64时)。

手动迭代模型并直接创建邻接,而中间没有距离矩阵将是一种方式,但这非常慢。

是否有另一种方法以时间和内存最优的方式构造邻接矩阵?

0 个答案:

没有答案