AI写算法:TF-IDF

        以下是一个使用Python和sklearn库中的TfidfVectorizer类来实现TF-IDF(Term Frequency-Inverse Document Frequency)的简单示例。TfidfVectorizer是一个将原始文本转换为TF-IDF特征向量的转换器。

python复制代码

# 导入必要的库
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.datasets import fetch_20newsgroups
# 加载数据集(这里我们使用20 Newsgroups数据集作为示例)
categories = ['alt.atheism', 'talk.religion.misc', 'comp.graphics', 'sci.med']
newsgroups_train = fetch_20newsgroups(subset='train', categories=categories, shuffle=True, random_state=42)
# 准备要转换的文本数据
documents = newsgroups_train.data
# 初始化TfidfVectorizer
# 这里我们设置了一些参数,如min_df(忽略在所有文档中出现次数少于该值的单词),max_df(忽略在所有文档中出现次数多于该值的单词)等
vectorizer = TfidfVectorizer(min_df=2, max_df=0.95, ngram_range=(1, 2), stop_words='english')
# 使用TfidfVectorizer将文本数据转换为TF-IDF特征矩阵
X = vectorizer.fit_transform(documents)
# 查看一些词汇的TF-IDF权重
# 首先获取词汇表(即所有唯一词汇的列表)
vocabulary = vectorizer.get_feature_names_out()
# 打印部分词汇的TF-IDF权重
for word in ['god', 'atheism', 'graphics', 'medicine']:
if word in vocabulary:
idx = vocabulary.index(word)
print(f"{word}: {X[0, idx]}") # 注意:这里我们仅打印了第一个文档的TF-IDF值,你可能想要打印其他文档的
else:
print(f"{word} not in vocabulary.")
# 如果你想要将TF-IDF特征矩阵转换回原始的文档-词汇形式(仅用于演示,通常不需要这样做)
# 你可以使用vectorizer.inverse_transform方法,但请注意它返回的是稀疏表示
# transformed_docs = vectorizer.inverse_transform(X[:5]) # 例如,仅转换前5个文档
# print(transformed_docs)

注意

  • fetch_20newsgroups函数用于从scikit-learn库中加载20 Newsgroups数据集,这是一个常用于文本分类的标准数据集。
  • 在实际应用中,你可能需要调整TfidfVectorizer的参数以适应你的特定任务和数据集。
  • X[0, idx]表示第一个文档中词汇word的TF-IDF值。由于X是一个稀疏矩阵,所以你可以直接通过索引访问其元素。
  • inverse_transform方法通常用于调试或可视化目的,因为它返回的表示可能不如原始文本那么直观或有用。在实际应用中,你通常不会需要将TF-IDF特征矩阵转换回原始的文档-词汇形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

军哥说AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值