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

使用jieba库进行TF-IDF关键词提取

文章目录

  • 一、什么是TF-IDF?
  • 二、为什么选择jieba库?
  • 三、代码实现
    • 1.导入必要的库
    • 2. 读取文件
    • 3.将文件路径和内容存储到DataFrame
    • 4.加载自定义词典和停用词
    • 5.分词并去除停用词
  • 四、总结

一、什么是TF-IDF?

TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用的文本挖掘技术,用于评估一个词在文档中的重要程度。它由两部分组成:

  • 词频(TF):一个词在文档中出现的频率
  • 逆文档频率(IDF):衡量该词在所有文档中的普遍重要性

TF-IDF值越高,表示该词在当前文档中的重要性越高。

二、为什么选择jieba库?

jieba是一个优秀的中文分词库,具有以下特点:

  • 支持三种分词模式

  • 支持自定义词典

  • 高效的词性标注功能

  • 内置TF-IDF关键词提取功能

  • 轻量级且易于使用

三、代码实现

1.导入必要的库

import pandas as pd
import os
import jieba
  • pandas:用于数据处理和分析。
  • os:用于与操作系统交互,如遍历目录和文件。
  • jieba:一个流行的中文分词库。

2. 读取文件

filePaths = []
fileContents = []
for root, dirs, files in os.walk(r"./红楼梦/分卷"):
    for name in files:
        filePath = os.path.join(root, name)  # 获取每个分卷的路径
        print(filePath)
        filePaths.append(filePath)  # 卷文件路径添加刀列表filePaths中
        f = open(filePath, 'r', encoding='utf-8')
        fileContent = f.read() # 读取每一卷中文件的内容
        f.close()
        fileContents.append(fileContent)
  • 遍历列表:使用os.walk遍历指定目录下的所有文件和子目录。
  • 获取内容:对于每个文件,获取其完整路径(filePath),并读取文件内容(fileContent)。
  • 添加文件内容:将文件路径和内容分别添加到两个列表(filePaths和fileContents)中。

3.将文件路径和内容存储到DataFrame

corpos = pd.DataFrame({   # 将文件内容添加到DataFrame框架
    'filePath': filePaths,
    'fileContent': fileContents
})
  • 使用pandas.DataFrame创建一个新的DataFrame(corpos),其中包含两列:filePath和fileContent。这使得后续的数据处理(如分词和去除停用词)可以更方便地通过行迭代进行。

4.加载自定义词典和停用词

jieba.load_userdict(r"./红楼梦/红楼梦词库.txt")
stopwords = pd.read_csv(r"./红楼梦/StopwordsCN.txt",
                        encoding='utf-8', engine='python', index_col=False)
  • 使用jieba.load_userdict加载自定义的《红楼梦》词库,以提高分词的准确性。
  • 使用pandas.read_csv读取停用词列表,并存储在stopwords中。注意,这里StopwordsCN.txt文件中有一个名为stopword的列,包含了所有的停用词。

5.分词并去除停用词

file_to_jieba = open(r"./红楼梦/分词后汇总.txt", 'w', encoding='utf-8')
for index, row in corpos.iterrows():
    juan_ci = ''
    filePath = row['filePath']
    fileContent = row['fileContent']
    segs = jieba.cut(fileContent) # 对文本内容进行分词,返回一个可遍历的迭代器
    for seg in segs:
        if seg not in stopwords.stopword.values and len(seg.strip()) > 0: # 剔除停用词和字符为0的内容
            juan_ci += seg + ' '
    file_to_jieba.write(juan_ci + '\n')
file_to_jieba.close()
  • 分词:遍历corpos的每一行,对每行的fileContent进行分词。对于分词结果中的每个词,检查它是否不在停用词列表中,并且不是空字符串。如果满足条件,则将该词添加到juan_ci字符串中,并在词之间添加空格作为分隔符。
  • 保存结果:将每个文件处理后的文本写入到新的文件中,每个文件的处理结果占一行。

四、总结

jieba库提供的TF-IDF关键词提取功能简单易用但功能强大,适合大多数中文文本处理场景。通过合理设置参数和使用自定义资源,可以进一步提高提取效果。

希望这篇博客能帮助你更好地使用jieba进行关键词提取!

相关文章:

  • 深入解析C++继承机制:从基础到多态实现
  • C++ STL常用算法之常用集合算法
  • 从零构建大语言模型全栈开发指南:第三部分:训练与优化技术-3.3.2参数高效微调:LoRA与适配器(Adapter)技术
  • 子网划分浅度解析
  • Kotlin基础知识学习(五)
  • Set,Map,WakeSet,WakeMap
  • 虚拟pinctrl驱动
  • ZGC初步了解
  • 【小技巧】如何查看容器的启动参数
  • Java 大视界 -- Java 大数据在智能电网电力市场交易数据分析与策略制定中的关键作用(162)
  • C++中的搜索算法实现
  • Chapters 15 16:What Is Architecture?Independence_《clean architecture》notes
  • 百人会上的蔚小理与「来的刚刚好」的雷军
  • 关于参加CSP-J/S认证需符合年龄条件的公告(2025年起)
  • Python PDF解析利器:pdfplumber | AI应用开发
  • 【什么是机器学习——多项式逼近】
  • 多线程 - 线程安全 2 -- > 死锁问题
  • snort检测端口扫描工具
  • AI基础03-视频数据采集
  • SpringBoot 概述