Project Icon

ChineseWebText

大规模中文网络文本数据集及其评估工具链

ChineseWebText是一个大规模中文网络文本数据集,总容量达1.42TB,每条文本均附带质量评分。该项目还提供了一个600GB的高质量子集,文本质量均超过90%。项目包含EvalWeb工具链,用于从原始网络数据中提取优质中文文本。EvalWeb通过数据准备、预处理和BERT评估模型对文本质量进行筛选和评估。此外,项目还开发了基于FastText的快速分类器,在保持性能的同时提高了处理效率。

ChineseWebText:使用有效评估模型提取的大规模高质量中文网络文本

本目录包含ChineseWebText数据集,以及用于处理CommonCrawl数据以获取高质量中文数据的EvalWeb工具链。我们的ChineseWebText数据集可在huggingface上公开获取(点击这里)

ChineseWebText

  • 数据集概览

我们发布了最新且最大的中文数据集ChineseWebText,它包含1.42 TB的数据(见表1),每个文本都被分配了一个质量分数,便于大型语言模型研究人员根据新的质量阈值选择数据。我们还发布了一个更加干净的子集,包含600 GB质量超过**90%**的中文文本。

  • 数据示例

    {
      "title": "潍坊银行2021年上半年净利润同比增长29.57% 不良率降至1.10%_财经_中国网",
      "score": 0.95,
      "text": "潍坊银行2021年上半年净利润同比增长29.57% 不良率降至1.10%\n中国网财经8月24日讯 潍坊银行昨日披露2021年二季度信息报告显示,截至2021年6月末,潍坊银行资产总额1920.44亿元,较上年末增长9.34%;负债总额1789.16亿元,较上年末增长10.54%。2021年上半年,潍坊银行实现净利润6.09亿元,同比增长29.57%。\n资产质量方面,截至2021年6月末,潍坊银行不良贷款率1.10%,较上年末下降0.13个百分点。\n资本金方面,截至2021年6月末,潍坊银行资本充足率、核心一级资本充足率、一级资本充足率分别为11.66%、7.89%、10.13%,分别较上年末下降1.89、0.89、1.15个百分点。",
      "url": "http://finance.china.com.cn/news/special/2021bnb/20210824/5638343.shtml",
      "source_domain": "finance.china.com.cn"
    }
    
    • "title": 【字符串】数据文本的标题。
    • "score": 【浮点数】由质量评估模型生成的质量分数。
    • "text": 【字符串】数据样本的文本内容。
    • "url": 【字符串】外部URL,指向文本的原始网页地址。
    • "source_domain": 【字符串】源网站的域名。

EvalWeb

简介

我们引入了一个新的完整工具链EvalWeb(见图1),它可以从原始网页数据中提取高质量的中文文本。对于从网络爬取的数据,我们首先使用准备模块进行处理,然后提取单语中文数据。之后,预处理模块将使用手工制定的规则进行进一步过滤,包括数据长度、敏感词、中文字符比例等。最后,使用基于BERT的评估模型来评估过滤后数据的质量。通过这种方式,我们可以为每个文本生成一个质量分数,然后使用适当的阈值来提取我们所需的高质量数据。此外,考虑到计算成本和效率,我们还提出利用知识蒸馏技术来训练FastText分类器,它可以以更快的效率和更低的计算成本达到类似的性能。

环境依赖

scikit-learn==1.3.0
transformers==4.31.0
scipy==1.11.1
numpy==1.24.3
pytorch==2.0.1
jieba==0.42.1
zhconv==1.4.3
fasttext==0.9.2

第一阶段:数据准备

1. 使用CCNet工具进行去重和语言识别(LID)

  • 按照CCNet的工作,在这个模块中使用基于哈希的字符串间去重方法来移除不同CommonCrawl快照中的重复文本。此外,应用了一个经过良好训练的语言识别模型,可以支持157种语言,用于选择中文数据。通过这种方式,我们可以获得所需的所有单语中文文本数据。

  • CCNet工具

  • 运行脚本:

     python -m cc_net --config config/my_config_2023-23.json
    
  • 输出:

    /data/mined_split/2023-23/{0-4999}/zh_[head|middle|tail].json.gz
    
  • config/my_config_2023-23.json:

{
  "hash_in_mem": 10,
  "dump": "2023-23",
  "task_parallelism": 20,
  "num_shards": 5000,
  "mine_num_processes": 20,
  "num_segments_per_shard":-1,
  "lang_whitelist": ["zh","en"],
  "lang_blacklist": [],
  "lang_threshold": 0.5,
  "keep_bucket": [],
  "pipeline": ["dedup", "lid", "keep_lang", "sp", "lm", "pp_bucket", "drop", "split_by_lang"],
  "metadata": "None",
  "execution": "local",
  "output_dir": "data",
  "mined_dir": "mined",
  "target_size": "4G",
  "min_len": 300,
  "cache_dir": "/mnt/data/ccnet_data/commoncrawl"
}

2. 拆分数据并合并为jsonl文件

  • 运行 python merge2jsonl.py
python merge2jsonl.py --source /mnt/data/ccnet_clean/cc_net/data/mined_split/2023-23 --target /mnt/data/cc_cleaned/2023-23
  • 输出:
cleared*.jsonl

第二阶段:预处理

