NER项目 P3 拆分训练集和测试集
上一节已经生成了单个字和标注对应的文件,接下来就是将这些文件,拆分为训练集和测试集两部分。这里的拆分不单是文件选择的问题,还需要考虑后续加载数据集的问题。
难点分析
因为原始数据是OCR识别得到的,有错字、空格、换行等内容。而我们在模型训练时,是以句子为单位进行输入的,所以还会面临文档拆分为句子的难题。
显然,按照空格、句号、回车,这些直观的句子拆分方法是行不通的,因为可能会出现句子太长、一个实体被拆分到两句话中等问题。我们这里采用一个简单粗暴的方法,将多个文档合并为一个文件,看做一篇文档。
加载数据时,在按固定长度进行截取,当然,这样也会有实体被拆开的问题,到加载数据时再处理。
代码示例
1、添加配置项
# config.py TRAIN_SAMPLE_PATH = './output/train_sample.txt' TEST_SAMPLE_PATH = './output/test_sample.txt'
2、拆分方法
# data_process.py # 拆分训练集和测试集 def split_sample(test_size=0.3): files = glob(ANNOTATION_DIR + '*.txt') random.seed(0) random.shuffle(files) n = int(len(files) * test_size) test_files = files[:n] train_files = files[n:] # 合并文件 merge_file(train_files, TRAIN_SAMPLE_PATH) merge_file(test_files, TEST_SAMPLE_PATH) def merge_file(files, target_path): with open(target_path, 'a') as file: for f in files: text = open(f).read() file.write(text) if __name__ == '__main__': # 拆分训练集和测试集 split_sample()
本文链接:http://ichenhua.cn/edu/note/455
版权声明:本文为「陈华编程」原创课程讲义,请给与知识创作者起码的尊重,未经许可不得传播或转售!