欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > 使用jieba库进行TF-IDF关键词提取

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

2025/4/2 6:20:27 来源:https://blog.csdn.net/zdx2585503940/article/details/146780848  浏览:    关键词:使用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进行关键词提取!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词