• 大小: 35.14MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-06-21
  • 语言: 其他
  • 标签: 语料  

资源简介

共8400多对中英语句,已预处理,中文用jieba分了词,标点符号没问题,保存于en-zh.csv,分隔符是制表符\t(不是默认逗号)。 句粒度,但有不少长句,裁剪后5w对也够用。 原始数据集也在包中,其中en-zh_News.tmx有一部分句子有问题,(en-zh.csv丢弃了有问题的句子),如果必要建议不要直接使用该文件。 另外附赠我对语料的预处理文件(propressor.py),以及数据集(pytorch的Dataset)等相关的实现(LangData.py)。 如果又可以改善的地方,欢迎留言

资源截图

代码片段和文件信息

import torch
from torch.utils.data.dataset import Dataset
import torch.utils.data.dataloader
# import pandas as pd
import csv

PAD_token = 0
SOS_token = 1
EOS_token = 2
UKN_token = 3

class Lang:
    def __init__(self name):
        self.name = name
        self.word2index = {}
        self.word2count = {}
        self.index2word = {PAD_token: “PAD“ SOS_token: “SOS“ EOS_token: “EOS“ UKN_token: ‘UKN‘}
        self.n_words = 4

    def add_sentence(self sentence):
        if self.name == ‘cn‘:
            for word in sentence:
                self.add_word(word)
        else:
            for word in sentence.split(‘ ‘):
                self.add_word(word)

    def add_word(self word):
        if word not in self.word2index:
            self.word2index[word] = self.n_words
            self.word2count[word] = 1
            self.index2word[self.n_words] = word
            self.n_words += 1
        else:
            self.word2count[word] += 1

    def trim(self min_count=2):
        keep = []

        for k v in self.word2count.items():
            if v >= min_count:
                keep.append(k)

        print(‘total‘ len(self.word2index))
        print(‘keep‘ len(keep))
        print(‘keep {:.4%}‘.format(len(keep) / len(self.word2index)))

        self.word2index = {}
        self.word2count = {}
        self.index2word = {PAD_token: “PAD“ SOS_token: “SOS“ EOS_token: “EOS“ UKN_token: ‘UKN‘}
        self.n_words = 4

        for word in keep:
            self.add_word(word)


# 小写,修剪和删除非字符字符
def normalizeString(s):
    s = s.lower().strip()
    # s = re.sub(r“([.!?])“ r“ \1“ s)
    # s = re.sub(r“[^a-zA-Z.!?]+“ r“ “ s)
    # s = re.sub(“\b{2}“ “\b“ s)
    return s


def filter_pair(p min_length max_length):
    return len(p[0].split(‘ ‘)) <= max_length and \
           len(p[1].split(‘ ‘)) <= max_length and \
           len(p[0].split(‘ ‘)) >= min_length and \
           len(p[1].split(‘ ‘)) >= min_length


def filter_pairs(pairs min_length max_length):
    return [pair for pair in pairs if filter_pair(pair min_length max_length)]


class LangDataset(Dataset):

    def __init__(self lang1 lang2 root_path reverse=False transform=None
                 min_length=1 max_length=None lower=True trim_count=None):
        self.transform = transform
        print(“Reading lines...“)
        with open(root_path + ‘%s-%s.csv‘ % (lang1 lang2) encoding=‘utf-8-sig‘) as f:
            reader = csv.reader(f delimiter=‘\t‘)
            if lower:
                data = [[normalizeString(s) for s in l] for l in reader]
            else:
                data = [l for l in reader]
            f.close()
        print(“Read %s sentence pairs“ % len(data))
        if min_length > 1 or max_length is not None:
            data = filter_pairs(data min_length max_length)
        self.data = data
        self.min_length = min_length
        self.m

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-08-11 18:12  data\
     文件     1315138  2019-07-21 00:01  data\en-cn.txt
     文件    11876774  2019-07-21 00:01  data\en-fra.txt
     文件    20299270  2019-08-06 17:57  data\en-zh.csv
     文件      903387  2019-07-31 16:49  data\en-zh_HIT.txt
     文件    53605933  2019-06-29 13:14  data\en-zh_News.tmx
     文件     4678577  2019-06-29 03:31  data\en-zh_News2.tmx
     文件     1479544  2019-08-02 21:58  data\en-zh_simple.csv
     文件        4951  2019-08-07 22:44  LangData.py
     文件        3637  2019-08-06 16:11  preprocessor.py

评论

共有 条评论