Bobot yang diberikan = [0.25, 0.25, 0.25, 0.25] (nilai default),
kalimat_bleu([['a', 'b', 'c']], ['a', 'b', 'c']) = 0
Sementara kalimat_bleu([['a', 'b', 'c']], ['a', 'b', 'd']) = 0.7598
Jelas skor sebelumnya harus lebih besar dari yang terakhir, atau kedua skor harus 0
Versi kode mana yang Anda gunakan?
$ python
>>> import nltk
>>> nltk.__version__
'3.2.1'
Implementasi BLEU baru saja diperbaiki dengan #1330 diselesaikan. Jika Anda menggunakan cabang develop
dari nltk
, ini akan menjadi output:
>>> 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
Karena string adalah daftar karakter dan nltk
mengimpor sentence_bleu()
ke impor tingkat atas, kode di atas sama dengan:
>>> 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
Untuk menginstal cabang develop
, coba:
pip install https://github.com/nltk/nltk/archive/develop.zip
( Perhatikan bahwa cabang pengembangan mengalami _lebih banyak bug tak terduga_ dan disarankan agar pengguna menginstal master
atau rilis resmi )
Pada catatan terkait tetapi tidak terlibat langsung dengan implementasi nltk
dari bleu
, implementasi sebelumnya tanpa perbaikan #1330 mengalami kelemahan yang sama dari multi-bleu.perl
. Mungkin Anda mungkin tertarik untuk mengetahui mengapa ia mengembalikan 0 tanpa perbaikan terbaru: https://Gist.github.com/alvations/e5922afa8c91472d25c58b2d712a93e7
Terima kasih @alvations . Versi asli nltk yang saya gunakan adalah 3.2. Saya telah memperbaruinya ke 3.2.1 sekarang dan sekarang meningkatkan ZeroDivisionError. Dan saya menggunakan Python 3.5.2
Satu-satunya versi stabil BLEU ada di cabang develop
. Harap tunggu hingga rilis di NLTK 3.2.2 atau instal cabang develop
(tetapi perhatikan bahwa cabang pengembangan mungkin mengalami bug yang belum diuji).
OKE. Aku akan menunggu. Tetapi dalam kasus yang Anda sebutkan di atas, jika bobotnya [0.25, 0.25, 0.25, 0.25], hasil dari kalimat_bleu([['a', 'b', 'c']], ['a', 'b ', 'c']) dan kalimat_bleu([['a', 'b', 'c']], ['a', 'b', 'd']) keduanya harus 0, sesuai dengan kertas asli
Makalah asli tidak memperhitungkan fakta bahwa p_n
dapat menjadi 0 jika panjang referensi/hipotesis kurang dari n
, lihat persamaan di Bagian 2.3 dari http://www.aclweb .org/antologi/P02-1040.pdf. Karena itu dimaksudkan untuk menjadi skor korpus, kemungkinan bahwa ada referensi/hipotesis kurang dari panjang n
tidak dibahas dalam makalah.
Jika kita melihat rumus di Bagian 2.3, dibutuhkan exp(log(p_n))
dan ketika p_n
adalah 0, ia masuk ke kesalahan domain matematika karena fungsi logaritma (yaitu y = log x
) memiliki asimtot di x = 0 , sehingga jangkauan x harus lebih dari 0.
Jadi jika kita menerapkan BLEU asli, pengguna akan menerima peringatan yang mengatakan sesuatu seperti "BLEU tidak dapat dihitung" setiap kali ada kesalahan domain matematika. Jadi versi BLEU yang lebih baru mencoba memperbaikinya dengan beberapa peretasan yang berbeda, riwayat versi dapat ditemukan di https://github.com/moses-smt/mosesdecoder/blob/master/scripts/generic/mteval-v13a. tolong#L17
Harap dicatat bahwa BLEU versi terbaru hadir dengan fungsi smoothing dari kertas Chen dan Cherry (2014) tidak ada dalam versi Musa mteval.pl
.
Semoga penjelasannya membantu.
Komentar yang paling membantu
Makalah asli tidak memperhitungkan fakta bahwa
p_n
dapat menjadi 0 jika panjang referensi/hipotesis kurang darin
, lihat persamaan di Bagian 2.3 dari http://www.aclweb .org/antologi/P02-1040.pdf. Karena itu dimaksudkan untuk menjadi skor korpus, kemungkinan bahwa ada referensi/hipotesis kurang dari panjangn
tidak dibahas dalam makalah.Jika kita melihat rumus di Bagian 2.3, dibutuhkan
exp(log(p_n))
dan ketikap_n
adalah 0, ia masuk ke kesalahan domain matematika karena fungsi logaritma (yaituy = log x
) memiliki asimtot di x = 0 , sehingga jangkauan x harus lebih dari 0.Jadi jika kita menerapkan BLEU asli, pengguna akan menerima peringatan yang mengatakan sesuatu seperti "BLEU tidak dapat dihitung" setiap kali ada kesalahan domain matematika. Jadi versi BLEU yang lebih baru mencoba memperbaikinya dengan beberapa peretasan yang berbeda, riwayat versi dapat ditemukan di https://github.com/moses-smt/mosesdecoder/blob/master/scripts/generic/mteval-v13a. tolong#L17
Harap dicatat bahwa BLEU versi terbaru hadir dengan fungsi smoothing dari kertas Chen dan Cherry (2014) tidak ada dalam versi Musa
mteval.pl
.Semoga penjelasannya membantu.