资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

分词与词表生成工具

一、分词工具使用方法

单独的分词工具位于目录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]"])