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

如何用巴西葡语法律自定义数据集训练FLAN-T5完成摘要任务?

基于FLAN-T5训练巴西葡萄牙语法律文本摘要模型的实现步骤

一、数据预处理

  • 配对与格式转换:将每份诉状文本和对应的摘要一一配对,整理成CSV或JSONL格式,每条数据包含input_text(诉状内容)和target_text(摘要内容)。确保文件名对应(比如complaint_0001.txt对应summary_0001.txt),用Python批量读取并生成结构化数据集。
  • 文本清洗:去除法律文本中的冗余格式(多余换行、空格、页眉页脚),统一编码为UTF-8避免乱码。可通过正则表达式re.sub(r'\s+', ' ', text)合并多余空格,用strip()清理首尾空白。
  • 数据集划分:按8:1:1的比例将2000对数据划分为训练集、验证集和测试集,确保三组数据的法律文本类型分布均衡,避免数据泄露。

二、环境与依赖准备

安装Hugging Face生态的核心依赖库:

pip install transformers datasets evaluate accelerate sentencepiece

选择基础模型:优先使用google/flan-t5-base(资源有限可选google/flan-t5-small,追求效果用google/flan-t5-large),FLAN-T5的多语言能力可直接适配葡萄牙语法律文本任务。

三、模型微调

  1. 加载数据集
    用datasets库加载本地结构化数据:

    from datasets import load_dataset
    dataset = load_dataset("csv", data_files="legal_summarization_data.csv")
    

    或从Pandas DataFrame转换:

    from datasets import Dataset
    import pandas as pd
    df = pd.read_csv("legal_summarization_data.csv")
    dataset = Dataset.from_pandas(df)
    
  2. 分词与格式化
    FLAN-T5依赖任务提示词提升效果,对输入文本添加summarize: 前缀,然后进行分词处理:

    from transformers import AutoTokenizer
    model_name = "google/flan-t5-base"
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    
    def preprocess_function(examples):
        inputs = [f"summarize: {text}" for text in examples["input_text"]]
        model_inputs = tokenizer(inputs, max_length=1024, truncation=True, padding="max_length")
        labels = tokenizer(text_target=examples["target_text"], max_length=150, truncation=True, padding="max_length")
        model_inputs["labels"] = labels["input_ids"]
        return model_inputs
    
    tokenized_dataset = dataset.map(preprocess_function, batched=True)
    
  3. 配置训练参数
    设置训练的核心参数,根据GPU显存调整批量大小:

    from transformers import Seq2SeqTrainingArguments, Seq2SeqTrainer
    training_args = Seq2SeqTrainingArguments(
        output_dir="./flan-t5-legal-summarizer",
        per_device_train_batch_size=4,
        per_device_eval_batch_size=4,
        num_train_epochs=4,
        logging_steps=10,
        evaluation_strategy="epoch",
        save_strategy="epoch",
        learning_rate=2e-5,
        weight_decay=0.01,
        predict_with_generate=True,
        fp16=True  # 启用混合精度训练,加速训练过程
    )
    
  4. 添加评估指标
    用ROUGE指标评估摘要质量:

    import evaluate
    import numpy as np
    rouge = evaluate.load("rouge")
    
    def compute_metrics(eval_pred):
        predictions, labels = eval_pred
        decoded_preds = tokenizer.batch_decode(predictions, skip_special_tokens=True)
        labels = np.where(labels != -100, labels, tokenizer.pad_token_id)
        decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=True)
        result = rouge.compute(predictions=decoded_preds, references=decoded_labels, use_stemmer=True)
        return {k: round(v * 100, 2) for k, v in result.items()}
    
  5. 启动训练
    初始化训练器并开始训练:

    from transformers import AutoModelForSeq2SeqLM
    model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
    
    trainer = Seq2SeqTrainer(
        model=model,
        args=training_args,
        train_dataset=tokenized_dataset["train"],
        eval_dataset=tokenized_dataset["validation"],
        tokenizer=tokenizer,
        compute_metrics=compute_metrics
    )
    
    trainer.train()
    

四、推理与测试

加载微调后的模型,对新的法律诉状生成摘要:

model = AutoModelForSeq2SeqLM.from_pretrained("./flan-t5-legal-summarizer/checkpoint-best")
tokenizer = AutoTokenizer.from_pretrained("./flan-t5-legal-summarizer/checkpoint-best")

def generate_summary(complaint_text):
    input_text = f"summarize: {complaint_text}"
    inputs = tokenizer(input_text, return_tensors="pt", max_length=1024, truncation=True).to("cuda")
    outputs = model.generate(**inputs, max_new_tokens=150, num_beams=4, early_stopping=True)
    return tokenizer.decode(outputs[0], skip_special_tokens=True)

# 测试示例
sample_complaint = open("test_complaint.txt", "r", encoding="utf-8").read()
print(generate_summary(sample_complaint))

关键注意事项

  • GPU资源:若无GPU,可使用CPU训练但速度极慢,优先选择带CUDA的GPU(如Colab免费GPU)。
  • 过拟合防控:若验证集ROUGE指标持续下降,可设置early_stopping_patience=2提前终止训练,或降低训练轮数。
  • 提示词优化:若效果未达预期,可将提示词改为更明确的法律场景描述,比如"summarize the legal complaint in Brazilian Portuguese: " + input_text。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:20:39