簡體   English   中英

使 tfidf 向量化器作為文檔數量的特征返回

[英]Make tfidf vectorizer returns as features as the number of documents

我正在使用適合N 個文檔的 Sklearn TfidfVectorizer,並且我想根據每個文檔中的 tfidf 分數獲得單詞的向量表示。

一些代碼可以幫助:

from sklearn.feature_extraction.text import TfidfVectorizer

model = TfidfVectorizer()

corpus = ["first corpus with words like dog and cat", "second corpus with words like car and plane"]

model.fit(corpus)

model.transform(["cat"]).toarray().shape

>> (1, 11)

為什么我會得到 11 個功能? 我希望有 2 個功能,因為我只用兩個文檔安裝了模型。

所以我不會是這樣的:

[0, tfidfscore]

我閱讀了文檔,對 TF-IDF 有了基本的了解,我可以得出一個結論。 這不是專家意見。

根據文檔,變換返回一個稀疏矩陣,其維度為 (n_samples, n_features)。

返回X:稀疏矩陣,[n_samples, n_features]

Tf-idf 加權文檔-術語矩陣。

現在你的 n_samples 是 1 並且 n_features 來自模型......它計算出等於 11。

轉換返回的是 TD-IDF 加權文檔-項-矩陣,其中每一行對應於文檔,每一列都是特征。

你可以通過說“print(model.get_feature_names())”來了解你的特征。 在您的情況下,它將提供以下輸出。

['and', 'car', 'cat', 'corpus', 'dog', 'first', 'like', 'plane', 'second', 'with', 'words']

如您所見,有 11 個功能。 現在 cat 是頻率必須很高的第三個元素。 如果你說“print(model.transform(["cat"]).toarray())”,你就會知道整個矩陣。 如前所述,將有一行(當您傳入一個文檔..“cat”和 11 列(由於上述原因)。正如您在下面的第三列中看到的那樣,頻率最高為 1.00。

[[0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]]

我對您的代碼做了最小的更改,旨在幫助您。

from sklearn.feature_extraction.text import TfidfVectorizer

model = TfidfVectorizer()

corpus = ["first corpus with words like dog and cat", "second corpus with words like car and plane"]

model.fit(corpus)

Returned_Features = model.get_feature_names()
Returned_TF_IDF_DTM = model.transform(["cat"]).toarray()

print(Returned_Features)
print(Returned_TF_IDF_DTM)

我希望它有幫助。 祝一切順利

似乎你想做這樣的事情

from sklearn.feature_extraction.text import TfidfVectorizer

model = TfidfVectorizer()

corpus = ["first corpus with words like dog and cat", "second corpus with words like car and plane"]

X = model.fit_transform(corpus)

words = model.get_feature_names()
word2idx = dict(zip(words, range(len(words))))

print(X[:, word2idx['cat']].todense())

這很好地為您提供了 tf-idf 矩陣中單詞“cat”的核心響應

暫無
暫無

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

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