Download model/metrics.py from MSkilll/Etra: direct link, hf CLI and curl.
- Browser
- Download file 870 Bytes
-
https://huggingface.co/MSkilll/Etra/resolve/main/model/metrics.py
- Command line
-
hf download hf://MSkilll/Etra/model/metrics.py
-
curl -L -o metrics.py https://huggingface.co/MSkilll/Etra/resolve/main/model/metrics.py
870 Bytes
| import re, string | |
| from collections import Counter | |
| def norm(s): | |
| s = s.lower() | |
| s = "".join(c for c in s if c not in set(string.punctuation)) #remove punctuation | |
| s = re.sub(r"\b(a|an|the)\b", " ", s) | |
| return " ".join(s.split()) #fill the leftover space | |
| def em(pred, golds): | |
| return max(norm(pred) == norm(g) for g in golds) | |
| def f1(pred, golds): | |
| def one(p, g): | |
| p, g = norm(p).split(), norm(g).split() | |
| common = Counter(p) & Counter(g) | |
| n = sum(common.values()) #count how many predicted words match the correct ones | |
| if n == 0: return 0.0 | |
| pr, rc = n / len(p), n / len(g) | |
| return 2 * pr * rc / (pr + rc) #formula | |
| return max(one(pred, g) for g in golds) | |
| def contains(pred, golds): # fairer for sentence answers | |
| return max(norm(g) in norm(pred) for g in golds) |