我有80,000份关于众多主题的文件。我想要做的是为每篇文章提供链接,推荐其他类似的文章(例如前5篇相关文章),这些文章与用户当前阅读的文章相似。如果不需要,我对分类文件并不感兴趣,只是相似性或相关性。理想情况下,我希望输出一个 80,000 x 80,000 的矩阵,其中包含所有文档及其与数据集中其他文档的距离(或者可能是相关性/相似性)。
我目前在使用 NLTK 处理文档内容并获取 ngrams,但是不确定应该采取什么方法来计算文档之间的相似度。
我了解到可以使用 tf-idf 和余弦相似度,但由于预计有大量的主题,因此可能会有很多唯一的标记,因此将两个非常长的向量相乘可能不是一个好方法,而且80,000个文档可能需要进行大量的向量相乘。(不过,必须仅需要执行一次,因此这仍然是一个选项)。
是否有更好的方法来获取文件之间的距离,而无需创建ngrams的庞大向量?斯皮尔曼相关性?还是采取更低技术的方法,例如获取前k-grams中的前ngrams并查找具有相同ngrams的其他文件,会更合适?我只是觉得如果需要将可能包含10,000个元素的向量乘以320万次(算术序列的总和从79,999 + 79,998 ...到1),那肯定是最暴力的方法。
欢迎提供建议或指导阅读资料。