4.数据预处理
数据集划分
- 训练集、测试集、验证集可以按照6:2:2的比例进行划分。
- 每个数据集上都是一个目录,目录下是多个数据文件,每个数据文件中的样本数量尽量不要超过100万条,数据文件的大小不要超过300MB。
文件格式转换
文心中的所有文件要求必须是utf-8格式,包括所有的样本集、词表文件、label_map等映射文件。 文心提供了文件格式转换的工具,位置在./wenxin/data/data_cleaning
-
识别输入文本的编码格式:
# -i 指定输入文件路径 python file_encoding.py -i input_file
-
将utf8格式的文本转成gb18030,如果输入文本不是utf8格式的,直接报错返回:
python file_encoding.py -i input_file -o output_file --utf8_to_gb18030 # 或者 python file_encoding.py -i input_file -o output_file -u2g
-
将gb18030的文本转成utf8,如果输入文本不是gb18030格式的,直接报错返回:
python file_encoding.py -i input_file -o output_file --gb18030_to_utf8 # 或者 python file_encoding.py -i input_file -o output_file -g2u
分词
文心中集成了lac分词工具,使用方式有以下两种:
-
使用Python工具包
开发套件用于分词的python脚本位于目录./wenxin/data/wordseg/wordseg_lac.py , ,运行该脚本前,需要先下载分词工具lac包,或者直接通过pip命令安装:
pip install lac
参数说明可执行python wordseg_lac.py -h
optional arguments: -h, --help show this help message and exit -i INPUT, --input INPUT -o OUTPUT, --output OUTPUT -c COLUMN_NUMBER, --column_number COLUMN_NUMBER
脚本参数如上所示:
input:分词目录,如果目录下有多个文件,则依次将目录下所有文件分词,分词结果置于output参数指定的目录,分词后文件名为{原文件名_seg}.后缀
支持通过-c参数对指定列进行分词,如有多列使用逗号分割,默认为第1列
-
使用预置的tokenizer
当训练框架想直接输入未分词的样本数据训练非ernie任务时,除了上面所说的Python工具包使用方式外,wenxin也提供了使用该分词算子的tokenizer,并提供了一个分类demo,位于tasks/text_classification/examples/cls_cnn_ch_with_lac.json,其中有关分词算子tokenizer的配置如下所示:
{ "dataset_reader": { "train_reader": { ... "tokenizer": { "type": "LACTokenizer", ## 需要使用LAC分词的域将tokenizer的type设置为LACTokenizer "split_char": " ", "unk_token": "[UNK]", "params": null }, ... }, ... }
该demo任务为非Ernie的分类CNN任务,输入样本为未分词的数据,可直接配置该tokenizer进行读入,运行方式请参照以下代码进行:
cd tasks/text_classification python run_with_json.py --param_path=examples/cls_cnn_ch_with_lac.json
构建词表
如果用户想使用自己的样本集生成词表,则可使用上一节中的分词工具进行分词,得到分词后的样本文件后,直接使用词表生成工具,指定目录,生成自己的词表。词表生成工具位于wenxin/data/build_voc.py,使用方式如下:
python build_voc.py -i 分好词的数据集目录路径 -o 生成的词表路径
optional arguments:
-h, --help show this help message and exit
-i INPUT, --input INPUT
-o OUTPUT, --output OUTPUT
-sep SEPERATOR, --seperator SEPERATOR
-c COLUMN_NUMBER, --column_number COLUMN_NUMBER
-thr FEQ_THRESHOLD, --feq_threshold FEQ_THRESHOLD
-ew EXTRA_WORDS [EXTRA_WORDS ...], --extra_words EXTRA_WORDS [EXTRA_WORDS ...]
-sw STOP_WORDS [STOP_WORDS ...], --stop_words STOP_WORDS [STOP_WORDS ...]
高阶使用
- 数据蒸馏:数据蒸馏