Уникальные изделия ручной работы от 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 - та часть, которая непосредственно отвечает за вычисление процента ошибок в распознанном тексте. Это полезный инструмент для оценки качества систем автоматического распознавания ошибок или распознавания речи. Вы можете использовать этот код в своих проектах, чтобы оценить качество распознавания и улучшить его, если необходимо.