我正在尝试计算测试文档和培训文档之间的相似度并标记它们。这是代码,但是不起作用。如果有人可以解释这个想法,我也将不胜感激。
def calculate_similarities(self, vecTestDoc, vectorsOfTrainDocs):
list_of_similarities = []
for vector in vectorsOfTrainDocs:
label = vectorsOfTrainDocs.key()
list_of_similarities += [(self.calculate_similarities(vector, vecTestDoc), label)]
return list_of_similarities
这是错误:
File "..\classification.py", line 98, in calculate_similarities
label = vectorsOfTrainDocs.key()
AttributeError: 'list' object has no attribute 'key'
编辑:我已经定义了两个以上的函数,并且正在开发其他解决方案。他们是这些人
def cosine_similarity(self, weightedA, weightedB):
dotAB = dot(weightedA, weightedB)
normA = math.sqrt(dot(weightedA, weightedA))
normB = math.sqrt(dot(weightedB, weightedB))
return dotAB / (normA * normB)
def fit(self, doc_collection):
self.doc_collection = doc_collection
self.vectorsOfDoc_collection = [(doc, self.doc_collection.tfidf(doc.token_counts))
for doc in self.doc_collection.docid_to_doc.values()]
我相信类似的方法会起作用,但是仍然存在错误消息...我应该更改什么?
return [self.doc_collection.cosine_similarity(vecTestDoc) in vectorsOfTrainDocs]