你现在使用的 UNIMO 项目(PaddlePaddle/Research/NLP/UNIMO),默认是做英文摘要任务,如你在 README 中看到的数据集是 CNN/DailyMail
,它是一个 英文摘要数据集。不过,这个项目的架构完全支持中文,只是你需要替换数据集和 tokenizer。
✅ 回答你的问题
🔹Q1:这个项目可以进行中文文本摘要吗?
可以,但你需要 改成中文数据集(如 LCSTS)+ 使用中文 tokenizer + 加载中文预训练模型 unimo-text-1.0-summary
。
🧭 正确使用 UNIMO 做中文摘要的操作指南
下面是你需要完成的几步改造:
✅ 1️⃣ 数据集替换(英文 → 中文)
原项目 | 你要替换为 |
---|---|
CNN/DailyMail(英文) | LCSTS(中文新闻摘要)或你自有数据集 |
推荐数据集:LCSTS
- 中文短文本摘要标准数据集(来源于新浪微博)
- 下载地址(含 json 格式):https://github.com/brightmart/nlp_chinese_corpus/tree/master/LCSTS
你也可以准备如下格式的自有数据:
{"src": "原始文本", "tgt": "摘要内容"}
✅ 2️⃣ 修改数据加载逻辑(reader/cnndm.py
)
- 改为读取你的 LCSTS 或自定义数据集
- 中文不需要 tokenization(BPE 等),使用
jieba
或spm
(sentencepiece)分词器 - 示例(简化):
def read_lcsts(path):with open(path, "r", encoding="utf8") as f:for line in f:data = json.loads(line.strip())yield {"src": data["src"], "tgt": data["tgt"]}
✅ 3️⃣ 更换预训练模型(英文 → 中文 UNIMO)
项目原本加载的是 unimo-text-1.0
(英文),你要换成中文版本:
from paddlenlp.transformers import UNIMOTokenizer, UNIMOForConditionalGenerationtokenizer = UNIMOTokenizer.from_pretrained("unimo-text-1.0-summary")
model = UNIMOForConditionalGeneration.from_pretrained("unimo-text-1.0-summary")
然后模型就可以用于生成中文摘要。
✅ 4️⃣ 修改训练脚本和配置文件
路径:script/seq2seq/cnndm/run.sh
你需要将 --dataset cnndm
替换为你自己的 dataset 名(假设叫 lcs),并创建对应数据读取文件如 reader/lcs.py
python -u ./run_seq2seq.py \--dataset lcs \--model_name_or_path unimo-text-1.0-summary \...
✅ 5️⃣ 评估脚本可参考 rouge_chinese 实现
由于原 eval_script
是英文版的 ROUGE,你可以使用中文支持的 Rouge 脚本:
pip install rouge-chinese
或使用 Huggingface 的 evaluate
模块:
from rouge_chinese import Rouge
rouge = Rouge()
scores = rouge.get_scores(hypothesis, reference)
✅ 示例结构改造
UNIMO/
├── reader/
│ └── lcs.py # 你新建的中文 reader
├── script/
│ └── seq2seq/
│ └── lcs/
│ └── run.sh # 训练脚本
├── data/
│ └── lcs/
│ ├── train.jsonl
│ ├── dev.jsonl
│ └── test.jsonl
✅ 总结:你要做的 3 件关键事
- ✅ 替换数据集:从 CNN → 中文 LCSTS
- ✅ 替换模型:从英文模型 →
unimo-text-1.0-summary
- ✅ 训练脚本改造:重写 reader.py 和 run.sh,对应你自己的数据格式
✅ Bonus(如果你时间紧)
如果你希望我直接帮你生成一个:
- ✅ 基于 UNIMO 的中文摘要项目结构(适配 LCSTS)
- ✅ 完整中文训练脚本(run.sh)
- ✅ 中文 ROUGE 评估脚本
直接告诉我:“请生成 UNIMO 中文摘要项目模板”,我可以全部打包好给你。你只需跑 bash run.sh
就能启动中文训练。是否继续?