我是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列中的确切单词?我是否使用了错误的函数或错过了其他步骤来解释我获得的 token ?

推荐答案

计数向量器返回一个没有列名的稀疏矩阵,您需要将其转换为锯齿形框架,然后通过从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()

Python相关问答推荐

如何使用SubProcess/Shell从Python脚本中调用具有几个带有html标签的参数的Perl脚本?

仅从风格中获取 colored颜色 循环

由于NEP 50,向uint 8添加-256的代码是否会在numpy 2中失败?

试图找到Python方法来部分填充numpy数组

Django mysql图标不适用于小 case

删除最后一个pip安装的包

Mistral模型为不同的输入文本生成相同的嵌入

如何在虚拟Python环境中运行Python程序?

将tdqm与cx.Oracle查询集成

如何让这个星型模式在Python中只使用一个for循环?

UNIQUE约束失败:customuser. username

使用Python和文件进行模糊输出

将scipy. sparse矩阵直接保存为常规txt文件

在pandas/python中计数嵌套类别

(Python/Pandas)基于列中非缺失值的子集DataFrame

从源代码显示不同的输出(机器学习)(Python)

Python 3试图访问在线程调用中实例化的类的对象

如何在Airflow执行日期中保留日期并将时间转换为00:00

按条件计算将记录拆分成两条记录

极点用特定值替换前n行