<p>nltk.translate.bleu_score๋Š” ngram์ด ์ฃผ์–ด์ง„ ๋ฌธ์žฅ์˜ ์ตœ๋Œ€ ngram๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.</p>

์— ๋งŒ๋“  2016๋…„ 12์›” 09์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: nltk/nltk

์ฃผ์–ด์ง„ ๊ฐ€์ค‘์น˜ = [0.25, 0.25, 0.25, 0.25](๊ธฐ๋ณธ๊ฐ’),
๋ฌธ์žฅ_๋ธ”๋ฃจ([['์•„', 'b', 'c']], ['์•„', '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์˜ ์ตœ์‹  ๋ฒ„์ „์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋‹ค๋ฅธ ํ•ดํ‚น์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ ๊ธฐ๋ก์€ https://github.com/moses-smt/mosesdecoder/blob/master/scripts/generic/mteval-v13a ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

BLEU์˜ ์ตœ์‹  ๋ฒ„์ „์€ Chen and Cherry(2014) ๋…ผ๋ฌธ์˜ ์Šค๋ฌด๋”ฉ ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋ฉฐ mteval.pl ์˜ Moses ๋ฒ„์ „์—๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์„ค๋ช…์ด ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  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 ๋˜๋Š” ๊ณต์‹ ๋ฆด๋ฆฌ์Šค๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. )


๊ด€๋ จ ์ฐธ๊ณ  ์‚ฌํ•ญ์ด์ง€๋งŒ bleu ์˜ ํ˜„์žฌ nltk ๊ตฌํ˜„๊ณผ ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ จ๋˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ #1330 ์ˆ˜์ • ์‚ฌํ•ญ์ด ์—†๋Š” ์ด์ „ ๊ตฌํ˜„์€ ์ธ๊ธฐ ์žˆ๋Š” multi-bleu.perl ์˜ ๋™์ผํ•œ ๊ฒฐํ•จ์— ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ ์ˆ˜์ • ์—†์ด 0์„ ๋ฐ˜ํ™˜ํ•œ ์ด์œ ๋ฅผ ์•„๋Š” ๊ฒƒ์ด ํฅ๋ฏธ๋กœ์šธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. https://gist.github.com/alvations/e5922afa8c91472d25c58b2d712a93e7

@alvations ๊ฐ์‚ฌ

BLEU์˜ ์œ ์ผํ•œ ์•ˆ์ •์ ์ธ ๋ฒ„์ „์€ develop ๋ถ„๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. NLTK 3.2.2์—์„œ ๋ฆด๋ฆฌ์Šค๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ develop ๋ถ„๊ธฐ๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค(๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ๋ฐœ ๋ถ„๊ธฐ๋Š” ํ…Œ์ŠคํŠธ๋˜์ง€ ์•Š์€ ๋ฒ„๊ทธ์˜ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

ํ™•์ธ. ๊ธฐ๋‹ค๋ฆด๊ฒŒ. ๊ทธ๋Ÿฌ๋‚˜ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒฝ์šฐ ๊ฐ€์ค‘์น˜๊ฐ€ [0.25, 0.25, 0.25, 0.25]์ธ ๊ฒฝ์šฐ ๋ฌธ์žฅ_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์˜ ์ตœ์‹  ๋ฒ„์ „์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋‹ค๋ฅธ ํ•ดํ‚น์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ ๊ธฐ๋ก์€ https://github.com/moses-smt/mosesdecoder/blob/master/scripts/generic/mteval-v13a ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

BLEU์˜ ์ตœ์‹  ๋ฒ„์ „์€ Chen and Cherry(2014) ๋…ผ๋ฌธ์˜ ์Šค๋ฌด๋”ฉ ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋ฉฐ mteval.pl ์˜ Moses ๋ฒ„์ „์—๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์„ค๋ช…์ด ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