Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
assert prons
stats.prons += len(prons)
assert len(golden_lex[word]) >= 1
# Compute stats for phone error rate and word error rate:
argvals = []
for predicted in prons[:predicted_cutoff]:
predicted_pron = predicted[0]
# Inner oracle: Find the best among the golden pronunciations.
inner_argmin = None
inner_valmin = _INF
for golden in golden_lex[word][:golden_cutoff]:
golden_pron = golden[0]
ed = edist.EditDistance(golden_pron, predicted_pron,
edist.LevenshteinCost)
val = fdiv(ed.Valmin(), len(golden_pron)) # Per-word phone error.
if val < inner_valmin:
inner_argmin = (golden, predicted, ed)
inner_valmin = val
assert inner_argmin is not None
if FLAGS.output_word_stats:
# Output phone error per predicted pronunciation.
writer.write('#PRON_PhE\t%s\t%s\t%s\t%f\t%s\n' %
(word,
' '.join(inner_argmin[0][0]),
' '.join(predicted_pron),
inner_valmin,
'\t'.join(predicted[2])))
argvals.append((inner_argmin, inner_valmin))
assert argvals
argvals.sort(key=lambda x: x[1]) # Sort by increasing values.