Уникальные изделия ручной работы от cer

CER (корректность распознавания границ ошибок)

CER - это метрика, используемая для оценки качества работы систем автоматического распознавания ошибок (ASR) или автоматического распознавания речи (ASR). В контексте распознавания речи, CER измеряет процент ошибок в распознанном тексте, относительно эталона. Он вычисляется как отношение суммы количества вставленных, удаленных и замененных символов ко всем символам в эталоне.

Примеры кода для вычисления CER:

Для начала, вам понадобится две строки текста - распознанный текст и эталонный текст. Допустим, у нас есть следующие строки:


recognized_text = "Привет, как дела?"
reference_text = "Привет, какие дела?"

Теперь, давайте создадим функцию, которая будет вычислять CER на основе данных строк:


def calculate_cer(recognized_text, reference_text):
    # Инициализируем переменные для подсчета ошибок
    substitutions = 0
    deletions = 0
    insertions = 0

    # Преобразуем строки в списки символов
    recognized_list = list(recognized_text)
    reference_list = list(reference_text)

    # Создаем матрицу для динамического программирования
    dp = [[0] * (len(reference_list) + 1) for _ in range(len(recognized_list) + 1)]

    # Инициализируем значения первой строки и первого столбца
    for i in range(len(recognized_list) + 1):
        dp[i][0] = i
    for j in range(len(reference_list) + 1):
        dp[0][j] = j

    # Заполняем остальную часть матрицы
    for i in range(1, len(recognized_list) + 1):
        for j in range(1, len(reference_list) + 1):
            if recognized_list[i-1] == reference_list[j-1]:
                dp[i][j] = dp[i-1][j-1]
            else:
                dp[i][j] = 1 + min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])

    # Вычисляем количество ошибок
    num_errors = dp[len(recognized_list)][len(reference_list)]

    # Вычисляем количество вставленных, удаленных и замененных символов
    for i in range(len(recognized_list)):
        if recognized_list[i] != reference_list[i]:
            if i < len(reference_list) and recognized_list[i] == reference_list[i+1]:
                substitutions += 1
            else:
                insertions += 1
    deletions = num_errors - substitutions - insertions

    # Вычисляем CER
    cer = num_errors / len(reference_list) * 100

    # Возвращаем результаты
    return cer, substitutions, deletions, insertions

Тестируем функцию:


cer, substitutions, deletions, insertions = calculate_cer(recognized_text, reference_text)
print("CER:", cer)
print("Substitutions:", substitutions)
print("Deletions:", deletions)
print("Insertions:", insertions)

Описание алгоритма:

В данном примере мы используем алгоритм динамического программирования для нахождения минимального расстояния между двумя строками. В основе алгоритма лежит таблица `dp`, в которую мы записываем результаты вычислений. Затем, мы вычисляем количество вставленных, удаленных и замененных символов, а затем выводим результаты.

Основной вывод этого кода - вычисление CER - та часть, которая непосредственно отвечает за вычисление процента ошибок в распознанном тексте. Это полезный инструмент для оценки качества систем автоматического распознавания ошибок или распознавания речи. Вы можете использовать этот код в своих проектах, чтобы оценить качество распознавания и улучшить его, если необходимо.

Похожие вопросы на: "cer "

Tuple C: удобный способ работы с неизменяемыми структурами данных в языке C
JS setInterval - регулярное выполнение кода через определенные промежутки времени
Python PyInstaller - создание исполняемых файлов из Python кода
Maximum recursion depth exceeded in comparison
PyQt5 Designer: удобный инструмент для разработки графического интерфейса
c 17
Google Maps: Explore and Navigate the World
Google Timeline - визуализируйте историю изменений
Руководство по CSS media max width: создание адаптивного дизайна
Bootstrap Flex: удобная и гибкая система веб-разработки