TF-IDF算法

news/2025/3/30 6:23:33/

目录

一、语料库概念理解

二、关键词提取之中文分词的实现

(1)使用jieba分词对文章进行中文分词处理

(2)jieba分词英文与中文的区别

三、TF-IDF分析

(1)TF(词频的计算)

(2)IDF(逆文档频率)

(3)TF-IDF(代表单词在文章中的重要程度)

(4)红楼梦的关键词文件

(5)浏览器与网站服务器之间的联系


一、语料库概念理解

(1)语料库中存放的是在语言的实际使用中真实出现过的语言材料。

(2)语料库是以电子计算机为载体承载语言知识的基础资源。

(3)真实语料需要经过加工(分析和处理),才能成为有用的资源。

举例理解:假设有一个文件夹,文件夹里面有2000篇文章,想要提取出每篇文章中的关键词。

这里的文件夹内的文件就是一个语料库 ,而关键词要具有代表性,能够作为本文章与其他文章之间区分开来。

二、关键词提取之中文分词的实现

(1)使用jieba分词对文章进行中文分词处理

核心关键词是一篇文章的代表性,独特的

import jieba    #用于中文分词     #第三方库,分词
str='我们在学Python办公自动化'
jieba.add_word('Python办公自动化')    #向词典添加一个新词
a=jieba.lcut(sentence=str)    #人工智能的算法来实现
#辞海  收录了中国的所有分词,向辞海中添加单词
print(a)#jieba 本身是一个词海,包含了全国的所有单词,人工向jieba添加新词,词海#'''全模式'''
b=jieba.lcut(sentence=str,cut_all=True)
print(b)#向辞海中添加红楼梦的词库
import jieba    #通过收录了辞海中的所有单词
jieba.load_userdict(r"./data/红楼梦/红楼梦词库.txt")
#向jieba库里面添加新词,并且是文档的形式
#str='宝情孤洁悲远嫁宝玉感离情'
a=jieba.lcut(sentence = str)
print(a)
##a     一次性添加多个词

(2)jieba分词英文与中文的区别

英文每个单词之间都有空格分开,中文之间则不存在这样的分隔符。

jieba分词的原理:

jieba是一个人工智能算法,jieba是基于隐马尔可夫链实现的,jieba分词的内部有点像辞海,分词的原理(以“我们在学Python办公自动化”为例)先找到’我‘,然后找到’我们’,其中'自动'和‘自动化都可以是一个词’。

lcut():jieba库里的一个方法,用来分词;cut_all是lcut中的一个参数,将参数设置为True,则函数会返回某一个句子的所有可能的切分结果。

add_word():向jieba的辞海中添加新的词,那么,我们下次进行分词时就能将句子中的词按照你添加的词进行分词。

load_userdict():将词库文件加载到jieba的辞海中,对文件的要求是一个词在文件中占一行,函数的参数是需要添加词库文件的路径。

lcut()方法:分词的结果

cut():分词的结果

返回的是一个对象,对象的内容可以通过for循环依次打印对象里面的内容

import jieba #用于中文分词 #第三方库,分词 str='我们在学Python办公自动化' jieba.add_word('Python办公自动化') #向词典添加一个新词 
a1=jieba.cut(sentence=str) 
for i in a1: print(i)

结果:

三、TF-IDF分析

(1)TF(词频的计算)

定义:指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被归一化(一般是词频除以文章总字数),以防止它偏向长的文件。

(2)IDF(逆文档频率)

IDF的主要思想是:如果包含的词条t的文档越少,IDF越大,则说明词条具有很好的类别区分能力。

(3)TF-IDF(代表单词在文章中的重要程度)

TF-IDF倾向于过滤掉常见的词语,保留重要的词语,这个值越大,越说明该词越能代表这篇文章,可以作为这篇文章的关键词。

TF - IDF = 词频(TF)X 逆文档频率(IDF)

举例:

几乎每一篇文章都会有“的”字,所以250亿就是语料库的文档总数,包含“中国”、“蜜蜂”、“养殖”的文章数目也都给出了,这样我们按照上面的公式分别计算每个词的IDF值,计算结果如上图结果,最终算出TF-IDF的值,发现“蜜蜂”的TF-IDF值最大,说明“蜜蜂”就是这篇文章的关键词。

