PaddleNLP icon indicating copy to clipboard operation
PaddleNLP copied to clipboard

[Question]: 训练好的pp-uie0.5B模型只能抽取开头到一半,抽取不到结尾的文字。

Open anxiangyi opened this issue 9 months ago • 7 comments

请提出你的问题

我这边使用训练好的pp-uie0.5B模型,发现从合同中信息抽取出来的文字之后开头,结尾部分文字没有抽取出来,请问这是什么原因呢,这是我返回的数据

[{'合同启动时间': [{'text': '开工日期:以建设单位开工令为准。'}],
  '合同回款条款': [{'text': '6.3.1分包工程的价款支付,采取按月进度款支付,工程峻 '
                      '工验收合格后进行最终结算的方法。,6.3.2甲方在收到建设单位关于冻结专业工程款项10'}],
  '合同期限': [{'text': '总工期日历天数:410天;其中:造孔、安装、积极冻 结期205天,维护冻结期205天。'}],
  '合同结束时间': [{'text': '无相应实体'}],
  '合同编号': [{'text': '无相应实体'}],
  '合同质保金条款': [{'text': '6.3.3工程竣工验收合格后出具结算单,乙方开具发票, '
                       '甲方收到发票后将结算金额的3%作为质量保证金,其余款项一 次结清。质保期满无任何质量问题或'}],
  '合同金额': [{'text': '总包合同中冻结专业工程金额为人民币叁仟陆佰肆拾叁万柒仟肆佰壹 '
                    '拾柒元整(小写:¥36437417元),甲乙双方商定该'}]}]

anxiangyi avatar Mar 31 '25 08:03 anxiangyi

你好文本的长度大概多少?结尾部分文字没有抽取出来 这个指的是 '合同结束时间': [{'text': '无相应实体'}], '合同编号': [{'text': '无相应实体'}], 吗?

ZHUI avatar Apr 01 '25 02:04 ZHUI

你好文本的长度大概多少?结尾部分文字没有抽取出来 这个指的是 '合同结束时间': [{'text': '无相应实体'}], '合同编号': [{'text': '无相应实体'}], 吗?

文本长度大概800多字

 2.3工程内容:以总包合同中约定的冻结专业工程内容为基 础,包括冻结措施工程所包含的一切工作、工序(井筒净径3米, 冻结深度5630米)。 

第3条分包合同价款 
总包合同中冻结专业工程金额为人民币叁仟陆佰肆拾叁万柒仟肆佰壹 拾柒元整(小写:¥36437417元),甲乙双方商定该专业分包工程的最终结 算价款为甲方按照建设单位结算价款的97%支付给乙方(3%为甲方的现场管 理费用)。 双方约定合同价款的调整因素:执行总包合同中价款调整的规定。 

第4条合同工期 
4.1总工期日历天数:410天;其中:造孔、安装、积极冻 结期205天,维护冻结期205天。 开工日期:以建设单位开工令为准。 4.2严格按照建设单位批复的整体网络计划节点控制。 

第5条质量标准 
本工程质量标准为:合格,执行总包合同标准。 

第6条分包工程结算与价款支付 
6.1结算 6.1.1乙方结算执行:按照建设单位审批结算金额和本合同 约定结算。因乙方原因导致的各种奖罚,均归乙方承担。 
6.2工程量的确认 工程量的确认以乙方实际完成的经建设单位或监理工程师签 认的合同工程量为准,作为工程的结算依据,建设单位或监理工 程师未予鉴证认可的工程量,不予计量,也不予以计算工程价款。
6.3分包合同价款支付 
6.3.1分包工程的价款支付,采取按月进度款支付,工程峻 工验收合格后进行最终结算的方法。 
6.3.2甲方在收到建设单位关于冻结专业工程款项10日 内,按甲乙双方确定的月度工程进度款足额拨付给乙方。甲方支 付进度款前,乙方需提供相应的建筑业发票。 
6.3.3工程竣工验收合格后出具结算单,乙方开具发票, 甲方收到发票后将结算金额的3%作为质量保证金,其余款项一 次结清。质保期满无任何质量问题或缺陷已经得到修复后28天 内支付剩余款项。 
6.3.4质量保修金不计利息,保修责任及期限执行国家现行 质量缺陷保修办法(按申方与建设单位签订的总包合同执行)。 

第7条工期要求 
7.1乙方编制施工方案、进度网络图、现场管理规划、并经 监理工程师审核、建设单位批准的《施工总体进度计划》要求执行。


这是例子里的合同内容

