簡體   English   中英

計算單個字符串的 TF-IDF 分數

[英]Calculating TF-IDF Score of a Single String

我使用 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,但我不知道該怎么做。 我怎樣才能做到這一點? 或者有沒有更好的方法?

重新擬合 TF-IDF 以計算單個條目的分數不是辦法; 您應該簡單地將現有擬合矢量化器的.transform()方法用於您的新字符串(而不是整個矩陣):

single_entry = vectorizer.transform(new_string)

請參閱文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM