BLEU和SPICE:機器翻譯與圖像描述的自動評估方法詳解

BLEU和SPICE:機器翻譯與圖像描述的自動評估方法詳解

在機器翻譯和圖像描述領域,評估模型性能是一個重要且復雜的問題。為了有效地評估機器生成的文本質量,我們需要一種自動、快速且可靠的方法。BLEU(Bilingual Evaluation Understudy)和SPICE(Semantic Propositional Image Caption Evaluation)是其中兩種廣泛使用的方法,本文將詳細介紹它們的工作原理及其優缺點。

BLEU:機器翻譯評估方法

1. BLEU的基本原理

BLEU是一種自動化的機器翻譯評估方法,通過計算候選翻譯(candidate)和參考翻譯(reference)之間的n-gram匹配來評估翻譯質量。n-gram是指將句子中相鄰的n個單詞組合在一起的方式,例如:

  • 1-gram:{it, is, a, nice, day, today}
  • 2-gram:{it is, is a, a nice, nice day, day today}
  • 3-gram:{it is a, is a nice, a nice day, nice day today}

2. n-gram相似度計算

候選翻譯和參考翻譯的n-gram匹配度通過以下方式計算:

假設候選句子為 “It is a nice day today”,參考句子為 “Today is a nice day”。我們可以得到以下匹配情況:

  • 1-gram相似度:{it, is, a, nice, day, today} vs {today, is, a, nice, day},匹配項為 {is, a, nice, day},相似度為 p1 = 5/6 = 0.83。
  • 2-gram相似度:{it is, is a, a nice, nice day, day today} vs {today is, is a, a nice, nice day},匹配項為 {is a, a nice, nice day},相似度為 p2 = 3/5 = 0.6。
  • 3-gram相似度:{it is a, is a nice, a nice day, nice day today} vs {today is a, is a nice, a nice day},匹配項為 {is a nice, a nice day},相似度為 p3 = 2/4 = 0.5。

3. 特殊情況處理

情況1:重復單詞

對于候選句子 “the the the the” 和參考句子 “The cat is standing on the ground”。如果不加以限制,1-gram相似度 p1 會等于 1。為了解決這個問題,需要對單詞計數進行截斷,計數取候選句子和參考句子中的最小值。這樣計算得到的 p1 = 1/4。

情況2:長度懲罰因子

候選句子 “a nice day” 和參考句子 “Today is a nice day” 的匹配度可能會因為句子長度較短而偏高。為了避免這種現象,BLEU 引入了長度懲罰因子(Brevity Penalty,BP)。計算公式如下:

