如何获取TFIDF转换器中的值?

问题描述 投票:0回答:1

我是 Python 新手,最近学习使用 Bag of Words 和 TFIDF 进行文本处理。

我尝试使用以下代码获取 TFIDF 中第 1001 列中的单词:

count_vectorizer = CountVectorizer()
bag_of_words = count_vectorizer.fit_transform(df)

TFIDF_transformer = TfidfTransformer(norm = 'l2')
TFIDF_representation = TFIDF_transformer.fit_transform(bag_of_words)

TFIDF_transformer.get_feature_names_out()[1000]

输出是“x1000”,一个令牌(我假设)而不是一个单词。

如何获得 TFIDF 第 1001 列中的确切单词?我是否使用了错误的函数或缺少其他步骤来解释我得到的令牌?

python tf-idf
1个回答
0
投票

计数向量化器返回一个没有列名称的稀疏矩阵,您需要将其转换为数据帧,然后通过将单词从

CountVectorizer
中拉出来添加单词作为列名称:

from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer

count_vectorizer = CountVectorizer()
bag_of_words = count_vectorizer.fit_transform(df)

### Turn sparse array into dense pandas dataframe and add column names (words/tokens)
bag_of_words = pd.DataFrame(bag_of_words.toarray(), columns=count_vectorizer.get_feature_names_out())

TFIDF_transformer = TfidfTransformer(norm = 'l2')
TFIDF_representation = TFIDF_transformer.fit_transform(bag_of_words)

或者,我会建议,如果您刚刚进行 TF-IDF 矢量化,直接使用 TF-IDF 矢量化器可能会更简单,而不是使用

TfidfTransformer
:

from sklearn.feature_extraction.text import TfidfVectorizer

TFIDF = TfidfVectorizer()
TFIDF_representation = TFIDF.fit_transform(df)

TFIDF_transformer.get_feature_names_out()
© www.soinside.com 2019 - 2024. All rights reserved.