我在创建tf-idf矩阵以计算余弦相似度。但我想让某个集合中的常用词具有更高的权重(即,tf-idf值)。
tfidf_vectorizer = TfidfVectorizer()tfidf_matrix = tfidf_vectorizer.fit_transform(documents)
如何修改上面的tfidf_matrix以增强特定集合中词的权重?
回答:
我将csr类型的tfidf矩阵转换为二维数组,方法如下:
my_matrix = tfidf_matrix.toarray()
然后,通过以下方式查找关键词的索引:
tfidf_vectorizer.vocabulary_.get(keyword)
之后,遍历二维矩阵并根据需求修改tf-idf值。这里,keyword_list包含我们想要修改其tf-idf值的关键词的索引。
for i in range(0, len(my_matrix)): for key in keyword_list: if key != None: key = (int)(key) if my_matrix[i][key] > 0.0: my_matrix[i][key] = new_value
然后,再次将my_matrix转换回csr类型,方法如下:
tfidf_matrix = sparse.csr_matrix(my_matrix)
因此,tfidf_matrix针对关键词列表进行了修改。