(4)红楼梦的关键词文件

为了做红楼梦分词,对于红楼梦的文章中,其中有很多的专有名词,像‘艾官’、‘安国公’、‘宝官’等等,这些词在jieba的辞海中是没有的,所以我们需要向jieba的词库中添加红楼梦的词库文件”红楼梦词库.txt",文件内容如下(每一个专有名词占一行):

(5)浏览器与网站服务器之间的联系

原理:以某度为例,其本质就是爬虫,它会爬取全中国所有的网页,域名;

当我们有了域名就可以访问网页,当作一篇文章;提取出每一个网页中的关键词;

然后百度的服务器会存储所有域名对应的关键词,这个关键词具有极高的代表性,能够区分该网页与别的网页,例如:学习通就可以是一个关键词,那么百度的服务器就会存储类似于www.chaoxingxuexitong.com 学习通,这样的信息,当我们访问域名或着使用浏览器搜索关键词时,就能获取到学习通的域名。


http://www.ppmy.cn/news/1583521.html

相关文章

时间管理大师:道路运输安全员考试备考时间巧用

在道路运输安全员考试备考中,合理规划和利用时间,是提高学习效率、取得良好成绩的重要保障。尤其是对于上班族和时间紧张的考生来说,时间管理显得尤为关键。​ 制定详细时间表:根据自己的日常工作和生活安排,制定一份…

《Android低内存设备性能优化实战:深度解析Dalvik虚拟机参数调优》

1. 痛点分析:低内存设备的性能困局 现象描述:大应用运行时频繁GC导致卡顿 根本原因:Dalvik默认内存参数与硬件资源不匹配 解决方向:动态调整堆内存参数以平衡性能与资源消耗 2. 核心调优参数全景解析 关键参数矩阵&#xff1…

数据结构——第五章:树与二叉树

目录 一、树(⭐⭐) 二、二叉树(⭐⭐⭐) 三、线索二叉树(⭐⭐⭐) 四、树与森林(⭐⭐) 五、哈夫曼树与并查集(⭐⭐⭐) 一、树(⭐⭐&#xff09…

.gitattributes与git lfs

.gitattributes .gitattributes 是 Git 项目的一个配置文件,用来定义文件在 Git 中的行为。它可以控制 Git 如何处理特定类型的文件,比如合并策略、换行符、文本编码、diff 显示方式、LFS(Git Large File Storage)等内容。 &…

【2025】基于springboot+vue的医院在线问诊系统设计与实现(源码、万字文档、图文修改、调试答疑)

基于Spring Boot Vue的医院在线问诊系统设计与实现功能结构图如下: 课题背景 随着互联网技术的飞速发展和人们生活水平的不断提高,传统医疗模式面临着诸多挑战,如患者就医排队时间长、医疗资源分配不均、医生工作压力大等。同时,…

Flutter完整开发实战详解(一、Dart语言和Flutter基础)

前言 在如今的 Flutter 大潮下,本系列是让你看完会安心的文章。本系列将完整讲述:如何快速从0开发一个完整的 Flutter APP,配套高完成度 Flutter 开源项目 GSYGithubAppFlutter。同时也会提供一些 Flutter 的开发细节技巧,并针对…

Rust Web 开发新选择:探索 Hyperlane 轻量级 HTTP 服务器框架

Rust Web 开发新选择:探索 Hyperlane 轻量级 HTTP 服务器框架 在 Web 开发领域,Rust 以其高性能和内存安全性逐渐受到关注。而在众多 Web 框架中,hyperlane 作为一款轻量级、高性能的 HTTP 服务器框架,正悄然成为 Rust 生态中的明…

基于BERT的序列到序列(Seq2Seq)模型,生成文本摘要或标题

数据预处理: 使用DataGenerator类加载并预处理数据,处理变长序列的padding。输入为内容(content),目标为标题(title)。 ​模型构建: 基于BERT构建Seq2Seq模型,使用交叉熵…