def load_dataset(path, pad_size=32): contents = [] with open(path, 'r', encoding='UTF-8') as f: for line in tqdm(f): lin = line.strip() if not lin: continue content, label = lin.split('\t') words_line = [] token = tokenizer(content) seq_len = len(token) if pad_size: if len(token) < pad_size: token.extend([PAD] * (pad_size - len(token))) else: token = token[:pad_size] seq_len = pad_size # word to id for word in token: words_line.append(vocab.get(word, vocab.get(UNK))) contents.append((words_line, int(label), seq_len)) return contents # [([...], 0), ([...], 1), ...] train = load_dataset(config.train_path, config.pad_size) dev = load_dataset(config.dev_path, config.pad_size) test = load_dataset(config.test_path, config.pad_size) return vocab, train, dev, test
时间: 2024-01-13 14:02:25 浏览: 165
这段代码是用来加载数据集的,其中 `load_dataset` 函数是用来读取文本文件中的内容,并将其转换为模型可以处理的格式。在这个函数中,代码首先打开指定路径的文本文件,然后逐行读取其中的内容。每一行的格式为文本内容和标签,两者用制表符分隔。接着,代码使用 tokenizer 将文本内容转换为词语列表,并使用 vocab 将每个词语转换为对应的 id。如果 pad_size 不为 None,则对词语列表进行 padding,使其长度为 pad_size。最后将处理好的数据以元组形式添加到 contents 列表中,并返回 contents。函数的返回值是一个列表,其中每个元素都是一个元组,元组的第一个元素是处理好的文本内容(以 id 的形式表示),第二个元素是标签,第三个元素是文本内容的长度,即词语列表的长度。整个函数的返回值是一个元组,其中包含了词汇表 vocab 和三个列表,分别是训练集、验证集和测试集。
阅读全文