You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为TextSum(TensorFlow 1.2.1)制作自定义测试数据?

解决TextSum自定义测试数据生成及验证问题

我之前在跑通TextSum(TensorFlow 1.2.1)预训练模型后,也碰到过自定义测试数据卡壳的问题,折腾了好一阵才搞定。下面是我亲测有效的方案,你可以照着试试:

一、先对齐自定义数据的格式规范

TextSum对输入数据的格式要求很严格,必须和原始CNN/每日邮报数据集的结构匹配:

  • 每篇内容要区分正文和目标摘要,原始数据集用@highlight作为分隔符,你可以沿用这个标记,或者自定义一个(比如===SUMMARY_START===),但后续代码要对应修改
  • 正文和摘要都要做基础文本清洗:统一小写、去除无效特殊字符、拆分过长句子(参考原始数据的句子长度,尽量控制单句在50词以内)
  • 避免出现大量预训练词汇表(vocab.txt)外的生僻词,否则模型会把它们替换成<UNK>,严重影响摘要效果

二、修改make_datafiles.py的核心逻辑

你之前改代码没解决问题,大概率是没触碰到关键环节,这里给你明确要调整的几个点:

  1. 替换数据源路径:找到代码中读取CNN/DM原始数据的变量(比如cnn_stories_dir、dm_stories_dir),把路径改成你的自定义数据文件夹路径,确保代码能遍历到所有自定义的正文-摘要文件
  2. 适配分隔符逻辑:如果你的自定义数据没用@highlight分隔正文和摘要,要修改识别摘要的判断语句。比如把原来的if line.startswith('@highlight')改成你自定义的标记判断,比如if line.startswith('===SUMMARY_START===')
  3. 兼容词汇表:在代码中加入OOV(未登录词)处理逻辑:遍历自定义数据的词汇,把不在vocab.txt里的低频词直接替换成<UNK>;如果高频词不在词汇表中,可以手动把它添加到vocab.txt末尾(注意不要打乱原有词汇的顺序)
  4. 调整bin文件生成参数:找到代码中生成test.bin的部分,确保自定义数据被正确划分到测试集;同时检查max_enc_steps(编码器最大输入长度)和max_dec_steps(解码器最大输出长度),要和预训练模型的参数一致(比如原始模型常用400和100)

三、验证生成的bin文件有效性

生成自定义test.bin后,先别急着喂给模型,做个小验证:

  • 用TextSum自带的data_utils.py中的读取函数(比如read_bin)加载test.bin,打印3-5个样本,检查正文和摘要是否对应正确、格式有没有乱码
  • 核对样本的长度是否符合设置的max_enc_steps和max_dec_steps,避免出现截断或溢出的情况

四、测试模型时的参数对齐

运行测试脚本(比如run_eval.py)时,必须保证参数和预训练模型完全匹配:

  • 指定正确的vocab_path(就是预训练用的vocab.txt路径)
  • 设置和训练时一致的beam_size( beam搜索的大小)、batch_size等参数
  • 如果自定义数据的平均长度和CNN/DM差异较大,可以微调max_enc_steps,但不要偏离原始参数太多,否则模型会出现兼容性问题

内容的提问来源于stack exchange,提问作者KRW4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:09:49