我有一个很大的数据语料库(文本),我已经将其转换为稀疏术语文档矩阵(我使用scipy.sparse.csr.csr_matrix
来存储稀疏矩阵)。我想为每个文档查找前n个最近邻居匹配项。我希望Python scikit-learn
库(准确地说是sklearn.neighbors.NearestNeighbor
)中的NearestNeighbor
例程能解决我的问题,但使用空间划分数据结构(如KD trees
或Ball trees
)的高效算法无法处理稀疏矩阵。只有蛮力算法适用于稀疏矩阵(在我处理大型语料库的情况下,这是不可行的)。
稀疏矩阵的最近邻搜索是否有任何有效的实现(在Python或任何其他语言中)?
谢谢。
迟来的答案:看看位置敏感哈希
支持scikit学习已经在这里和这里提出。
您可以尝试使用TruncatedVD将高维稀疏数据转换为低维密集数据,然后创建球树。