出于目的,要知道任何大多数零值的矩阵都是稀疏矩阵。这与大多数非零值的密集矩阵不同。
N-Grams矩阵有237,573行和389,905列。前10行和列如下所示:
这很稀疏。...没有理由将所有这些零存储在内存中。如果这样做,就有可能耗尽RAM并触发一个MemoryError。
输入CSR矩阵,该矩阵仅存储矩阵的非零值和对其原始位置的引用。...矩阵,它会成为一个对象,具有三个属性- ,,row -分别包含以下三个数组,:coldata
[0, 1, 3, 3]:每个非零值的行索引(0索引)
[3, 1, 0, 3]:每个非零值的列索引(0索引...)
[4, 1, 3, 7]:来自矩阵的非零值
因此可以说值4(存储在matrix.data[0])的坐标是(0,3)(存储在(matrix.row[0],matrix.col[0])中。...在第39-43行,遍历坐标矩阵,为非零值拉出行和列索引 - 记住它们都具有超过0.8的余弦相似性 - 然后将它们转换为它们的字符串值。
为了澄清,通过一个简单的示例进一步解开第39-43行。