合同回款条款应该是抽取的是:
6.3.1分包工程的价款支付,采取按月进度款支付,工程峻 工验收合格后进行最终结算的方法。 6.3.2甲方在收到建设单位关于冻结专业工程款项10日 内,按甲乙双方确定的月度工程进度款足额拨付给乙方。甲方支 付进度款前,乙方需提供相应的建筑业发票。

合同质保金条款应该抽取的是:
6.3.3工程竣工验收合格后出具结算单,乙方开具发票, 甲方收到发票后将结算金额的3%作为质量保证金,其余款项一 次结清。质保期满无任何质量问题或缺陷已经得到修复后28天 内支付剩余款项。

但是目前这几项都是只抽取了一半信息

anxiangyi avatar Apr 01 '25 04:04 anxiangyi

你好文本的长度大概多少?结尾部分文字没有抽取出来 这个指的是 '合同结束时间': [{'text': '无相应实体'}], '合同编号': [{'text': '无相应实体'}], 吗?

{
    "model_name_or_path": "paddlenlp/PP-UIE-0.5B",
    "dataset_name_or_path": "./application/information_extraction/data",
    "output_dir": "./checkpoints/ie_ckpts",
    "per_device_train_batch_size": 5,
    "gradient_accumulation_steps": 1,
    "per_device_eval_batch_size": 2,
    "eval_accumulation_steps":8,
    "num_train_epochs": 50,
    "learning_rate": 1e-05,
    "warmup_steps": 200,
    "logging_steps": 1,
    "evaluation_strategy": "epoch",
    "save_strategy": "epoch",
    "src_length": 1500,
    "max_length": 2500,
    "fp16": true,
    "fp16_opt_level": "O2",
    "do_train": true,
    "do_eval": true,
    "disable_tqdm": true,
    "load_best_model_at_end": true,
    "eval_with_do_generation": false,
    "metric_for_best_model": "accuracy",
    "recompute": false,
    "save_total_limit": 1,
    "tensor_parallel_degree": 1,
    "pipeline_parallel_degree": 1,
    "sharding": "stage2",
    "zero_padding": false,
    "unified_checkpoint": true,
    "use_flash_attention": false
}

这是按照pp-uie训练教程设置的sft_argument.json参数,请问是因为我的标注问题还是因为参数只有0.5B的原因

anxiangyi avatar Apr 01 '25 04:04 anxiangyi

大概明白你的意思的。应该主要是你的数据 Label的长度非常长,PP-UIE训练的数据的标签相对较短,导致的原因。您这边标注的数据量有多大? 这边建议您,1、换用PP-UIE 7B 更大的模型有更好的泛化性。对长度的微调改变会更容易。2、在0.5B的基础上,继续添加训练数据。

ZHUI avatar Apr 02 '25 03:04 ZHUI

大概明白你的意思的。应该主要是你的数据 Label的长度非常长,PP-UIE训练的数据的标签相对较短,导致的原因。您这边标注的数据量有多大? 这边建议您,1、换用PP-UIE 7B 更大的模型有更好的泛化性。对长度的微调改变会更容易。2、在0.5B的基础上,继续添加训练数据。

好的,我这边看到,我的数据量目前大概是125条数据,第一个可能是因为我这边标注数据有嵌套实体的出现,现在正在修改我的标注数据,继续添加更多的标注数据来进行训练,如果效果还是不理想,我会使用7B的模型来尝试训练(可能硬件跟不上). 还有我想问一下大佬,假如标注的数据文本,比如合同结款条款有很多条连续的文字,比如第十二条这个大段落里面有很多小条如12.1,12.2,12.3等的合同条款,我是应该直接把这一大段都标注上合同结款标签,还是每一条都标注上合同结款标签.

anxiangyi avatar Apr 02 '25 06:04 anxiangyi

还有我想问一下大佬,假如标注的数据文本,比如合同结款条款有很多条连续的文字,比如第十二条这个大段落里面有很多小条如12.1,12.2,12.3等的合同条款,我是应该直接把这一大段都标注上合同结款标签,还是每一条都标注上合同结款标签.

我建议标记短一点,这样可能准确率会高一些。

ZHUI avatar Apr 14 '25 02:04 ZHUI

This issue is stale because it has been open for 60 days with no activity. 当前issue 60天内无活动,被标记为stale。

github-actions[bot] avatar Jun 14 '25 00:06 github-actions[bot]

This issue was closed because it has been inactive for 14 days since being marked as stale. 当前issue 被标记为stale已有14天,即将关闭。

github-actions[bot] avatar Jun 29 '25 00:06 github-actions[bot]