gpt4 book ai didi

python - 通过在 python 中使用余弦相似度,返回与查询文档相比最相似的文档

转载 作者:行者123 更新时间:2023-11-28 18:52:57 24 4
gpt4 key购买 nike

我有一组文件和一个查询文档。我的目的是通过与每个文档的查询文档进行比较来返回最相似的文档。要首先使用余弦相似性,我必须将文档字符串映射到向量。也我已经创建了一个 tf-idf 函数来计算每个文档。

为了获取字符串的索引,我有一个类似的函数;

def getvectorKeywordIndex(self, documentList):
""" create the keyword associated to the position of the elements within the document vectors """
#Mapped documents into a single word string
vocabularyString = " ".join(documentList)
vocabularylist= vocabularyString.split(' ')
vocabularylist= list(set(vocabularylist))
print 'vocabularylist',vocabularylist
vectorIndex={}
offset=0
#Associate a position with the keywords which maps to the dimension on the vector used to represent this word
for word in vocabularylist:
vectorIndex[word]=offset
offset+=1
print vectorIndex
return vectorIndex,vocabularylist #(keyword:position),vocabularylist

对于余弦相似度,我的函数是;

 def cosine_distance(self,index, queryDoc):

vector1= self.makeVector(index)
vector2= self.makeVector(queryDoc)

return numpy.dot(vector1, vector2) / (math.sqrt(numpy.dot(vector1, vector1)) * math.sqrt(numpy.dot(vector2, vector2)))

TF-IDF 是;

def tfidf(self, term, key):

return (self.tf(term,key) * self.idf(term))

我的问题是如何使用索引和词汇列表以及此函数内部的 tf-idf 创建 makevector。欢迎任何答案。

最佳答案

您还应该将 vectorIndex 传递给 makeVector 并使用它来查找文档和查询中术语的索引。忽略未出现在 vectorIndex 中的术语。

请注意,在处理文档时,您真的应该使用 scipy.sparse矩阵而不是 Numpy 数组,否则你会很快耗尽内存。

(或者,考虑使用 scikit-learn 中的 Vectorizer 为您处理所有这些,使用 scipy.sparse 矩阵并计算 tf-idf 值。免责声明:我写了其中的一部分类。)

关于python - 通过在 python 中使用余弦相似度,返回与查询文档相比最相似的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9482859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com