B P = { 1 if? c > r e ( 1 ? r / c ) if? c ≤ r BP = \begin{cases} 1 & \text{if } c > r \\ e^{(1 - r/c)} & \text{if } c \leq r \end{cases} BP={1e(1?r/c)?if?c>rif?cr?

其中,c 表示候選翻譯的長度,r 表示參考翻譯的長度。

4. BLEU最終公式

為了平衡各階n-gram統計量的作用,通常取 N = 4,并對各階統計量進行加權求和,權重 w n w_n wn? 1 / n 1/n 1/n。BLEU最終計算公式如下:

B L E U = B P ? exp ? ( ∑ n = 1 N w n log ? p n ) BLEU = BP \cdot \exp \left( \sum_{n=1}^{N} w_n \log p_n \right) BLEU=BP?exp(n=1N?wn?logpn?)

5. BLEU代碼示例

以下是一個計算BLEU得分的Python代碼示例:

from nltk.translate.bleu_score import sentence_bleureference = [['today', 'is', 'a', 'nice', 'day']]
candidate = ['it', 'is', 'a', 'nice', 'day', 'today']
score = sentence_bleu(reference, candidate)
print('BLEU score:', score)

SPICE:圖像描述評估方法

1. SPICE的基本原理

BLEU在某些情況下表現不佳,例如“A shiny metal pot filled with some diced veggies.”和“The pan on the stove has chopped vegetables in it.”意思相近,但BLEU得分可能較低。為了彌補這一不足,SPICE通過比較語義命題內容(semantic propositional content)來提升圖像描述的評估性能。

2. Scene Graphs

SPICE通過對比候選描述和參考描述的scene graphs來進行評估。scene graph 表征了對象(object)、對象的屬性(attribute)以及對象之間的關系(relation)。如下圖所示:

3. F-score計算

定義候選描述為c,參考描述集合為S={s1, s2, …, sn},G()表示scene graph,T()表示從scene graph中得到的logical tuples。例如,圖1的logical tuple為:

{(girl), (court), (girl, young), (girl, standing), (court, tennis), (girl, on-top-of, court)}

定義精度P和召回R,SPICE的相似度計算如下:

P = ∣ T ( G ( c ) ) ∩ T ( G ( S ) ) ∣ ∣ T ( G ( c ) ) ∣ P = \frac{|T(G(c)) \cap T(G(S))|}{|T(G(c))|} P=T(G(c))T(G(c))T(G(S))?
R = ∣ T ( G ( c ) ) ∩ T ( G ( S ) ) ∣ ∣ T ( G ( S ) ) ∣ R = \frac{|T(G(c)) \cap T(G(S))|}{|T(G(S))|} R=T(G(S))T(G(c))T(G(S))?
F 1 = 2 P R P + R F1 = \frac{2PR}{P + R} F1=P+R2PR?

其中 ( T x T ) (T x T) (TxT) 方法表示從兩個scene graph中返回matching tuples,通過wordnet數據同義詞查找得到。

4. SPICE代碼示例

以下是一個計算SPICE得分的Python代碼示例:

from spice import spice_scorereference = "The pan on the stove has chopped vegetables in it."
candidate = "A shiny metal pot filled with some diced veggies."
score = spice_score(reference, candidate)
print('SPICE score:', score)

參考文獻

  • BLEU: a method for automatic evaluation of machine translation.
  • SPICE: Semantic Propositional Image Caption Evaluation.
  • Meteor Universal: Language Specific Translation Evaluation for Any Target Language.

總結

BLEU和SPICE是兩種常用的自動評估方法,各有優缺點。BLEU通過計算n-gram匹配來評估翻譯的流暢性和保真度,適用于機器翻譯的自動評估。SPICE通過比較語義內容和scene graphs來提升圖像描述的評估性能,更適合評估圖像描述的語義一致性。選擇適合的方法可以提高評估的準確性和有效性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/37239.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37239.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37239.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于決策樹的旋轉機械故障診斷(Python)

前置文章: 將一維機械振動信號構造為訓練集和測試集(Python) https://mp.weixin.qq.com/s/DTKjBo6_WAQ7bUPZEdB1TA 旋轉機械振動信號特征提取(Python) https://mp.weixin.qq.com/s/VwvzTzE-pacxqb9rs8hEVw import…

菲爾茲獎得主測試GPT-4o,經典過河難題未能破解!最強Claude 3.5回答離譜!

目錄 01 大言模型能否解決「狼-山羊-卷心菜」經典過河難題? 02 加大難度:100只雞、1000只雞如何? 01 大言模型能否解決「狼-山羊-卷心菜」經典過河難題? 最近,菲爾茲獎得主Timothy Gowers分享了他測試GPT-4o的經歷&a…

游戲推薦: 植物大戰僵尸雜交版

下載地址網上一搜就有. 安裝就能玩. 2是顯血. 4顯示植物血, 5是加速. 都是左手主鍵盤的按鈕, 再按是取消. 比較刺激: ps: 設置里面還能打開自動收集陽光和金幣.

視頻融合共享平臺LntonCVS統一視頻接入平臺智慧安防應用方案

安防視頻監控平臺LntonCVS是一款擁有強大拓展性和靈活部署能力的綜合管理平臺。它支持多種主流標準協議,包括國標GB28181、RTSP/Onvif、RTMP等,同時兼容各廠家的私有協議和SDK,如海康Ehome、海大宇等。LntonCVS不僅具備傳統安防視頻監控功能&…

深入解析Tomcat:Java Web服務器(上)

深入解析Tomcat:Java Web服務器(上) Apache Tomcat是一個開源的Java Web服務器和Servlet容器,用于運行Java Servlets和JavaServer Pages (JSP)。Tomcat在Java Web應用開發中扮演著重要角色。本文將詳細介紹Tomcat的基本概念、安裝…

遙遠星辰中的覺醒:超大質量黑洞的蘇醒

遙遠星辰中的覺醒:超大質量黑洞的蘇醒 在浩渺無垠的宇宙中,星辰的閃爍仿佛是時間的漣漪,穿越億萬年的距離,抵達我們的眼眸。而在這片星辰大海的深處,一個驚人的現象正在悄然上演——距離地球3.6億光年之遙的星系中&am…

【C++】空指針訪問成員函數

空指針訪問成員函數 C中空指針也是可以調用成員函數的,但是也要注意有沒有用到this指針 如果用到this指針,需要加以判斷保證代碼的健壯性 class Animal { public:void fun1() {//正常的成員函數}void fun2() {if (this NULL) {return;//如果沒有這個…

Django 一對一關系

作用: 兩個數據庫表建立外鍵關系當外鍵表的數據被刪除時,主表的數據也會一并刪除。 1,添加表模型 Test/app8/views.pyfrom django.db import modelsclass User(models.Model):username models.CharField(max_length50, uniqueTrue)email …

【代碼隨想錄訓練營】【Day 65】【圖論-2】| 卡碼 99

【代碼隨想錄訓練營】【Day 65】【圖論-2】| 卡碼 99 需強化知識點 深度搜索和廣度搜索 題目 99. 島嶼數量 思想:遍歷到為1的節點,再搜索標記,每遇到新的陸地節點,增加計數 深度搜索廣度搜索:此處用 [] 作為待遍…

前端面試必備:深入解析Vue.js中v-if與v-show的原理與應用

前言 在Vue.js中,條件渲染是一個核心的概念,它允許我們根據數據的狀態來動態地顯示或隱藏元素。v-if和v-show是Vue.js提供的兩個最常用的條件渲染指令,它們在表面上看起來很相似,但實際上在背后的工作原理和適用場景上有著顯著的…

2024年度濰坊市職業技能大賽 —網絡搭建(網絡與信息安全管理員)職業技能競賽賽項規程

2024年度濰坊市職業技能大賽 —網絡搭建(網絡與信息安全管理員)職業技能競賽賽項技術文件................................ 一、賽項簡介...................................... 3 二、競賽規程...................................... 3 &#xff08…

【Linux系統】進程替換 自主實現shell(簡易版)

1.先看代碼 && 現象 我們用exec*函數執行新的程序, exec*系列的函數,執行完畢后,后續的代碼不見了,因為被替換了。 execl的返回值可以不關心了,只要替換成功,就不會向后繼續運行,只要…

第5講:建立自己的C函數庫,js調用自己寫的C/C++函數,并包含依賴C/C++第三方靜態庫。

在javascript中,Array有很多內置的功能,比如Array.map,Array.filter,Array.find等等,能用內置的功能就用內置的功能,最好不要自己實現一套,因為底層調用的可能壓根就不是js語言本身,…

[AIGC] awk 和 sed

在Unix系統中,有兩種強大的用于文本操作的命令工具,它們就是awk和sed。這兩個命令工具是每個Linux用戶必備的知識之一,尤其對于需要進行文本處理或數據抽取的開發者來說,更加重要。 在實際開發過程中,我們常常需要處理…

JavaScript中的hasOwnProperty方法詳解

JavaScript中的hasOwnProperty方法詳解 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 什么是hasOwnProperty方法? 在JavaScript中,h…

Wails 安裝初體驗

文章目錄 Wails 安裝說明1. 系統要求2. 安裝步驟3. 構建應用 結論 Wails 安裝說明 Wails 是一個用于構建桌面應用的 Go 框架,結合了現代前端技術。以下是安裝步驟: 1. 系統要求 Go 1.16 或更高版本Node.js 和 npm可選:適用于 Windows、mac…

【機器學習】機器學習的重要方法——強化學習:理論,方法與實踐

目錄 一、強化學習的核心概念 二、強化學習算法的分類與示例代碼 三.強化學習的優勢 四.強化學習的應用與挑戰 五、總結與展望 強化學習:理論,方法和實踐 在人工智能的廣闊領域中,強化學習(Reinforcement Learning, RL&…

轉自羅翔老師的畢業寄語(二)

其實我很想祝大家一帆風順,可是我覺得這不現實。 智者說人這一生至少有三件事是無法避免的,一個是苦難,一個是邪惡,還有一個是人生的終點。所以真的愿我們每時每刻都在當下存儲足夠美好的記憶去對抗人生不期而至的苦楚&#xff0c…

基于源碼詳解ThreadPoolExecutor實現原理

個人博客地址 基于源碼詳解ThreadPoolExecutor實現原理 | iwts’s blog 內容拆分 這里算是一個總集,內容太多,拆分成幾個比較重要的小的模塊: ThreadPoolExecutor基于ctl變量的聲明周期管理 | iwts’s blog ThreadPoolExecutor 工作線程…

模板方法模式在金融業務中的應用及其框架實現

引言 模板方法模式(Template Method Pattern)是一種行為設計模式,它在一個方法中定義一個算法的框架,而將一些步驟的實現延遲到子類中。模板方法允許子類在不改變算法結構的情況下重新定義算法的某些步驟。在金融業務中&#xff…