如何拆分长评论文本生成多行数据集适配预训练NLP模型
长评论拆分实现方案
针对长评论触发模型输入长度限制的问题,可通过以下Python代码实现按约450字符拆分文本,同时保留原评论ID生成多行数据:
实现步骤
1. 导入依赖库
import pandas as pd import re
2. 定义文本拆分函数
这个函数会尽量在句子边界(句号、感叹号、问号后)拆分文本,避免生硬截断句子,同时控制每段长度接近450字符:
def split_text(text, target_len=450): # 用句子分隔符分割文本,保留分隔符 sentences = re.split('([.!?])', text) # 重组完整句子(分隔符+前面的内容) full_sentences = [''.join(i) for i in zip(sentences[::2], sentences[1::2])] # 处理最后一段可能没有分隔符的情况 if len(sentences) % 2 != 0: full_sentences.append(sentences[-1]) chunks = [] current_chunk = '' for sentence in full_sentences: # 如果当前块加新句子超过目标长度,就把当前块加入列表 if len(current_chunk) + len(sentence) > target_len and current_chunk: chunks.append(current_chunk.strip()) current_chunk = sentence else: current_chunk += ' ' + sentence # 加入最后一块 if current_chunk: chunks.append(current_chunk.strip()) return chunks
3. 处理数据集
假设你的数据集存储在CSV文件中,或者已经是pandas.DataFrame对象:
# 读取原数据集(示例,根据实际情况调整) df = pd.read_csv('your_dataset.csv') # 应用拆分函数,生成包含ID和拆分后文本的列表 expanded_data = [] for _, row in df.iterrows(): comment_id = row['评论ID'] text_chunks = split_text(row['文本']) for chunk in text_chunks: expanded_data.append({'评论ID': comment_id, '文本': chunk}) # 转换为新的DataFrame expanded_df = pd.DataFrame(expanded_data) # 保存结果(可选) expanded_df.to_csv('expanded_dataset.csv', index=False)
说明
- 函数优先按句子拆分,保证每段文本语义完整,长度接近450字符;
- 拆分后的每一行都会保留原评论ID,完全匹配你需要的数据集结构;
- 若不需要按句子拆分,可直接按字符数硬拆分(但会破坏语义,不推荐),修改函数为按固定长度切割即可。
内容的提问来源于stack exchange,提问作者Stuck
相关产品推荐
相关产品推荐

