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

jieba分词和TF-IDF分析

目录

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

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 TfidfVectorizer

f = 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])

运行结果:

相关推荐
Amo Xiang6 分钟前
Python 常用模块(八):logging模块
python·logging·日志
顾子茵7 分钟前
c++从入门到精通(四)--动态内存,模板与泛型编程
java·开发语言·c++
森哥的歌7 分钟前
Python多线程
python·编程·多线程·并发·threading
电信2301杨臣23 分钟前
QT---信号与槽
开发语言·qt
明月看潮生29 分钟前
青少年编程与数学 02-019 Rust 编程基础 07课题、字符串
开发语言·青少年编程·rust·编程与数学
抽风的雨61030 分钟前
【python基础知识】Day26 函数
开发语言·python
是麟渊39 分钟前
【大模型面试每日一题】Day 17:解释MoE(Mixture of Experts)架构如何实现模型稀疏性,并分析其训练难点
人工智能·自然语言处理·面试·职场和发展·架构
编程有点难1 小时前
Python训练打卡Day22
开发语言·python·机器学习
天机️灵韵1 小时前
字节开源FlowGram与n8n 技术选型
人工智能·python·开源项目
兮兮能吃能睡2 小时前
Python之with语句
数据库·python