data.py 1.3 KB

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