用 TF-IDF 和词袋表示文档特征

本文介绍如何使用Python的sklearn库中的CounterVectorizer和TfidfTransformer计算文本的TF-IDF值,同时展示了如何使用jieba进行中文分词并设置停用词。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用 CounterVectorizer 和 TfidfTransformer 计算 TF-IDF

import jieba
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer, TfidfVectorizer
import pandas as pd

contents = [
    u'小明喜欢看电影,小红也喜欢看电影。',
    u'小明还喜欢看足球比赛。'
]
# 定义停用词
stopwords = {',', '。'}
# 计算TF(每个词的出现次数,未归一)
# tokenizer: 定义一个函数,接受文本,返回分词的list
# stop_words: 定义停用词词典,会在结果中删除词典中包含的词
tf = CountVectorizer(tokenizer=jieba.lcut, stop_words=stopwords)
res1 = tf.fit_transform(contents)
# use_idf: 表示在TF矩阵的基础上计算IDF,并相乘得到TF-IDF
# smooth_idf: 表示计算IDF时,分子上的总文档数+1
# sublinear_tf: 表示使用 1+log(tf)替换原来的tf
# norm: 表示对TF-IDF矩阵的每一行使用l2范数归一化
tfidf = TfidfTransformer(norm='l2', use_idf=True, smooth_idf=True, sublinear_tf=False)
res2 = tfidf.fit_transform(res1)

直接使用 TfidfVectorizer

# 参数为 CounterVectorizer 和 TfidfTransformer 的所有参数
tfidf = TfidfVectorizer(tokenizer=jieba.lcut, stop_words=stopwords, norm='l2', use_idf=True, smooth_idf=True, sublinear_tf=False)
res = tfidf.fit_transform(contents)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值