文章目录
- 一、什么是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进行关键词提取!