Существует тестовое предложение и контрольное предложение. Как я могу написать скрипт Python, который измеряет сходство между этими двумя предложениями в виде метрики BLEU, используемой при оценке автоматического машинного перевода?Рассчитать баллы BLEU в Python
ответ
Вы действительно просите две разные вещи. Я попытаюсь пролить свет на каждый из вопросов.
Часть I: Вычисление BLEU оценка
Вы можете рассчитать BLEU счет с помощью модуля BLEU под nltk
. См. here.
Оттуда вы можете легко вычислить оценку выравнивания между кандидатом и ссылочными предложениями.
Часть II: Вычислительное сходство
Я бы не предположить, используя BLEU оценку как мера сходства между первым кандидатом и вторым кандидатом, если вы стремитесь, чтобы измерить сходство на основе эталонного предложения.
Теперь, позвольте мне подробно остановиться на этом. Если вы подсчитаете баллы BLEU для кандидата по ссылке, то эта оценка просто поможет вам понять сходство между оценкой BLEU другого кандидата в сравнении с эталонным предложением, хотя ссылочное предложение остается неизменным.
Если вы намерены измерить сходство между двумя предложениями, лучший способ - word2vec. Вы можете вычислить угловое косинусное расстояние между векторами предложения, чтобы понять их сходство.
Для полного понимания того, что BLEU метрика делает, я предлагаю читать this, а также this для word2vec сходства.
вместо word2vec , более продвинутый doc2vec (или любое другое вложение предложений) был бы лучшим aproach, чтобы найти сходство в предложениях –
Оценка BLEU состоит из двух частей, измененной точности и краткости. Подробнее можно найти на странице paper. Вы можете использовать модуль nltk.align.bleu_score
внутри NLTK. примера Один кода можно увидеть, как показано ниже:
import nltk
hypothesis = ['It', 'is', 'a', 'cat', 'at', 'room']
reference = ['It', 'is', 'a', 'cat', 'inside', 'the', 'room']
#there may be several references
BLEUscore = nltk.translate.bleu_score.sentence_bleu([reference], hypothesis)
print BLEUscore
Обратите внимание, что оценка BLEU по умолчанию использует п = 4, который включает в себя юниграммы до 4 грамм. Если ваше предложение меньше 4, вам необходимо сбросить значение N, в противном случае будет возвращена ошибка ZeroDivisionError: Fraction(0, 0)
. Таким образом, вы должны сбросить вес, как это:
import nltk
hypothesis = ["open", "the", "file"]
reference = ["open", "file"]
#the maximum is bigram, so assign the weight into 2 half.
BLEUscore = nltk.translate.bleu_score.sentence_bleu([reference], hypothesis, weights = (0.5, 0.5))
print BLEUscore
Выполняет ли это это, если я передаю числа (словарные индексы в словаре) вместо фактических слов в массивах? –
@AshutoshBaheti Я думаю, что он должен быть таким же, как и число, столь же значимое, как и слово. Поэтому он должен работать хорошо. – ccy
Вы можете использовать пакет питона SacréBLEU (Python 3 только):
SacréBLEU обеспечивает беспроблемное вычисление разделяемых, сопоставимый, и воспроизводимые оценки BLEU. Вдохновленный Rico Sennrich's
multi-bleu-detok.perl
, он производит официальные оценки WMT, но работает с простым текстом. Он также знает все стандартные тестовые наборы и обрабатывает загрузку, обработку и токенизацию для вас.Зачем использовать эту версию BLEU?
- Он автоматически загружает общий WMT тестовых наборы и обрабатывает их в обычный текст
- Он производит короткую строку версии, которая облегчает кросс-бумага сравнение
- Он правильно вычисляет оценки на detokenized выходов, используя WMT (Conference on Machine Translation) стандарт лексического анализ
- Он производит то же значение, как официальный сценарий (
mteval-v13a.pl
) используется WMT- Он выдает счет BLEU без запятой, так что вам не нужен, чтобы удалить его с
sed
(Глядя на вас,multi-bleu.perl
)
Для установки: pip install sacrebleu
- 1. Как рассчитать баллы?
- 2. Python: как рассчитать баллы и как использовать ограничение по времени?
- 3. Как рассчитать баллы FactorAnalysis с помощью Python (scikit-learn)?
- 4. NLTK: уровень уровня bleu vs на уровне предложения BLEU
- 5. уменьшить баллы
- 6. Оценка суммирования текста - BLEU vs ROUGE
- 7. Баллы в регионе
- 8. Контрольные баллы в SSIS
- 9. Как напечатать упорядоченные баллы в python с помощью SQLite
- 10. Создание списка ранжирования в Python: как назначить баллы конкурсантам?
- 11. Как добавить баллы в карту?
- 12. Высокие баллы, содержащиеся в .xap
- 13. Как рассчитать Diff в python
- 14. Баллы как изображения
- 15. Средние баллы из массива
- 16. Intregrating ScoreLoop высокие баллы
- 17. Баллы и базы данных
- 18. Force V-Leaflet LMap, чтобы вернуть баллы
- 19. Python - рассчитать нормальное распределение
- 20. Расчет проценты и баллы
- 21. Рассчитать гомографию на Python
- 22. Как рассчитать timedelta python
- 23. Баллы между двумя местоположениями
- 24. Как максимизировать общие баллы?
- 25. Площадь, которая содержит баллы?
- 26. Невозможно пересечь баллы
- 27. Как нормализовать баллы по фитнесу?
- 28. Почему я не могу отобрать выбранные баллы?
- 29. Выбор ядра (случайные) баллы Задача
- 30. Python - Рассчитать время передачи файла
Другое чем BLEU, если вы хотите использовать метрики MT подобия: http://alt.qcri.org/semeval2015/cdrom/pdf/SemEval015.pdf – alvas