TF -IDF的 算法原理初步熟悉

TF

:统计文本中每个词的出现频率

IDF

:逆文本评率,这个权重调整参数就是“逆⽂本频率”(IDF),它的⼤⼩与⼀个词的常⻅程度成反⽐。
在这里插入图片描述
在这里插入图片描述
举个例子:

在这里插入图片描述

利用scikit-learn 进行TF-IDF处理

在这里插入图片描述

from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer
corpus=["I come to China to travel",
"This is a car polupar in China",
"I love tea and Apple ",
"The work is to write some papers in science"]
#该类会将⽂本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类⽂本下的词频
vectorizer=CountVectorizer()
#该类会统计每个词语的tf-idf权值
transformer = TfidfTransformer()

tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus)) #CountVectorizer+TfidfTransformer的组合
tfidf.todense() # todense()
#返回矩阵,由⽂本内容转化⽽来的tf-idf权重矩阵

在这里插入图片描述

tfidf.todense().shape  ##为什么是4行因为输入有4个句子

在这里插入图片描述

现在我们⽤TfidfVectorizer⼀步到位,代码如下:

from sklearn.feature_extraction.text import TfidfVectorizer
# TfidfVectorizer类会将⽂本中的词语转换为词频矩阵,并统计每个词语的tf-idf权值,形成tfidf
#权重矩阵
tfidf2 = TfidfVectorizer()
re = tfidf2.fit_transform(corpus)
re.todense() # todense()返回矩阵,由⽂本内容转化⽽来的tf-idf权重矩阵

在这里插入图片描述

中文分词

# 分词,使⽤jieba分词库将中⽂⽂本(中⽂句⼦)中的词语分开
# 中⽂不像英⽂,词语之间有空格分割,所以对于中⽂⽂本,我们⾸先要进⾏分词处理,再把它转化。我
# 们这⾥介绍的是采⽤中⽂分词库jieba进⾏分词

import jieba
import numpy as np 

text = "我们知道,除了太阳之外,观察距离地球非常遥远的恒星的时候,它们通常只是一个光点, \
而且,似乎感觉不到它们的明显运动,所以,古人就将这类星体称为恒星。 \
而上面所说的这类星体,虽然也呈现出只有一个光点的特点,但是,有着非常明显的辐射和光度变化,有很大的红移现象, \
所以,天文学家将这种类似恒星而并非恒星的天体,称为“类星体”,意即类似恒星的天体。 \
其中,有些类星体因不断向外辐射无线电波,被称为“类星射电源”; \
有些类星体不辐射无线电波,但也具有很大的红移,被称为“蓝星体”。 \
另外,类星体一般都由质量很大的核和核外的气晕构成,少数类星体还会被暗弱的星云物质包围,如3C48; \
有些类星体会喷射小股物质流,如3C273。还有人认为类星体是非常遥远的某类星系中极端明亮的核心。"

sentences = text.split()  #默认按照空格和\ 进行分裂
print(sentences)
print(len(sentences))

在这里插入图片描述
*

简明 jieba 中文分词教程*

https://www.jianshu.com/p/883c2171cdb5

在这里插入图片描述

jieba.cut

#采用中文分词库进行句子词语分列
sentence_word = [list(jieba.cut(sent0))  for sent0 in sentences ] #变成列表外面再套一个列表
print(sentence_word)
print( len(sentence_word ))

在这里插入图片描述

现在将每个词连接起来:

#现在将每个句子的分词结果连接起来 ,只是这次的8个句⼦的词语都有1个空格互相隔开了
# 就像英⽂“I will go home"⼀样,jieba分词处理之后、词语之间有了空格
document = [ " ".join(sent0)  for sent0 in sentence_word  ]
print(document)

在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值