与えられた重み= [0.25、0.25、0.25、0.25](デフォルト値)、
statement_bleu([['a'、 'b'、 'c']]、['a'、 'b'、 'c'])= 0
一方、sentence_bleu([['a'、 'b'、 'c']]、['a'、 'b'、 'd'])= 0.7598
明らかに、前のスコアは後者よりも大きいか、両方のスコアが0である必要があります
どのバージョンのコードを使用していますか?
$ python
>>> import nltk
>>> nltk.__version__
'3.2.1'
BLEUの実装は最近修正され、#1330が解決されました。 nltk
のdevelop
ブランチを使用している場合、これは次の出力になります。
>>> 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
または公式リリースをインストールすることをお勧めします)
関連する注記ですが、 bleu
の現在のnltk
実装には直接関係していませんが、#1330修正なしの以前の実装には、人気のあるmulti-bleu.perl
と同じ欠陥があります。 最近の修正なしで0が返された理由を知るのは興味深いかもしれません: https :
@alvationsに感謝し
BLEUの唯一の安定バージョンは、 develop
ブランチにあります。 NLTK 3.2.2でリリースされるのを待つか、 develop
ブランチをインストールしてください(ただし、開発ブランチはテストされていないバグにさらされる可能性があることに注意してください)。
わかった。 待ちます。 しかし、上記の場合、重みが[0.25、0.25、0.25、0.25]の場合、sentence_bleu([['a'、 'b'、 'c']]、['a'、 'bの結果'、' c '])とsentence_bleu([[' a '、' b '、' c ']]、[' a '、' b '、' d '])は、元の論文によると、両方とも0である必要があります
元の論文は、参照/仮説の長さがn
未満の場合、 p_n
が0になる可能性があるという事実を考慮していませんでした。http://www.aclwebのセクション2.3の式を参照してくださいn
未満の参照/仮説が存在する可能性はこのペーパーではカバーされていませんでした。
セクション2.3の式を見ると、 exp(log(p_n))
を取り、 p_n
が0の場合、対数関数(つまり、 y = log x
)のために数学ドメインエラーになります。 x = 0に漸近線があり、xの範囲は0より大きくなければなりません。
したがって、元のBLEUを実装する場合、数学ドメインエラーが発生すると、ユーザーは「BLEUを計算できません」などの警告を受け取る必要があります。 したがって、BLEUの新しいバージョンは、いくつかの異なるハックで修正しようとします。バージョンの履歴は、 ます。 pl#L17
BLEUの最新の表現には、Chen and Cherry(2014)の紙の平滑化機能が付属しており、Mosesバージョンのmteval.pl
は含まれていないことに注意してください。
説明がお役に立てば幸いです。
最も参考になるコメント
元の論文は、参照/仮説の長さが
n
未満の場合、p_n
が0になる可能性があるという事実を考慮していませんでした。http://www.aclwebのセクション2.3の式を参照してくださいn
未満の参照/仮説が存在する可能性はこのペーパーではカバーされていませんでした。セクション2.3の式を見ると、
exp(log(p_n))
を取り、p_n
が0の場合、対数関数(つまり、y = log x
)のために数学ドメインエラーになります。 x = 0に漸近線があり、xの範囲は0より大きくなければなりません。したがって、元のBLEUを実装する場合、数学ドメインエラーが発生すると、ユーザーは「BLEUを計算できません」などの警告を受け取る必要があります。 したがって、BLEUの新しいバージョンは、いくつかの異なるハックで修正しようとします。バージョンの履歴は、 ます。 pl#L17
BLEUの最新の表現には、Chen and Cherry(2014)の紙の平滑化機能が付属しており、Mosesバージョンの
mteval.pl
は含まれていないことに注意してください。説明がお役に立てば幸いです。