<p>يعطي nltk.translate.bleu_score نتيجة خاطئة عندما يكون ngram أكبر من الحد الأقصى ngrams لجملة معينة</p>

تم إنشاؤها على ٩ ديسمبر ٢٠١٦  ·  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 / مختارات / 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. رر # L17

يرجى ملاحظة أن الإصدار الأخير من BLEU يأتي مع وظائف التنعيم من ورق Chen and Cherry (2014) ليس في إصدار Moses من 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 . ربما تجد أنه من المثير للاهتمام معرفة سبب إرجاعه للصفر بدون الإصلاح الأخير: 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] ، فإن نتائج الجمل_بليليو ([['a'، 'b'، 'c']]، ['a'، 'b يجب أن يكون كل من '،' c ']) وكسلي_بليو ([[' a '،' b '،' c ']]، [' a '،' b '،' d ']) صفرًا ، وفقًا للورقة الأصلية

لم تأخذ الورقة الأصلية في الحسبان حقيقة أن p_n يمكن أن يكون 0 إذا كان طول المرجع / الفرضية أقل من n ، راجع المعادلة في القسم 2.3 من http: //www.aclweb .org / مختارات / 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. رر # L17

يرجى ملاحظة أن الإصدار الأخير من BLEU يأتي مع وظائف التنعيم من ورق Chen and Cherry (2014) ليس في إصدار Moses من mteval.pl .

آمل أن يساعد الشرح.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

DavidNemeskey picture DavidNemeskey  ·  4تعليقات

stevenbird picture stevenbird  ·  3تعليقات

chaseireland picture chaseireland  ·  3تعليقات

alvations picture alvations  ·  4تعليقات

libingnan54321 picture libingnan54321  ·  3تعليقات