自然语言处理之jieba分词和TF-IDF分析

news/2025/1/12 5:59:20/

jiebaTFIDF_0">jieba分词和TF-IDF分析

目录

  • jieba分词和TF-IDF分析
    • 1 jieba
      • 1.1 简介
      • 1.2 终端下载
      • 1.3 基本语法
    • 2 TF-IDF分析
      • 2.1 什么是语料库
      • 2.2 TF
      • 2.3 IDF
      • 2.4 TF-IDF
      • 2.5 函数导入
      • 2.6 方法
    • 3 实际测试
      • 3.1 问题解析
      • 3.2 代码测试

jieba_3">1 jieba


1.1 简介

结巴分词(Jieba)是一个广泛使用的中文分词Python库,它支持多种分词模式,并且可以添加自定义词典来提高分词的准确性。

1.2 终端下载

python">pip install jieba

1.3 基本语法

  • jieba.lcut(sentence=切分语句变量),会根据自带的词典进行切分
  • jieba.add_word(‘词句’),添加词句到词典,之后会以此切分
  • jieba.load_userdict(‘文件’),文件添加到词典,文件需要一词一行

代码展示:

python">import jieba
w1 = '我们在学习python办公自动化'
w2 = jieba.lcut(sentence=w1)
print(w2)
jieba.add_word('python办公自动化')
w3 = jieba.lcut(sentence=w1)
print(w3)
w4 = '我在想你,在今天的风里。'
w5 = jieba.lcut(sentence=w4)
print(w5)
jieba.load_userdict(r'.\dic.txt')
w4 = '我在想你,在今天的风里。'
w6 = jieba.lcut(sentence=w4)
print(w6)

运行结果:

在这里插入图片描述

2 TF-IDF分析


2.1 什么是语料库

(1)语料库中存放的是在语言的实际使用中真实出现过的语言材料;
(2)语料库是以电子计算机为载体承载语言知识的基础资源;
(3)真实语料需要经过加工(分析和处理),才能成为有用的资源。

2.2 TF

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

2.3 IDF

逆向文档频率。IDF的主要思想是:如果包含词条t的文档越少,IDF越大,则说明词条具有很好的类别区分能力。
IDF=log(语料库文档总数/(含该词条的文档数+1))

2.4 TF-IDF

TF-IDF倾向于过滤掉常见的词语,保留重要的词语。TF-IDF越高,越重要。
TF -IDF = 词频(TF)x 逆文档频率(IDF)

2.5 函数导入

python">from sklearn.feature_extraction.text import TfidfVectorizer

2.6 方法

  • tfi =TfidfVectorizer()引用函数
  • tfi.fit_transform(words),按顺序获取文章词汇的TF-IDF
  • tfi.get_feature_names_out(),按顺序切分的文章词汇

3 实际测试


3.1 问题解析

数据如下,其中一行为一篇文章,词汇顺序非文章顺序,而是词汇排列顺序。
在这里插入图片描述

3.2 代码测试

代码展示:

python">import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizerf = open('task2_1.txt')
words = f.readlines()tfi =TfidfVectorizer()
tfi_words = tfi.fit_transform(words)
print(tfi_words)
wordslist = tfi.get_feature_names_out()
print(wordslist)
df = pd.DataFrame(tfi_words.T.todense(),index=wordslist)
print(df)
featurelist = df.iloc[:,5].to_list()res = {}
for i in range(0,len(wordslist)):res[wordslist[i]] = featurelist[i]
res = sorted(res.items(),key=lambda x:x[1],reverse=True)
print(res)
print(res[2])

运行结果:

在这里插入图片描述


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

相关文章

Web后端开发总结(day14)

Web后端开发总结 web后端开发现在基本上都是基于标准的三层架构进行开发的,在三层架构当中,Controller控制器 层负责接收请求响应数据,Service业务层负责具体的业务逻辑处理,Dao数据访问层也叫持久层, 就是用来处理数据…

MyBatis深入了解

目录 xml 映射文件中,除了常见的select、insert、update、delete 标签之外,还有哪些标签? Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗? MyBatis 是如何进行分页的?分页插件的原理是什么? 简述 …

sql正则表达

MySQL中的正则表达式使用REGEXP关键字来指定匹配模式。常见的正则表达式符号包括: .:匹配任意单个字符 ^:匹配字符串的开始位置 $:匹配字符串的结束位置 *:匹配前面的字符或字符集出现零次或多次 :匹配前面…

【漫话机器学习系列】044.热点对特性的影响(Effect Of One Hot On Feature Importance)

热点对特性的重要性影响(Effect of One-Hot Encoding on Feature Importance) 一热编码(One-Hot Encoding) 是处理类别型数据的常用方法,将每个类别特征转换为一组独立的二进制特征。这种方法在提高模型处理非数值数据…

云端 IPv4 VRRP+MSTP多备份组配置实验

SW3和SW4作为核心交换机,SW1和SW2分别有两条链路可做冗余链路连接到核心交换机上。 1、把SW3和SW4配置vrrp虚拟路由器冗余协议,把两台路由器虚拟成一台路由器 2、创建两个备份组,备份组一的虚拟ip做pc6的网关,备份组二的虚拟ip做…

C++ 位运算符 [学习笔记]

在C中&#xff0c;进位符<<和>>是位运算符&#xff0c;它们用于处理二进制数据&#xff0c;特别是在底层程序设计和嵌入式开发中非常重要。下面我们从基本概念、使用方法、应用场景等方面详细讲解。 1. 基本概念 1.1 << 左移运算符 作用&#xff1a;将二进…

web-app uniapp监测屏幕大小的变化对数组一行展示数据作相应处理

web-app uniapp监测屏幕大小的变化对数组一行展示数据作相应处理 1.uni.getSystemInfoSync().screenWidth; 获取屏幕宽度 2.uni.onWindowResize&#xff08;&#xff09; 实时监测屏幕宽度变化 3.根据宽度的大小拿到每行要展示的数量itemsPerRow 4.为了确保样式能够根据 items…

Gitlab-Runner配置

原理 Gitlab-Runner是一个非常强大的CI/CD工具。它可以帮助我们自动化执行各种任务&#xff0c;如构建、测试和部署等。Gitlab-Runner和Gitlab通过API通信&#xff0c;接收作业并提交到执行队列&#xff0c;Gitlab-Runner从队列中获取作业&#xff0c;并允许在不同环境下进行作…