使用@classmathod创建数据集时进行同时进行处理


一般NLP任务中创建Dataset或Vocabulary的时候,通常需要先创建实例,然后再调用各种方法:

class Dataset:
  def __init__(self):
    self.data = None

  def read_json(self, path):
    corporates = []
    with open(path, 'r') as f:
      for company in tqdm(f):
        company_json = json.loads(company)
        corporates.append(company_json)
    self.data = corporates

# init
dataset = Dataset()
dataset.read_json(path)

上面的写法可以简化为一行,输入path之后,直接执行read_json的结果。这是可以利用@classmathod来创建instance:

class Dataset:
  def __init__(self, data):
    self.data = data

  @classmethod
  def read_json(cls, path):
    corporates = []
    with open(path, 'r') as f:
      for company in tqdm(f):
        company_json = json.loads(company)
        corporates.append(company_json)
    return cls(corporates)

# init
dataset = Dataset.read_json(path)

欢迎订阅我的博客:RSS feed
知乎: 赤乐君
Blog: BrambleXu
GitHub: BrambleXu
Medium: BrambleXu


文章作者: BrambleXu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 BrambleXu !
评论
  目录