РУМНИТЕ свои результаты НЛП!

Следующая метрика, обсуждаемая в этой серии сообщений о метриках, используемых в обработке естественного языка, — это дублер, ориентированный на припоминание, для оценки Gisting (ROUGE).
ROUGE — это оценочная метрика, используемая для оценки качества задач НЛП, таких как суммирование текста и машинный перевод. В отличие от BLEU , ROUGE использует полноту и точность для сравнения сводок, сгенерированных моделью, известных как кандидаты, с набором сводок, созданных человеком, известных как эталоны. Он измеряет, сколько n-грамм в ссылках находится в предсказанном кандидате.
Во-первых, давайте рассчитаем отзыв = истинные положительные результаты / (истинные положительные результаты + ложные отрицательные результаты). Здесь True Positives — это совпадающие n-граммы между References и Candidates. Ложные отрицания можно рассматривать как n-граммы, которые находятся в реальных предложениях (ссылках), но не в кандидате. Таким образом, ложные срабатывания — это n-граммы, которые присутствуют в кандидате, но отсутствуют в ссылках. Ознакомьтесь с этой записью в блоге Recall, Precision, F1-Score , если вам нужно освежить в памяти такие понятия, как True Positives, False Positives, Recall и Precision и т. д.
Следовательно, отзыв и точность могут быть получены, как показано ниже:


Отзыв и точность иногда могут дополнять друг друга, поэтому для достижения баланса необходимо объединить их оба. По этой причине ROUGE рассчитывается как оценка F1 в Python. Значение варьируется от 0 до 1, и чем ближе значение к 1, тем лучше качество прогноза.
РУЖ-Н
Давайте воспользуемся модулем оценки из пакета «оценить» Huggingface и шаг за шагом проверим вычисления. Предположим, что по результатам модели суммирования получен следующий корпус с двумя ссылками на каждого кандидата.
!pip install evaluate
!pip install rouge-score
import evaluate
rouge = evaluate.load('rouge')
predictions = ["Transformers Transformers are fast plus efficient",
"Good Morning", "I am waiting for new Transformers"]
references = [
["HuggingFace Transformers are fast efficient plus awesome",
"Transformers are awesome because they are fast to execute"],
["Good Morning Transformers", "Morning Transformers"],
["People are eagerly waiting for new Transformer models",
"People are very excited about new Transformers"]
]
results = rouge.compute(predictions=predictions, references=references)
print(results)
{'rouge1': 0.6659340659340659, 'rouge2': 0.45454545454545453,
'rougeL': 0.6146520146520146, 'rougeLsum': 0.6146520146520146}
Candidate 1: Transformers Transformers are fast plus efficient
Reference 1: HuggingFace Transformers are fast efficient plus awesome
Reference 2: Transformers are awesome because they are fast to execute
Recall = 5/7 = 0.7142857
Precision = 5/6 = 0.8333333
F1-Score = 2 * (0.7142857) * (0.8333333)/(0.7142857 + 0.8333333) = 0.7692307
Candidate 2 and the respective Reference 1: 0.8
Candidate 3 and the respective Reference 1: 0.4285714
Mean F1-Score = (0.7692307 + 0.8 + 0.4285714)/3 = 0.665934
РУЖ-Л
Здесь L обозначает самую длинную общую подпоследовательность (LCS). LCS определяется как самая длинная подпоследовательность, которая встречается как в эталоне, так и в кандидате. Подпоследовательность здесь не обязательно должна быть непрерывной. Вместо подсчета количества совпадающих n-грамм мы здесь измеряем длину LCS. Преимущество этого подхода заключается в том, что учитывается порядок слов в предложении, а не только поиск совпадающих n-грамм, которые могут появляться в любом порядке. Кроме того, нам также не нужно указывать порядок (n) n-грамм для использования в расчетах.

В приведенной выше формуле X и Y являются эталоном и кандидатом с длинами m и n соответственно. Бета используется для контроля того, что важнее — полнота или точность. Когда он равен 1, F_lcs является просто средним гармоническим значением Recall (R_lcs) и Precision (P_lcs). Иногда мы можем захотеть отдать приоритет отзыву, т. е. более важно, чтобы большинство n-грамм в ссылках присутствовали в кандидатах. Этого можно достичь, увеличив бета до значения > 1.
Теперь давайте посмотрим на эту формулу в действии. LCS для каждого набора ссылок-кандидатов показан ниже:
C1-R1: Transformers are fast plus
C1-R2: Transformers are fast
C2-R1: Good Morning
C2-R2: Morning
C3-R1: waiting for new
C3-R2: new Transformers
Так же, как и в ROUGE-N, мы рассматриваем ссылку с максимальной длиной между двумя ссылками для каждого кандидата. Поэтому мы рассчитываем F1-Score для пары C1-R1 с длиной LCS 4. Оценки для Кандидатов 2 и 3 такие же, как у ROUGE-1. Это связано с тем, что длина LCS между ссылками такая же, как и количество совпадающих униграмм для 2 и 3. Затем весь расчет суммируется как:
C1-R1:
Recall = 4/7
Precision = 4/6
ROUGE-L F1 = 2 * (4/7) * (4/6)/((4/6) + (4/7)) = 0.6153846
C2-R1 ROUGE-L F1 = 0.8
C3-R1 ROUGE-L F1 = 0.4285714
Final ROUGE-L F1 = (0.6153846 + 0.8 + 0.4285714)/3 = 0.614652
Преимущества
- Легко вычисляется и понимается и обычно используется для оценки систем реферирования текста.
- ROUGE и его варианты хорошо зарекомендовали себя при обобщении отдельных документов и коротких текстов.
- У ROUGE та же проблема с синонимами, что и у BLEU. Значение n-грамм не учитывается, и, следовательно, «быстрый» и «быстрый» не будут считаться похожими.
- Оценка сильно зависит от выбора слова и структуры ссылок, выбранных для оценки.
использованная литература
Я студент магистра наук о данных @ TU Dortmund. Не стесняйтесь связаться со мной в LinkedIn для получения любых отзывов о моих сообщениях или любого профессионального общения.