python tfidf特征变换_使用sklearn提取文本的tfidf特征

该博客介绍了如何使用Python的sklearn库进行TF-IDF特征变换。首先通过CountVectorizer进行词频统计,然后利用TfidfTransformer计算TF-IDF值,最后展示了TfidfVectorizer如何直接生成TF-IDF矩阵,并讨论了关键参数如max_df、min_df和ngram_range的影响。
摘要由CSDN通过智能技术生成

from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer, TfidfTransformer

corpus = [

'This is the first document.',

'This is the second second document.',

'And the third one.',

'Is this the first document?',

]

CountVectorizer是通过fit_transform函数将文本中的词语转换为词频矩阵

get_feature_names()可看到所有文本的关键字

vocabulary_可看到所有文本的关键字和其位置

toarray()可看到词频矩阵的结果

vectorizer = CountVectorizer()

count = vectorizer.fit_transform(corpus)

print(vectorizer.get_feature_names())

print(vectorizer.vocabulary_)

print(count.toarray())

['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']

{'this': 8, 'is': 3, 'the': 6, 'first': 2, 'document': 1, 'second': 5, 'and': 0, 'third': 7, 'one': 4}

[[0 1 1 1 0 0 1 0 1]

[0 1 0 1 0 2 1 0 1]

[1 0 0 0 1 0 1 1 0]

[0 1 1 1 0 0 1 0 1]]

TfidfTransformer是统计CountVectorizer中每个词语的tf-idf权值

transformer = TfidfTransformer()

tfidf_matrix = transformer.fit_transform(count)

print(tfidf_matrix.toarray())

[[ 0. 0.43877674 0.54197657 0.43877674 0. 0.

0.35872874 0. 0.43877674]

[ 0. 0.27230147 0. 0.27230147 0. 0.85322574

0.22262429 0. 0.27230147]

[ 0.55280532 0. 0. 0. 0.55280532 0.

0.28847675 0.55280532 0. ]

[ 0. 0.43877674 0.54197657 0.43877674 0. 0.

0.35872874 0. 0.43877674]]

TfidfVectorizer可以把CountVectorizer, TfidfTransformer合并起来,直接生成tfidf值

TfidfVectorizer的关键参数:

max_df:这个给定特征可以应用在 tf-idf 矩阵中,用以描述单词在文档中的最高出现率。假设一个词(term)在 80% 的文档中都出现过了,那它也许(在剧情简介的语境里)只携带非常少信息。

min_df:可以是一个整数(例如5)。意味着单词必须在 5 个以上的文档中出现才会被纳入考虑。设置为 0.2;即单词至少在 20% 的文档中出现 。

ngram_range:这个参数将用来观察一元模型(unigrams),二元模型( bigrams) 和三元模型(trigrams)。参考n元模型(n-grams)。

tfidf_vec = TfidfVectorizer()

tfidf_matrix = tfidf_vec.fit_transform(corpus)

print(tfidf_vec.get_feature_names())

print(tfidf_vec.vocabulary_)

['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']

{'this': 8, 'is': 3, 'the': 6, 'first': 2, 'document': 1, 'second': 5, 'and': 0, 'third': 7, 'one': 4}

print(tfidf_matrix.toarray())

[[ 0. 0.43877674 0.54197657 0.43877674 0. 0.

0.35872874 0. 0.43877674]

[ 0. 0.27230147 0. 0.27230147 0. 0.85322574

0.22262429 0. 0.27230147]

[ 0.55280532 0. 0. 0. 0.55280532 0.

0.28847675 0.55280532 0. ]

[ 0. 0.43877674 0.54197657 0.43877674 0. 0.

0.35872874 0. 0.43877674]]

使用gensim的corpora和models也可以实现类似的功能,

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值