基于固定单词数量分割
任务:当我们需要数据预处理时,会把一篇文章比如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.