我是 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 列中的确切单词?我是否使用了错误的函数或缺少其他步骤来解释我得到的令牌?
计数向量化器返回一个没有列名称的稀疏矩阵,您需要将其转换为数据帧,然后通过将单词从
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()