当前位置: 首页 > news >正文

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

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 代码测试

1 jieba


1.1 简介

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

1.2 终端下载

pip install jieba

1.3 基本语法

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

代码展示:

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 函数导入

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 代码测试

代码展示:

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.lryc.cn/news/518744.html

相关文章:

  • 探索式测试
  • 服务器数据恢复—raid5故障导致上层ORACLE无法启动的数据恢复案例
  • ISP各模块功能介绍
  • Python 数据建模完整流程指南
  • 深入学习RocketMQ
  • 国产编辑器EverEdit - 扩展脚本:关闭所有未修改文档
  • 数据结构二叉树-C语言
  • Python基于YOLOv8和OpenCV实现车道线和车辆检测
  • 代码随想录算法训练营第六十天|KM94.城市间货物运输Ⅰ|KM95.城市间货物运输Ⅱ|KM96.城市间货物运输Ⅲ
  • 人工智能学习路线全链路解析
  • C++语言的学习路线
  • 用于与多个数据库聊天的智能 SQL 代理问答和 RAG 系统(3) —— 基于 LangChain 框架的文档检索与问答功能以及RAG Tool的使用
  • 20250110doker学习记录
  • MPU6050: 卡尔曼滤波, 低通滤波
  • C++的标准和C++的编译版本
  • python学习笔记—17—数据容器之字符串
  • UE5 使用内置组件进行网格切割
  • 51单片机——串口通信(重点)
  • Taro+Vue实现图片裁剪组件
  • PHP民宿酒店预订系统小程序源码
  • Hadoop3.x 万字解析,从入门到剖析源码
  • VUE3 常用的组件介绍
  • deepin-Wine 运行器合并打包器和添加从镜像提取 DLL 的功能
  • [大模型]本地离线运行openwebui+ollama容器化部署
  • 再次梳理ISP的大致流程
  • HBuilderX打包ios保姆式教程
  • 《解锁鸿蒙系统AI能力,开启智能应用开发新时代》
  • rhcsa练习(3)
  • 科研绘图系列:R语言绘制Y轴截断分组柱状图(y-axis break bar plot)
  • 跳出技术陷阱,探索财富自由的多元路径