<p>nltk.translate.bleu_scoreは、指定された文の最大ngramよりもngramが大きい場合、誤った結果を返します。</p>

作成日 2016年12月09日  ·  5コメント  ·  ソース: nltk/nltk

与えられた重み= [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である必要があります

最も参考になるコメント

元の論文は、参照/仮説の長さが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は含まれていないことに注意してください。

説明がお役に立てば幸いです。

全てのコメント5件

どのバージョンのコードを使用していますか?

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

BLEUの実装は最近修正され、#1330が解決されました。 nltkdevelopブランチを使用している場合、これは次の出力になります。

>>> 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

文字列は文字のリストであり、 nltksentence_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は含まれていないことに注意してください。

説明がお役に立てば幸いです。

このページは役に立ちましたか?
0 / 5 - 0 評価