in vizseq/scorers/_ter.py [0:0]
def sentence_ter_one_ref(hypothesis: str, reference: str) -> float:
hypo_tokens, ref_tokens = hypothesis.split(), reference.split()
n_shifts = 0
prev_n_edits = get_edit_distance(hypo_tokens, ref_tokens)
while True:
new_n_edits, new_tokens = _shift(hypo_tokens, ref_tokens)
if prev_n_edits - new_n_edits <= 0:
break
n_shifts += 1
prev_n_edits = new_n_edits
hypo_tokens = new_tokens
return (n_shifts + prev_n_edits) / len(ref_tokens)