【问题标题】:Modify tf-idf vectorizer for some keywords修改一些关键字的 tf-idf vectorizer
【发布时间】:2017-01-15 08:49:51
【问题描述】:
我正在创建一个 tf-idf 矩阵来查找余弦相似度。但我希望集合中的一些常用词具有更大的权重(即 tf-idf 值)。
tfidf_vectorizer = TfidfVectorizer()
tfidf_matrix = tfidf_vectorizer.fit_transform(documents)
如何修改上述 tfidf_matrix 以用于特定集合中的单词。
【问题讨论】:
标签:
python
machine-learning
scipy
nlp
nltk
【解决方案1】:
我使用将 csr 类型的 tfidf-matrix 转换为二维数组,
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_type,
tfidf_matrix = sparse.csr_matrix(my_matrix)
因此,针对关键字列表修改了 tfidf_matrix。