| import argparse | |
| from collections import Counter | |
| from src.utils.wsd import read_from_raganato, expand_raganato_path | |
| def parse_args() -> argparse.Namespace: | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--input-raganato-path") | |
| parser.add_argument("--output-path") | |
| return parser.parse_args() | |
| def compute_annotation_ratio(raganato_path: str, output_path: str) -> None: | |
| annotated_count = Counter() | |
| unannotated_count = Counter() | |
| for _, _, wsd_sentence in read_from_raganato(*expand_raganato_path(raganato_path)): | |
| for wsd_instance in wsd_sentence: | |
| if wsd_instance.labels is None: | |
| unannotated_count[(wsd_instance.annotated_token.lemma, wsd_instance.annotated_token.pos)] += 1 | |
| else: | |
| annotated_count[(wsd_instance.annotated_token.lemma, wsd_instance.annotated_token.pos)] += 1 | |
| output_file = open(output_path, "w") | |
| for (lemma, pos), uc in unannotated_count.items(): | |
| ac = annotated_count[(lemma, pos)] | |
| output_file.write(f"{lemma}#{pos}\t{ac}\t{uc}\t{ac/uc}\n") | |
| output_file.close() | |
| def main(): | |
| args = parse_args() | |
| compute_annotation_ratio(args.input_raganato_path, args.output_path) | |
| if __name__ == "__main__": | |
| main() | |