| 123456789101112131415161718192021222324252627282930313233343536 |
- from torch.utils.data import Dataset
- from torchtext.data.utils import get_tokenizer
- import pandas as pd
- #第一步的数据集的构造
- #无论是计算机视觉任务还是NLP任务,都要继承Dataset
- #构造一个用于读取数据的数据集
- class NewsDataset(Dataset):
- # data对象中保存了原始数据,包括标签label和新闻描述text
- # data[0] = (3,"Wall St. Bears Claw Back Into the ...")
- def __init__(self,is_train=True) -> None:
- super().__init__()
- if is_train:
- data = pd.read_csv("./text_cls/ag_news_csv/train.csv")
- else:
- data = pd.read_csv("./text_cls/ag_news_csv/test.csv")
- self.examples = list()
- #返回一个内置的英文分词器
- tokenizer = get_tokenizer("basic_english")
- for index, row in data.iterrows():
- label =row.iloc[0]
- text = row.iloc[2]
- #将文本转为小写,并使用tokenizer进行分词
- tokenized_text = [token.lower() for token in tokenizer(text)]
- #将处理好的文本和标签,保存到list中
- self.examples.append((tokenized_text,label))
-
- def __len__(self):
- return len(self.examples)
- def __getitem__(self, index):
- return self.examples[index]
- if __name__== "__main__":
- dataset = NewsDataset()
- print(len(dataset))
- print(dataset[0])
|