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), ...]
时间: 2024-02-10 07:34:29 浏览: 93
【数据挖掘重要笔记day31】详细完解决iris = sns.load_dataset(‘iris’)出来EmptyDataError: No columns to parse from file报错
这段代码定义了一个函数 `load_dataset`,用于加载数据集。具体来说,函数接受两个参数:
- `path`:数据集文件的路径;
- `pad_size`:每条数据的长度,不足 `pad_size` 的将填充为 `PAD`。
函数首先定义了一个空列表 `contents`,用于存储加载的数据。然后,函数使用 Python 内置的 `open` 函数打开数据集文件,逐行读取文件内容,并将每行内容按照指定的分割符 `\t` 进行分割,得到该条数据的文本内容和标签。函数将文本内容传递给 `tokenizer` 进行分割,得到一个由单词或字组成的列表 `token`,并计算出 `token` 的长度 `seq_len`。如果 `pad_size` 大于 `0`,则将 `token` 填充为长度为 `pad_size` 的列表,不足 `pad_size` 的部分使用 `PAD` 填充;如果 `pad_size` 等于 `0`,则不进行填充操作。接着,函数将 `token` 中的每个单词或字转换为其在词表 `vocab` 中的索引,如果词表中不存在该单词或字,则使用 `UNK` 的索引进行替换。最后,函数将处理好的数据以元组 `(words_line, int(label), seq_len)` 的形式添加到 `contents` 中,并返回 `contents` 列表。在这里,`words_line` 表示将单词或字转换为索引后得到的列表,`label` 表示该条数据的标签,`seq_len` 表示该条数据的长度。
阅读全文