自然语言处理NLP 03案例——提取小说红楼梦各卷关键词TOP10

如下图,是红楼梦的本文小说,现在我们要提取出红楼梦每卷排名前十的关键词

为了更顺利的完成要求,我们将任务拆解为以下四个节点

  1. 将这个文件中上下卷共120卷拆分开,每一卷内容保存为一个新的文本文件,文件名是相应卷名 ,所有卷放入文件夹 .\红楼梦

  2. 打印出每卷地址与内容

  3. 对每一卷进行分词

  4. 计算TF-IDF值,保存每卷TOP10关键词

(快速跳转) 

                          拆分红楼梦120卷并另存

打印分卷地址与内容

对每一卷进行分词

计算TF-IDF值并保存每卷中top10关键词


拆分红楼梦120卷并另存

步骤:

  1. 按卷分割文件

    • 代码通过检测每一行是否包含 卷 第,来判断是否需要开始一个新的分卷文件。

    • 每个分卷文件以卷名命名,并保存在 红楼梦分卷 目录下。

  2. 初始文件

    • 代码会先创建一个临时文件 红楼梦开头.txt,用于保存尚未分卷的内容。

    • 如果发现 卷 第 后,会关闭临时文件,并开始按卷保存内容。

  3. 文件路径

    • 使用 os.path.join 生成分卷文件的完整路径,确保路径跨平台兼容。

  4. 文件操作

    • 使用 open() 打开文件,write() 写入文件,close() 关闭文件。

代码:

import os
​
# 打开《红楼梦》的原始文本文件,指定编码为utf-8
file = open('红楼梦.txt', encoding='utf-8')
# 设置一个标志变量flag,用于判断是否需要创建新的分卷文件
flag = 0
# 打开一个临时文件'红楼梦开头.txt',用于保存未分卷的内容
chapter_file = open('.\红楼梦开头.txt', 'w', encoding='utf-8')
​
# 逐行读取《红楼梦》的原始文件
for line in file:
    # 检查当前行是否包含“卷 第”,这是分卷的标志
    if '卷 第' in line:
        # 提取卷名,并去掉空白字符,生成分卷文件的名称
        chapter_name = line.strip() + '.txt'
        # 生成分卷文件的完整路径,保存在`红楼梦分卷`目录下
        path = os.path.join('.\\红楼梦分卷\\', chapter_name)
        print(path)  # 打印分卷文件的路径
        # 如果flag为0,表示这是第一个分卷,直接创建并写入文件
        if flag == 0:
            chapter_file = open(path, 'w', encoding='utf-8')
            flag = 1  # 将flag置为1,表示已开始分卷
        else:
            # 如果flag不为0,表示之前已经有分卷文件了,先关闭当前文件
            chapter_file.close()
            # 再创建一个新的分卷文件
            chapter_file = open(path, 'w', encoding='utf-8')
        # 跳过本行,不将分卷标志行写入分卷文件
        continue
    # 将当前行写入分卷文件
    chapter_file.write(line)
# 循环
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值