【问题标题】:Calculating TF-IDF Score of a Single String计算单个字符串的 TF-IDF 分数
【发布时间】:2021-06-17 21:15:50
【问题描述】:

我使用 TF-IDF 和余弦相似度进行字符串匹配,它可以很好地找到字符串列表中字符串之间的相似度。

现在,我想在新字符串与先前计算的矩阵之间进行匹配。我使用以下代码计算 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,但我不知道该怎么做.我怎样才能做到这一点?或者有没有更好的办法?

【问题讨论】:

    标签: python scikit-learn text-processing tf-idf tfidfvectorizer


    【解决方案1】:

    为了计算单个条目的分数而重新拟合TF-IDF不是办法;您应该简单地将现有拟合矢量化器的 .transform() 方法用于您的新字符串(不是到整个矩阵):

    single_entry = vectorizer.transform(new_string)
    

    请参阅docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-10
      • 2016-07-25
      • 2020-05-11
      • 2018-11-09
      • 2017-03-07
      • 1970-01-01
      • 2012-04-23
      • 2023-03-04
      相关资源
      最近更新 更多