首页 > 解决方案 > 我怎样才能使我的单矩阵检查的文档相似性更快?

问题描述

我试图从大量文章(460 个文件,每个文件包含 4000 行)中找到文档相似性。但是做cosine similarity起来需要很多时间来计算。

我不能使用 sklearn 或 scipy 的 python 库。所以我试图实现raw tf-idf vectorizercosine similarity. 矢量化器给了我一个列表列表。

矩阵如下所示:

[[0.0,0.0,...…,0.35480,0.0,0.0],[0.0,.....]]

我的代码:

def computeTFIDFVector(document):
    tfidfVector = [0.0] * len(wordDict)

    for i, word in enumerate(wordDict):
        if word in document:
            tfidfVector[i] = document[word]
    return tfidfVector

def cosine_similarity(vector1, vector2):

    dot_product = sum(p*q for p,q in zip(vector1, vector2))

    magnitude = math.sqrt(sum([val**2 for val in vector1])) * math.sqrt(sum([val**2 for val in vector2]))

    if not magnitude:

        return 0

    return dot_product/magnitude


duplicates=[]
count=0
for i in range(len(tfidfVector)):
    for j in range(i+1, len(tfidfVector)):
        count=count+1
        clear_output()
        print(count)
        similarity=cosine_similarity(tfidfVector[i],tfidfVector[j])
        duplicates.append((i,j,similarity))

现在,预期的结果还可以,但计算起来需要很长时间。有什么建议可以让它更快吗?

标签: pythonpandasmachine-learningtf-idfcosine-similarity

解决方案


推荐阅读