Spaces:
Sleeping
Sleeping
import json | |
from typing import Iterable | |
class RelikReaderSample: | |
def __init__(self, **kwargs): | |
super().__setattr__("_d", {}) | |
self._d = kwargs | |
def __getattribute__(self, item): | |
return super(RelikReaderSample, self).__getattribute__(item) | |
def __getattr__(self, item): | |
if item.startswith("__") and item.endswith("__"): | |
# this is likely some python library-specific variable (such as __deepcopy__ for copy) | |
# better follow standard behavior here | |
raise AttributeError(item) | |
elif item in self._d: | |
return self._d[item] | |
else: | |
return None | |
def __setattr__(self, key, value): | |
if key in self._d: | |
self._d[key] = value | |
else: | |
super().__setattr__(key, value) | |
def to_jsons(self) -> str: | |
if "predicted_window_labels" in self._d: | |
new_obj = { | |
k: v | |
for k, v in self._d.items() | |
if k != "predicted_window_labels" and k != "span_title_probabilities" | |
} | |
new_obj["predicted_window_labels"] = [ | |
[ss, se, pred_title] | |
for (ss, se), pred_title in self.predicted_window_labels_chars | |
] | |
else: | |
return json.dumps(self._d) | |
def load_relik_reader_samples(path: str) -> Iterable[RelikReaderSample]: | |
with open(path) as f: | |
for line in f: | |
jsonl_line = json.loads(line.strip()) | |
relik_reader_sample = RelikReaderSample(**jsonl_line) | |
yield relik_reader_sample | |