| 26 | |
| 27 | |
| 28 | class Retrieval_Dataset(Dataset): |
| 29 | def __init__(self, max_concat_length, tokenizer, filename): |
| 30 | self.examples = [] |
| 31 | with open(filename, encoding="utf-8") as f: |
| 32 | data = f.readlines() |
| 33 | n = len(data) |
| 34 | |
| 35 | for i in range(n): |
| 36 | record = json.loads(data[i]) |
| 37 | sample_id = record['qid'] |
| 38 | rewite = record['rewrite'] |
| 39 | # rewite = record['truth_rewrite'] |
| 40 | rewrite_encoded = tokenizer.encode(rewite, add_special_tokens=True) |
| 41 | rewrite_padded, rewrite_mask = padding_seq_to_same_length(rewrite_encoded, max_pad_length=max_concat_length) |
| 42 | self.examples.append([sample_id, rewrite_padded, rewrite_mask]) |
| 43 | |
| 44 | def __len__(self): |
| 45 | return len(self.examples) |
| 46 | |
| 47 | def __getitem__(self, item): |
| 48 | return self.examples[item] |
| 49 | |
| 50 | @staticmethod |
| 51 | def get_collate_fn(args): |
| 52 | |
| 53 | def collate_fn(batch: list): |
| 54 | collated_dict = { |
| 55 | "bt_sample_ids": [], |
| 56 | "bt_rewrite":[], |
| 57 | "bt_rewrite_mask":[], |
| 58 | } |
| 59 | for example in batch: |
| 60 | collated_dict["bt_sample_ids"].append(example[0]) |
| 61 | collated_dict["bt_rewrite"].append(example[1]) |
| 62 | collated_dict["bt_rewrite_mask"].append(example[2]) |
| 63 | |
| 64 | for key in collated_dict: |
| 65 | if key != 'bt_sample_ids': |
| 66 | collated_dict[key] = torch.tensor(collated_dict[key], dtype=torch.long) |
| 67 | return collated_dict |
| 68 | |
| 69 | return collate_fn |
no outgoing calls
no test coverage detected