bleuEvaluationScore

Оцените перевод или суммирование с счетом подобия BLEU

Описание

Алгоритм оценки BiLingual Evaluation Doubludy (BLEU) оценивает сходство между документом-кандидатом и набором справочных документов. Используйте счет BLEU для оценки качества моделей перевода и суммирования документов.

пример

score = bleuEvaluationScore(candidate,references) возвращает счет подобия BLEU между заданным документом-кандидатом и ссылкой документами. Функция вычисляет n-граммовое перекрытие между candidate и references для n-граммовых длин с 1 по 4, с равным взвешиванием. Для получения дополнительной информации см. Счет BLEU.

пример

score = bleuEvaluationScore(candidate,references,'NgramWeights',ngramWeights) использует заданное n-граммовое взвешивание, где ngramWeights(i) соответствует весу для n-граммов длины i. Длина вектора веса определяет область значений длин n-граммов для использования в оценке счета BLEU.

Примеры

свернуть все

Создайте массив токенизированных документов и извлеките сводные данные с помощью extractSummary функция.

str = [
    "The fox jumped over the dog."
    "The fast brown fox jumped over the lazy dog."
    "The lazy dog saw a fox jumping."
    "There seem to be animals jumping other animals."
    "There are quick animals and lazy animals"];
documents = tokenizedDocument(str);
summary = extractSummary(documents)
summary = 
  tokenizedDocument:

   10 tokens: The fast brown fox jumped over the lazy dog .

Задайте ссылочные документы как tokenizedDocument массив.

str = [
    "The quick brown animal jumped over the lazy dog."
    "The quick brown fox jumped over the lazy dog."];
references = tokenizedDocument(str);

Вычислите счет BLEU между сводными данными и ссылкой документами с помощью bleuEvaluationScore функция.

score = bleuEvaluationScore(summary,references)
score = 0.7825

Этот счет указывает на довольно хорошее сходство. Счет BLEU, близкая к единице, указывает на сильное сходство.

Создайте массив токенизированных документов и извлеките сводные данные с помощью extractSummary функция.

str = [
    "The fox jumped over the dog."
    "The fast brown fox jumped over the lazy dog."
    "The lazy dog saw a fox jumping."
    "There seem to be animals jumping other animals."
    "There are quick animals and lazy animals"];
documents = tokenizedDocument(str);
summary = extractSummary(documents)
summary = 
  tokenizedDocument:

   10 tokens: The fast brown fox jumped over the lazy dog .

Задайте ссылочные документы как tokenizedDocument массив.

str = [
    "The quick brown animal jumped over the lazy dog."
    "The quick brown fox jumped over the lazy dog."];
references = tokenizedDocument(str);

Рассчитать счет BLEU между документом-кандидатом и ссылочными документами можно используя опции по умолчанию. The bleuEvaluationScore функция по умолчанию использует n-граммы длины от одного до четырех с равными весами.

score = bleuEvaluationScore(summary,references)
score = 0.7825

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

Чтобы решить эту проблему, используйте более короткие n-граммы путем установки 'NgramWeights' опция для более короткого вектора. Снова вычислите счет BLEU, используя только униграммы и биграммы путем установки 'NgramWeights' опция для двухэлементного вектора. Обрабатывайте униграммы и биграммы одинаково, задавая равные веса.

score = bleuEvaluationScore(summary,references,'NgramWeights',[0.5 0.5])
score = 0.8367

Этот счет предполагает лучшее сходство, чем раньше.

Входные параметры

свернуть все

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

Справочные документы, заданные как tokenizedDocument массив, строковые массивы или массив ячеек из векторов символов. Если references не является tokenizedDocument Массив это должно быть вектор-строка, представляющее один документ, где каждый элемент является словом. Для анализа по нескольким ссылочным документам используйте tokenizedDocument массив.

N-граммовые веса, заданные как вектор-строка конечных неотрицательных значений, где ngramWeights(i) соответствует весу для n-граммов длины i. Длина вектора веса определяет область значений длин n-граммов для использования в оценке счета BLEU. Функция нормирует веса n-граммов, чтобы суммировать с единицей.

Совет

Если количество слов в candidate меньше, чем количество элементов в ngramWeights, тогда результат счета BLEU равен нулю. Чтобы гарантировать, что bleuEvaluationScore возвращает ненулевые счета для очень коротких документов, задает ngramWeights в вектор с меньшим количеством элементов, чем количество слов в candidate.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Выходные аргументы

свернуть все

BLEU счета, возвращается как скалярное значение в область значений [0,1] или NaN.

Счет BLEU, близкая к нулю, указывает на плохое сходство между candidate и references. Счет BLEU, близкая к единице, указывает на сильное сходство. Если candidate идентичен одному из ссылочных документов, затем score равен 1. Если candidate и references тогда оба пустых документа score является NaN. Для получения дополнительной информации см. Счет BLEU.

Совет

Если количество слов в candidate меньше, чем количество элементов в ngramWeights, тогда результат счета BLEU равен нулю. Чтобы гарантировать, что bleuEvaluationScore возвращает ненулевые счета для очень коротких документов, задает ngramWeights в вектор с меньшим количеством элементов, чем количество слов в candidate.

Алгоритмы

свернуть все

BLEU- Счета

Алгоритм оценки BiLingual Evaluation Doubludy (BLEU) [1] оценивает сходство между документом-кандидатом и набором ссылки документов. Используйте счет BLEU для оценки качества моделей перевода и суммирования документов.

Чтобы вычислить счет BLEU, алгоритм использует n-граммовые счетчики, обрезанные n-граммовые счетчики, изменённые n-граммовые счета и краткий штраф.

Функция отсеченного n-грамма отсчета Countclipпри необходимости обрезает количество n-граммов для каждого n-грамма так, чтобы оно не превышало наибольшее количество, наблюдаемое в одной ссылке для этого n-грамма. Функция обрезанных отсчетов задается как

Countclip(n-грамм)=минута(Граф(n-грамм),MaxRefCount(n-грамм)),

где Count(n-грамм) обозначает n-граммовые счетчики и MaxRefCount(n-грамм) - наибольшее количество n-граммов, наблюдаемое в одном справочном документе для этого n-грамма.

Изменённые счета точности заданы

pn=C{Кандидаты}n-граммCCountклип(n-грамм)C'{Кандидаты}n-граммCГраф(n-грамм),

где n соответствует n-граммовой длине и {candidates} - набор предложений в документах-кандидатах.

Учитывая вектор n-граммовых весов w, счет BLEU задаётся как

bleuScore=BP·exp(n=1Nwnlogp¯n),

где N - самая большая длина n-грамма, значения в p¯ соответствуют геометрическим средним измененным n-граммовым точностям, и BP - штраф за краткость, назначенный

BP={1если c>re1rcесли cr

где c - длина документа-кандидата, а r - длина справочного документа с длиной, ближайшей к длине кандидата.

Ссылки

[1] Папинени, Кишор, Салим Рукос, Тодд Уорд и Вэй-Цзин Чжу. BLEU: метод автоматической оценки машинного перевода. В работе 40-го ежегодного совещания по вопросам ассоциации по вычислительной лингвистике, стр. 311-318. Ассоциация вычислительной лингвистики, 2002 год.

Введенный в R2020a