中文信息处理——语料划分测试集与训练集

本系列所有文章都是基于人民日报语料处理 199801.txt

import random

def split(all_list, shuffle=False, ratio=1):
    num = len(all_list)
    offset = int(num * ratio)
    if num == 0 or offset < 1:
        return [], all_list
    if shuffle:
        random.shuffle(all_list)  # 列表随机排序
    train = all_list[:offset]
    test = all_list[offset:]
    return train, test

# 按照比例ratio将数据集按照句子级别划分训练集、测试集
def file_shffle_split(file, train, test, r):
    infilm = open(file, 'r', encoding='utf-8')
    trainfilm = open(train, 'w+', encoding='utf-8')
    testfilm = open(test, 'w+', encoding='utf-8')
    ratio = r
    li = []
    sentence = []
    for data in infilm.readlines():
        if data != '\n':
            li.append(data)
        else:
            sentence.append(li)
            li = []
    traindatas, testdatas = split(sentence, True, ratio)
    # 写入训练集
    for sentence in traindatas:
        for word in sentence:
            trainfilm.write(word)
        trainfilm.write('\n')
    # 写入测试集
    for sentence in testdatas:
        for word in sentence:
            testfilm.write(word)
        testfilm.write('\n')
    infilm.close()
    trainfilm.close()
    testfilm.close()

if __name__ == '__main__':
    # 设置划分比例 (ratio为训练集占比)
    ratio = 0.8
    # 划分数据集
    file_shffle_split('199801.txt', 'train.txt', 'test.txt', ratio)
  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值