pypdf2+nltk数据预处理:基于句子切分文本数据,而不是基于固定单词数量分割。nltk报错:<urlopen error [Errno 111] Connection [nltk_data]

基于固定单词数量分割

任务:当我们需要数据预处理时,会把一篇文章比如pdf格式的,以每200 words为单位进行分割为样本数据,每个样本数据都是200个words。

缺点:很多样本数据上下文信息不完整。

基于句子切分

原理:首先每次添加一个句子,并判断添加句子后单词总数量是否超过了 200。若没有超过继续添加下一个句子,否则直接结束并保存到样本数据集里面。

优点:每个样本数据都是完整的几个句子,上下文信息保存得很完整。

pypdf2+nltk共同努力

使用pypdf2加载pdf数据,以nltk工具实现基于句子分割,而不是单纯的以200words分割导致的上下文信息不完整。


import csv
from tqdm import tqdm
from PyPDF2 import PdfReader
import nltk
nltk.download('punkt')
from nltk.tokenize import sent_tokenize, word_tokenize

# PDF 文件路径
pdf_path = "./data/shakespeare.pdf"

# 输出文件路径
output_txt_path = "./data/shakespeare_samples_nltk.txt"
output_csv_path = "./data/shakespeare_samples_nltk.csv"

# 提取指定页码范围内的文本
def extract_text_from_pdf(pdf_path, start_page, end_page):
    """
    从 PDF 提取指定页码范围的文本
    """
    text = ""
    reader = PdfReader(pdf_path)
    for page_num in tqdm(range(start_page - 1, end_page), desc="提取指定页码范围内的文本"):  # 页码从0开始
        page = reader.
这个问题可能会出现在使用NLTK自然语言处理工具包)时,其中`punkt`模块无法加载的情况下。出现这个问题的原因可能是您的计算机无法建立与NLTK服务器的连接。 解决这个问题的方法如下: 1. 检查网络连接:首先,请确保您的计算机可以访问互联网并有稳定的网络连接。您可以尝试通过打开其他网页来测试您的网络连接。 2. 更新NLTK:联网状态下,可以尝试更新NLTK以解决问题。打开Python解释器,运行以下命令来更新NLTK: ```python import nltk nltk.download() ``` 这将打开一个图形界面,在其中选择“punkt”模块并进行下载。 3. 使用其他镜像源:在某些情况下,可能是因为使用默认的NLTK服务器下载失败。您可以尝试更改使用其他镜像源。在Python的代码中,您可以添加以下代码: ```python import nltk nltk.set_proxy('http://proxy.example.com:3128') # 使用您的代理设置 nltk.download() ``` 将`proxy.example.com`和`3128`替换为实际的代理设置。 4. 手动下载:如果以上方法都无法解决问题,您可以手动下载所需的模块文件。打开以下链接:https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip 将下载的压缩文件解压缩,并将解压缩后的文件夹放在您的Python环境下的`nltk_data/tokenizers/`目录下。然后在您的代码中导入`nltk`并手动设置`data_path`: ```python import nltk nltk.data.path.append('/path/to/nltk_data/') ``` 将`/path/to/nltk_data/`替换为您解压缩的文件夹的路径。 通过这些步骤,您应该能够解决NLTK加载`punkt`模块时出现的连接错误。如果问题仍然存在,建议参考相关文档或在NLTK的讨论论坛上寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值