<p>nltk.translate.bleu_score Π΄Π°Π΅Ρ‚ Π»ΠΎΠΆΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠΎΠ³Π΄Π° ngram большС, Ρ‡Π΅ΠΌ максимальноС ngrams Π΄Π°Π½Π½ΠΎΠ³ΠΎ прСдлоТСния</p>

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 9 Π΄Π΅ΠΊ. 2016  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: nltk/nltk

Π—Π°Π΄Π°Π½Π½Ρ‹ΠΉ вСс = [0,25, 0,25, 0,25, 0,25] (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ),
ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅_bleu ([['a', 'b', 'c']], ['a', 'b', 'c']) = 0
Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅_bleu ([['a', 'b', 'c']], ['a', 'b', 'd']) = 0,7598
ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ прСдыдущая ΠΎΡ†Π΅Π½ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ большС послСднСй, ΠΈΠ»ΠΈ ΠΎΠ±Π΅ ΠΎΡ†Π΅Π½ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π½Ρ‹ 0.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’ исходной ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ учитывался Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ p_n ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 0, Ссли Π΄Π»ΠΈΠ½Π° ссылки / Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹ мСньшС n , см. Π£Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 2.3 http: //www.aclweb .org / anthology / P02-1040.pdf. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΎΠΉ корпуса, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ссылки / Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹ мСньшС Π΄Π»ΠΈΠ½Ρ‹ n Π½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»Π°ΡΡŒ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Если ΠΌΡ‹ посмотрим Π½Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 2.3, ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ exp(log(p_n)) ΠΈ ΠΊΠΎΠ³Π΄Π° p_n Ρ€Π°Π²Π½ΠΎ 0, ΠΎΠ½Π° ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² ΠΎΡˆΠΈΠ±ΠΊΡƒ матСматичСской области, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ функция Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, y = log x ) ΠΈΠΌΠ΅Π΅Ρ‚ асимптоту ΠΏΡ€ΠΈ x = 0, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ x Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ большС 0.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π±Ρ‹ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ исходный BLEU, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ говорится Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Β«BLEU Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вычислСн» всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка матСматичСской области. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠ΅ вСрсии BLEU ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ…Π°ΠΊΠΎΠ², ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ вСрсий ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° https://github.com/moses-smt/mosesdecoder/blob/master/scripts/generic/mteval-v13a. pl # L17

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ послСдняя вСрсия BLEU поставляСтся с функциями сглаТивания ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ Π§Π΅Π½Π° ΠΈ Π§Π΅Ρ€Ρ€ΠΈ (2014), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ Π² вСрсии mteval.pl МоисСя.

НадСюсь, объяснСниС ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.

ВсС 5 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠšΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ΄Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅?

$ python
>>> import nltk
>>> nltk.__version__
'3.2.1'

РСализация BLEU Π±Ρ‹Π»Π° Π½Π΅Π΄Π°Π²Π½ΠΎ исправлСна: Ρ€Π΅ΡˆΠ΅Π½ΠΎ # 1330. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π²Π΅Ρ‚Π²ΡŒ develop для nltk , это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ:

>>> import nltk
>>> from nltk import bleu
>>> ref = hyp = 'abc'
>>> bleu([ref], hyp)
1.0
>>> from nltk import bleu
>>> ref, hyp = 'abc', 'abd'
>>> bleu([ref], hyp)
0.7598356856515925

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ строка прСдставляСт собой список символов, Π° nltk ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ sentence_bleu() Π² ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ:

>>> from nltk.translate.bleu_score import sentence_bleu
>>> sentence_bleu([['a', 'b', 'c']], ['a', 'b', 'c'])
1.0
>>> sentence_bleu([['a', 'b', 'c']], ['a', 'b', 'd'])
0.7598356856515925

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ послСднюю Π²Π΅Ρ‚ΠΊΡƒ develop , ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅:

pip install https://github.com/nltk/nltk/archive/develop.zip

( ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ‚Π²ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π° _Π±ΠΎΠ»Π΅Π΅ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ ошибкам_, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ рСкомСндуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ master ΠΈΠ»ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ выпуск )


По ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡŽ, Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΌΡƒ прямого ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ nltk bleu , прСдыдущая рСализация Π±Π΅Π· исправлСния # 1330 ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π° Ρ‚Π΅ΠΌ ΠΆΠ΅ нСдостаткам, Ρ‡Ρ‚ΠΎ ΠΈ популярная multi-bleu.perl . Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ интСрСсно ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ Π²Π΅Ρ€Π½ΡƒΠ» 0 Π±Π΅Π· Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ исправлСния: https://gist.github.com/alvations/e5922afa8c91472d25c58b2d712a93e7

Бпасибо @alvations . ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ вСрсия nltk, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я использовал, Π±Ρ‹Π»Π° 3.2. Π― ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Π΅Π³ΠΎ Π΄ΠΎ 3.2.1, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ZeroDivisionError. И я использовал Python 3.5.2

ЕдинствСнная ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ вСрсия BLEU находится Π² Π²Π΅Ρ‚ΠΊΠ΅ develop . ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ Π² NLTK 3.2.2, ΠΈΠ»ΠΈ установитС Π²Π΅Ρ‚ΠΊΡƒ develop (Π½ΠΎ ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ‚ΠΊΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π° Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ ошибкам).

Π’ ΠŸΠžΠ Π―Π”ΠšΠ•. Π― ΠΏΠΎΠ΄ΠΎΠΆΠ΄Ρƒ. Но Π² случаС, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ упомянули Π²Ρ‹ΡˆΠ΅, Ссли вСс Ρ€Π°Π²Π΅Π½ [0,25, 0,25, 0,25, 0,25], Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ offer_bleu ([['a', 'b', 'c']], ['a', 'b ',' c ']) ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅_bleu ([[' a ',' b ',' c ']], [' a ',' b ',' d ']) ΠΎΠ±Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π½Ρ‹ 0, согласно исходной ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π’ исходной ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ учитывался Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ p_n ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 0, Ссли Π΄Π»ΠΈΠ½Π° ссылки / Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹ мСньшС n , см. Π£Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 2.3 http: //www.aclweb .org / anthology / P02-1040.pdf. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΎΠΉ корпуса, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ссылки / Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹ мСньшС Π΄Π»ΠΈΠ½Ρ‹ n Π½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»Π°ΡΡŒ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Если ΠΌΡ‹ посмотрим Π½Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 2.3, ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ exp(log(p_n)) ΠΈ ΠΊΠΎΠ³Π΄Π° p_n Ρ€Π°Π²Π½ΠΎ 0, ΠΎΠ½Π° ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² ΠΎΡˆΠΈΠ±ΠΊΡƒ матСматичСской области, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ функция Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, y = log x ) ΠΈΠΌΠ΅Π΅Ρ‚ асимптоту ΠΏΡ€ΠΈ x = 0, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ x Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ большС 0.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π±Ρ‹ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ исходный BLEU, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ говорится Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Β«BLEU Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вычислСн» всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка матСматичСской области. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠ΅ вСрсии BLEU ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ…Π°ΠΊΠΎΠ², ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ вСрсий ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° https://github.com/moses-smt/mosesdecoder/blob/master/scripts/generic/mteval-v13a. pl # L17

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ послСдняя вСрсия BLEU поставляСтся с функциями сглаТивания ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ Π§Π΅Π½Π° ΠΈ Π§Π΅Ρ€Ρ€ΠΈ (2014), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ Π² вСрсии mteval.pl МоисСя.

НадСюсь, объяснСниС ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