Как я могу изменить код 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)]

0 ответов

Другие вопросы по тегам