本节重点关注通过使用手工制定的规则从中文单语网络数据中提取高质量文本,过滤掉暴力、色情、广告内容和错误字符。过滤规则的详细内容如下:

  • 文本提取

从数据准备阶段后的jsonl文件中提取文本内容。

  • 数据长度

为改善语言模型训练,如果文档的平均行长度少于10个字符或总文本长度少于200个字符,将被过滤掉,因为这样的短文本通常缺乏有意义的上下文和语义相关性。

  • 字符比例

我们旨在从网络数据中创建一个高质量的简体中文数据集,通过消除繁体中文字符并删除中文字符比例少于**30%**的文本,确保数据集适合训练大型语言模型。

  • 敏感词

为防止大型语言模型生成有害内容,提出了一种方法,分析文本中预定义列表中有害词的出现情况,任何每行有害词出现次数超过0.5次的文本都被归类为有害内容,并从训练数据集中移除。

  • 内部重复

为提高训练效率和模型性能,随后使用13-gram粒度进行分析,识别并过滤掉每个数据条目中超过**50%**字符序列重复的数据样本。

以下是运行预处理阶段的示例命令:

python preprocess.py --dates 2023-06 2023-14

传入的**"dates"**参数对应于准备阶段生成的快照文件夹名称。

然后,您将在相应日期的文件夹下得到六个子文件夹。这六个文件夹分别命名为**"text_extraction""length""Character""sensitive""duplication""remain""text_extraction"文件夹包含从每条数据中提取文本后的结果,而"length""Character""sensitive""duplication"对应四个过滤操作,存储过滤掉的噪声数据。"remain"**文件夹存储预处理阶段后剩余的数据,这些数据随后将通过我们的评估模型进行评分。

第三阶段:质量评估

在预处理过程中,我们使用了一些手工制定的规则来从数据集中移除明显的噪声文本。然而,在剩余的数据中,仍然存在相当数量的低质量文本数据,这些数据无法通过手工规则过滤掉。为了从中提取更高质量的数据,本节我们进一步提出设计评估模型。

阶段3.1: BERTEval

1. BERTEval训练数据组成

2. BERTEval训练和推理

  • 步骤1: 两阶段训练

    python train.py # 第一阶段 你可以修改configs/base_config.json来设置超参数
    python train_ust.py # 第二阶段 你可以修改configs/ust_config.json来设置超参数
    
  • 步骤2: 将之前处理过的CommonCrawl分割成多个分片,每个分片是一个JSON文件。单个快照的所有分片存储在同一路径下。参考示例util/text_separate.py

  • 步骤3: 运行Python推理脚本pred.py,使用换行符\n或句号等分隔符将每个文本分割成最大长度为512的完整段落。为每个段落预测文本质量得分。配置可以通过config/pred_config.json修改,关键参数如下:

    "data_path": ccnet数据路径
    "output_path": 存储评分数据的路径
    "num_workers": 数据预处理的CPU进程数
    "batch_size": BERT批处理大小
    "checkpoint": 模型检查点路径
    "tokenizer_path": 存储BERT分词器的路径
    "pretrained_model_path": 预训练BERT权重路径
    

    其他参数无需修改。处理后的文本存储在多个JSONL文件中。然后运行

    python pred.py
    

    步骤4: 设置阈值$T$并保留质量阈值大于$T$的文本数据。由于bert-base的最大输入token限制为512,对于更长的文本,它们被分割成多个文本段。对于同一文档中连续的、阈值大于$T$的文本段,程序会自动将它们连接起来。这个功能在utils/util.py中的text_select_with_pred(file, score_threshold)函数中实现。

    用法:

    file = "test/data/cleared0_0000.jsonl"
    score_threshold = 0.99
    selected_data = text_select_with_pred(file, score_threshold)
    

阶段3.2: FastText

1. FastText训练数据组成

2. FastText训练和推理

我们在**"fasttext"文件夹中提供了FastText训练数据示例和训练脚本。你可以在这里下载我们训练好的FastText模型,并替换位于"./fasttext/output/model.bin"**的现有文件。

cd fasttext
python main.py --mode train --train_file ./data/train.txt --test_file ./data/test.txt

要了解构建**"train.txt""test.txt"文件的过程,请参考"./data/build_data.py"**。

训练好的模型**"model.bin"将存储在"output"**文件夹中。

获得预处理阶段后剩余的数据(应该存储在类似**"./2023-06/remain"**的路径中)后,你可以使用我们的FastText模型对所有数据进行评分:

python main.py --mode test --dates 2023-06 2023-14

这一步将为每个数据条目分配一个FastText得分,结果将存储在类似**"./2023-06/remain/fasttext"**的目录中。随后,你可以使用这些得分通过设置阈值(默认设为0.5)来过滤和提取高质量数据。

引用

如果您使用了本仓库中的数据或代码,请引用以下论文:

@misc{chen2023chinesewebtext,
      title={ChineseWebText: Large-scale High-quality Chinese Web Text Extracted with Effective Evaluation Model}, 
      author={Jianghao Chen and Pu Jian and Tengxiao Xi and Dongyi Yi and Qianlong Du and Chenglin Ding and Guibo Zhu and Chengqing Zong and Jinqiao Wang and Jiajun Zhang},
      year={2023},
      eprint={2311.01149},
      archivePrefix={arXiv},
      primaryClass={cs.CL}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号