Как я могу изменить код WER, чтобы включить обработку POS-тегов?
Я пытаюсь вычислить WER для некоторого вывода MT и, более конкретно, посмотреть, как каждый класс POS влияет на вывод. У меня есть список кортежей, где каждый кортеж состоит из слова и его POS-тега. Я хочу изменить следующий код WER, чтобы при каждом редактировании, выполняемом на основе слова, тег POS слова добавлялся в список того же тега POS.
Я попытался добавить шаг после каждого редактирования, но в итоге он добавляет счет WER в список, который я не могу использовать.
def wer(r, h):
import numpy
d = numpy.zeros((len(r)+1)*(len(h)+1), dtype=numpy.uint8)
d = d.reshape((len(r)+1, len(h)+1))
for i in range(len(r)+1):
for j in range(len(h)+1):
if i == 0:
d[0][j] = j
elif j == 0:
d[i][0] = i
for i in range(1, len(r)+1):
for j in range(1, len(h)+1):
if r[i-1] == h[j-1]:
d[i][j] = d[i-1][j-1]
else:
substitution = d[i-1][j-1] + 1
insertion = d[i][j-1] + 1
deletion = d[i-1][j] + 1
d[i][j] = min(substitution, insertion, deletion)
return d[len(r)][len(h)]