ChineseWebText

ChineseWebText

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

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

ChineseWebText高质量中文数据集网页文本处理自然语言处理数据评估模型Github开源项目

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

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

ChineseWebText

  • 数据集概览

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

<div align="center"> <img src="https://raw.githubusercontent.com/CASIA-LM/ChineseWebText/main/.\assets\Overview_of_output_datasets.png" width="50%" /> </div>
  • 数据示例

    { "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分类器,它可以以更快的效率和更低的计算成本达到类似的性能。

<div align="center"> <img src="https://raw.githubusercontent.com/CASIA-LM/ChineseWebText/main/.\assets\BERTEval.png"/> </div>

环境依赖

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训练数据组成

<div align="center"> <img src="https://raw.githubusercontent.com/CASIA-LM/ChineseWebText/main/./assets/BERTEval_data_composition.png" width="50%" /> </div>

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训练数据组成

<div align="center"> <img src="https://raw.githubusercontent.com/CASIA-LM/ChineseWebText/main/./assets/FastText_data_composition.png" width="50%" /> </div>

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} }

编辑推荐精选

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

下拉加载更多