| import argparse | |
| def parse_args() -> argparse.Namespace: | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--raganato-path") | |
| parser.add_argument("--vocabulary-path") | |
| return parser.parse_args() | |
| def compute_coverage(raganato_path: str, vocabulary_path: str) -> None: | |
| with open(vocabulary_path) as f: | |
| vocabulary = set() | |
| for line in f: | |
| vocabulary.add(line.strip()) | |
| total_counter = [] | |
| word_level_counter = dict() | |
| for _, _, wsd_sentence in read_from_raganato(*expand_raganato_path(raganato_path)): | |
| for wsd_instance in wsd_sentence: | |
| if wsd_instance.text not in vocabulary: | |
| total_counter.append(0) | |
| word_level_counter[wsd_instance.text] = 0 | |
| else: | |
| total_counter.append(1) | |
| word_level_counter[wsd_instance.text] = 1 | |
| print(f"Instance level coverage: {sum(total_counter)/len(total_counter)*100:.2f}%") | |
| print(f"Word level coverage: {sum(word_level_counter.values())/len(word_level_counter)*100:.2f}%") | |
| def main(): | |
| args = parse_args() | |
| compute_coverage(args.raganato_path, args.vocabulary_path) | |
| if __name__ == "__main__": | |
| main() | |