如何解决计算单个字符串的 TF-IDF 分数
我使用 TF-IDF 和 Cosine Similarity 进行字符串匹配,它非常适合在字符串列表中查找字符串之间的相似性。
现在,我想在新字符串与先前计算的矩阵之间进行匹配。我使用以下代码计算 TF-IDF 分数。
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(min_df=1,analyzer=ngrams)
tf_idf_matrix = vectorizer.fit_transform(list_string)
如何计算新字符串相对于先前矩阵的 TF-IDF 分数?我可以将新字符串添加到系列中并重新计算矩阵,如下所示,但效率低下,因为我只想要矩阵的最后一个索引,不需要重新计算旧系列的矩阵。
list_string = list_string.append(new_string)
single_matrix = vectorizer.fit_transform(list_string)
single_matrix = single_matrix[len(list_string) - 1:]
阅读了一段时间关于TF-IDF计算后,我正在考虑保存每个术语的IDF值并在不使用矩阵的情况下手动计算新字符串的TF-IDF,但我不知道该怎么做.我怎样才能做到这一点?或者有什么更好的方法?
解决方法
重新拟合TF-IDF来计算单个条目的得分不是办法;您应该简单地将现有拟合向量化器的 .transform()
方法用于新字符串(不是到整个矩阵):
single_entry = vectorizer.transform(new_string)
参见docs。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。