数据集清洗
基于YAML(自动化)
python版本>3.10
1.创建虚拟环境
conda create -n datawash python=3.10 -y conda activate datawash2.安装 Data-Juicer
pip install py-data-juicer[sci]安装验证:dj-process --help
3.任务配置编写Recipe(数据配方)
3.1准备数据
准备一个.jsonl格式的文件
每段是text格式的json对象
{"text": "这是一段高质量的文本。"} {"text": "这是另一段文本,包含一些垃圾信息... http://example.com/spam"}3.2创建yaml文件
# --- 全局参数 --- project_name: 'my_first_cleaning_task' # 项目名称 dataset_path: './my_raw_data.jsonl' # 输入数据集路径 export_path: './clean_data.jsonl' # 清洗后输出路径 np: 4 # 使用的进程数 (加速处理) # --- 数据处理流程 (Process) --- # 在这里,按顺序列出你想执行的所有操作算子 (Operator) process: # 1. 清理与规范化 (Mapper) - clean_email_mapper: # 清理邮箱地址 - clean_links_mapper: # 清理超链接 - fix_unicode_mapper: # 修复Unicode乱码 - punctuation_normalization_mapper: # 标点符号规范化 - whitespace_normalization_mapper: # 空格规范化 # 2. 启发式过滤 (Filter) - words_num_filter: # 过滤文本词数不在指定范围内的 lang: 'en' # 指定语言(中文用 'zh') min_num: 50 # 最小词数 max_num: 100000 # 最大词数 - character_repetition_filter: # 过滤字符大量重复的文本 rep_len: 10 max_ratio: 0.2 - special_characters_filter: # 过滤特殊字符占比过高的 max_ratio: 0.3 # 3. 质量过滤 (基于模型) - perplexity_filter: # 基于困惑度(PPL)过滤低质文本 lang: 'en' # 注意语言设定 max_ppl: 1500 # 最大困惑度阈值 # 4. 文档去重 (Deduplicator) - document_simhash_deduplicator: # 基于SimHash的模糊去重 tokenization: 'space' # 分词方式 window_size: 6 hamming_distance: 43.3执行
dj-process --config .yaml文件3.4成品数据位置
./clean_data.jsonl
4.数据分析与可视化
4.1成品数据统计报告
dj-analyze --config .yaml文件
4.2可视化分析(内置工具)
streamlit run app.py