现有Doc-word矩阵,采用余弦计算两两文档之间的相似度。在实际问题中,矩阵通常是很稀疏的,为了减少计算量,通常采用倒排索引的数据结构[1], 将包含相同word的doc映射到同一个节点上, 这样只需计算相似度不为0的文档之间的相似度, 从而减少计算量,具体过程如图1所示。
图1. 建立倒排索引计算文档相似度(来源于参考文献[1])
上述方法虽然避免了计算相似度为0的文档之间的相似度,但是当有些word对应的文档数很大时,就会出现严重的数据倾斜问题。如果如图2所示中word “B” 对应文档数有8个, 在该节点下需计算8*(8-1)/2=28个文档对之间的相似度。
图2 建立倒排索引