分词与词表生成工具
更新时间:2022-01-25
一、分词工具使用方法
单独的分词工具位于目录textone/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任务时,除了一中的工具使用方式外,textone也提供了使用该分词算子的tokenizer,并提供了一个分类demo,位于tasks/text_classification/examples/cls_cnn_ch_with_lac.json,其中有关分词算子tokenizer的配置如下所示。
{
"dataset_reader": {
"train_reader": {
...
"tokenizer": {
"type": "LACTokenizer",
"split_char": " ",
"unk_token": "[UNK]",
"params": null
},
...
},
该demo任务为非ernie的分类cnn任务,输入样本为未分词的数据,可直接配置该tokenizer进行读入,运行方式请参照以下代码进行。
cd tasks/text_classification
python3 run_with_json.py --param_path=examples/cls_cnn_ch_with_lac.json
三、词表生成工具
如果用户想使用自己的样本集生成词表,则可使用一中的工具进行分词,得到分词后的样本文件后,直接使用词表生成工具,指定目录,生成自己的词表;如用户没有词表,也可以直接用二中demo指定的ernie_word词表
词表生成工具位于textone/data/build_voc.py
python build_voc.py 输入目录 词表路径
# 接口参数
# data_dir 输入目录
# save_path 词表文件路径
# feq_threshold 词频
# insert_extra_words 表头额外meta信息,默认为textone框架的ernie任务词表meta
build_dict(
data_dir=argv[1],
save_path=argv[2],
feq_threshold=5,
insert_extra_words=["[PAD]", "[CLS]", "[SEP]", "[MASK]", "[UNK]"])