<p>nltk.translate.bleu_score memberikan hasil yang salah ketika ngram lebih besar dari ngram maksimum dari kalimat yang diberikan</p>

Dibuat pada 9 Des 2016  ·  5Komentar  ·  Sumber: nltk/nltk

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

Komentar yang paling membantu

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.

Semua 5 komentar

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.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

DavidNemeskey picture DavidNemeskey  ·  4Komentar

chaseireland picture chaseireland  ·  3Komentar

ndvbd picture ndvbd  ·  4Komentar

alvations picture alvations  ·  4Komentar

talbaumel picture talbaumel  ·  4Komentar