Skip to content

Latest commit

 

History

History
100 lines (68 loc) · 7.09 KB

README_ZH.md

File metadata and controls

100 lines (68 loc) · 7.09 KB

# Easy-Data-Clean-Pipeline

[English|中文]

轻量级中文语料清洗工具包

目录

项目简介

本项目旨在开发一个以中文内容为基础的高质量垂直领域书籍数据集,主要针对使用MinerUPDF转为markdown后的文本清洗过程。根据大语言模型预训练相关论文(C4DolmaRedPajama),书籍数据是质量较高的数据集,并且对下游任务的影响较大。而大多数书籍都以PDF扫描件为主,借助MinerU工具可以将PDF转换成markdown文件,但比较缺乏对书籍类markdown文档进行清洗的管道。

同时本项目还借鉴了CCnetRedPajama的数据质量评分表,衍生出适用于中文文本的质量评估指标。我们期望能够为LLM提供更加丰富针对性强的知识来源,从而提升其在特定领域理解生成能力

技术路线

  • 使用MinerUPDF进行OCR转换为markdown格式,保留PDF中的公式,过滤无关内容(如出版信息、目录、修订说明等),并使用布隆过滤器进行精确的文档级内容去重。
  • 基于数据质量量化表,从3个方面衡量数据(与领域无关):
    1. LLM评价(困惑度等)
    2. NLP特征(文本词的平均长度、文本唯一词出现的比例、停用词占比等)
    3. 机器学习(训练n-gram模型进行重要性采样、minhash去重等)
  • 调用GPT-4 API结合数据质量量化表、相关论文提到的高质量数据集特征(如多样性、无偏性、准确性、逻辑性)和专业领域的相关要求,整合提示词,将数据按0-5分成共6个等级。(考虑到经济性,这个步骤只会使用少量的数据集进行标定,并同时使用人工校准。)
  • 根据GPT-4与人工校对得到的高质量标定数据集训练only-decoder(如Qwen2)分类模型(使用only-decoder模型主要为了避免分词器最大长度以及模型架构带来的计算限制),以实现对后期大量的新样本进行标定。
  • 根据Qwen2分类模型的得分和数据质量量化表选取训练数据,从不同角度测评筛选出的高质量文本能否高效的提升模型在专业领域的适应性(消融实验)。
    • 不同的模型的表现;
    • 不同的质量分数阈值对领域适应性的影响;
    • 权衡模型专业领域的适应性与通用能力。

请注意:上述技术路线并非最终版本,随着项目推进可能会在细节上有调整。

更新日志

[24/11/10]完成LLM文本质量评分管道的搭建,优化文本特征计算管道

我们完成了利用LLM文本质量评分管道的搭建,主要支持ChatGLM4QwenChatGPT4API调用以及开源模型Qwen2.5的调用,同时优化了文本特征计算管道。关于文本质量评分的Prompt,参照了HuggingFaceFW/fineweb-eduBAAI/IndustryCorpus2opencsg/chinese-fineweb-edu-v2的质量评分Prompt,并将提示词分为了更倾向于领域知识的domain类,以及用于通用文本的general类。遵循一贯的作风,所有管道均支持多进程推理。

[24/10/21] 完成文本特征计算管道搭建,优化markdown文件清洗管道

距离上次更新已经过去了1个月,在这1个月中我们完成了特征计算管道搭建,优化了对markdown文件的清洗管道。同时,我们还在HuggingFace上上传了两个分类模型:Qwen2.5-med-book-main-classificationfasttext-med-en-zh-identification。其中,Qwen2.5-med-book-main-classification用于将MinerU转换后的markdown本文进行正文与非正文的分类,相较于通用LLM模型,速度加快10倍,并且对医疗类文本正文与非正文的分类精度更高。fasttext-med-en-zh-identification用于判断文本属于英文还是中文,并给出置信度。具体的数据集构建流程和模型训练细节可以在对应模型HuggingFaceModel card中查看。

本次更新是一次较为重要的更新,除了显性工作(数据的评分管道搭建),我们还对之前的代码进行了很多优化,包括但不仅限于尽可能遵循HuggingFace的代码风格、保证代码一致性、生产环境测试等一系列隐性工作。并且几乎所有功能模块都支持多进程加速,为了edcp库的易用性,我们编写了用户文档,来帮助其他研究者了解和使用edcp库。

[24/09/20] 我们更新了对markdown文件的粗清洗管道

展开日志

非常高兴迎来edcp库的第一次功能更新,本次更新的是对markdown文件的粗清洗管道。

具体的,当我们使用MinerUPDF转换为markdown文件时,会产生很多非正文内容,包括书本简介、出版社信息编写规范等,所以我们尝试使用LLM来进行清洗。

因为内容主要以中文为主,所以我们使用了不久前刚发布的Qwen2.5系列。根据实验,必须使用7B参数量以上的模型才能保证过滤质量,推荐使用14B以上参数量的模型。

我们同时提供了VLLM框架和Transformers框架批推理流程,实测使用VLLM框架比Transformers框架推理速度快2倍。如果没有VLLM框架也不用太过沮丧,因为我们还提供了并行推理,在显存足够的情况下也能进行一定加速。

文件树:

└── edcp
  ├── mdclean
      ├── __init__.py
      └── LLMFilter.py
      └── VLLMFilter.py
      └── charreplace.py
      └── pipelines.py
      └── template.py
      └── utils.py
  └── md_pipe_demo.py

各个文件的主要作用如下:

  • LLMFilter.py:Transformers框架批推理流程。
  • VLLMFilter.py:VLLM框架批推理流程。
  • charreplace.py:需要对文本进行替换操作的正则表达式与字符库。
  • pipelines.py:处理流程入口。
  • template.py:LLM过滤提示词模板。
  • utils.py:一些常用的工具函数。

如何使用

安装依赖

Important

此步骤为必需。

git clone https://github.com/ytzfhqs/EDCP
cd EDCP
pip install requirements.txt -r

Tip

具体用法请参阅用户文档