網(wǎng)上有很多關(guān)于pos機sn,機器翻譯的自動(dòng)化測試與改進(jìn)的知識,也有很多人為大家解答關(guān)于pos機sn的問(wèn)題,今天pos機之家(m.xjcwpx.cn)為大家整理了關(guān)于這方面的知識,讓我們一起來(lái)看下吧!
本文目錄一覽:
1、pos機sn
pos機sn
引用:Automatic Testing and Improvement of Machine Translation Z Sun,JM Zhang,M Harman,M Papadakis,L Zhang // ICSE '20: 42nd International Conference on Software Engineering
摘要本文提出一種測試和修復機器翻譯系統一致性的自動(dòng)方法——TransRepair,在沒(méi)有標準翻譯的情況下,結合 metamorphic testing 蛻變測試的 mutation 突變檢測不一致的問(wèn)題,然后采用 probability-reference 或 cross-reference 對翻譯進(jìn)行后處理,以灰盒或黑盒的方式修復不一致的問(wèn)題。對谷歌翻譯和 Transformer 的評估表明,TransRepair 在生成翻譯一致的輸入對方面具有很高的準確率 (99%),使用自動(dòng)一致性度量和手動(dòng)評估,發(fā)現谷歌翻譯和 Transformer 大約有 36%和 40%的不一致 bug。黑盒修復了平均 28%和 19%的谷歌翻譯和 Transformer 錯誤,灰盒修復了平均 30%的 Transformer 錯誤。手動(dòng)檢查表明,TransRepair 修復的譯文在 87%的情況下提高了一致性(在 2%的情況下降低了一致性),在 27%的情況下的修復具有更好的翻譯可接受性(在 8%的情況下降低了可接受性)。
1 介紹機器學(xué)習已經(jīng)成功地提供了通用的自然語(yǔ)言翻譯系統,許多系統能夠實(shí)時(shí)有效地在數千種語(yǔ)言之間進(jìn)行翻譯[20]。然而,這樣的翻譯系統并不完美,用戶(hù)體驗到的錯誤與傳統的、基于非機器學(xué)習的軟件系統有著(zhù)不同的特點(diǎn)。
誤譯的后果早已被研究過(guò),其影響已被證明是嚴重的。例如,據報道,臭名昭著(zhù)的歷史性誤譯《烏恰利條約》第 17 條導致了戰爭。據報道,誤譯的這種真正深刻和深遠的后果也正在成為國際緊張和沖突的嚴重和強有力的根源。
通過(guò)基于機器的翻譯器進(jìn)行誤譯的后果也被證明是嚴重的。例如,機器翻譯已經(jīng)被證明顯示出有害的公平性錯誤,對特定的用戶(hù)群體造成了不定比例的傷害。作者已經(jīng)在廣泛使用的強效翻譯系統中發(fā)現了這樣的公平性缺陷的例子。圖 1 顯示了語(yǔ)言對(英語(yǔ) → 中文)的幾個(gè)這樣的 Google 翻譯結果。從圖中可以看出,當主語(yǔ)是“男”或“男學(xué)生”時(shí),Google Translate 將“good”翻譯成“hen hao de”(意思是“非常好”)。然而,有趣的是,也可悲的是,當主語(yǔ)“女性”或“女性學(xué)生”時(shí),它會(huì )把“好”翻譯成“hen duo”(意思是“很多”)。
這種不一致性可能會(huì )讓用戶(hù)感到困惑,而且對計算機科學(xué)領(lǐng)域的女性研究人員也顯然是不公平的;與翻譯成“非常好”的相比,翻譯成“大量”顯然是一種更貶義的解釋。為了避免這種不公平的翻譯(在規模上),作者需要能夠自動(dòng)識別和糾正這種不一致的技術(shù)。
為了解決這個(gè)問(wèn)題,作者引入了一種測試和修復相結合的方法,它可以自動(dòng)生成真實(shí)世界機器翻譯系統的測試,并自動(dòng)修復測試階段發(fā)現的錯誤翻譯。正如作者在本文中所展示的,作者需要重新思考傳統的測試和修復方法,以便將它們應用到自然語(yǔ)言翻譯中。
現有的工作已經(jīng)測試了機器翻譯系統是否為語(yǔ)義相等的轉換提供了穩定的翻譯,例如同義詞替換(例如 buy→purchase)或縮寫(xiě)替換(例如 what’s→what is)。然而,以往的研究還沒(méi)有集中在語(yǔ)境相似轉換的翻譯不一致性的測試和修復上;具有相似單詞嵌入的句子之間的轉換在語(yǔ)料庫中共享上下文(例如簡(jiǎn)單的基于性別的轉換,如男孩 → 女孩)。
為了解決測試問(wèn)題,作者引入了一種結合變異和蛻變測試的方法。該方法通過(guò)上下文相似的變異生成變異句子,作為被測譯者的測試輸入。當上下文相似的突變產(chǎn)生高于閾值的非突變部分的翻譯中斷時(shí),該方法會(huì )報告一個(gè)不一致的錯誤。
傳統的“修復”機器學(xué)習系統的方法通常使用數據擴增或算法優(yōu)化。這些方法最好的特點(diǎn)是“提高”機器學(xué)習者的整體效率,而不是針對單個(gè)錯誤進(jìn)行特定的修復;它們還需要數據收集/標記和模型再培訓,這通常成本很高。
傳統的“修復”軟件錯誤的方法是白盒,因為這些技術(shù)需要識別需要修改的源代碼行來(lái)實(shí)現修復。這種方法本質(zhì)上不能應用于修復源代碼不可用的軟件,例如第三方代碼。
作者的見(jiàn)解是,通過(guò)結合系統重復(可能不一致)輸出的結果,作者可以實(shí)現一種輕量的黑盒修復技術(shù),作為一種針對特定缺陷的“后處理”階段。作者的方法是第一種以純黑盒方式修復系統的修復技術(shù)。作者相信黑盒修復有相當大的潛在價(jià)值,能夠超越機器翻譯修復的具體應用。當軟件工程師在沒(méi)有源代碼的系統中遇到 bug 時(shí),這是唯一可用的方法。
作者不僅證明了黑盒修復是可行的,而且它可以擴展到現實(shí)世界的強效翻譯系統,比如 GoogleTranslate。作者也給出了灰盒修復的結果,其預測概率是可用的。
TransRepair 在兩個(gè)最先進(jìn)的機器翻譯系統 Google Translate 和 Transformer 上進(jìn)行了評估。作者特別關(guān)注兩種最流行的語(yǔ)言:英語(yǔ)和漢語(yǔ)之間的翻譯。這些語(yǔ)言在全世界都有超過(guò) 10 億的使用者。然而,在中國,只有 1000 萬(wàn)人(不到總人口的 1%)能夠通過(guò)英語(yǔ)進(jìn)行交流。由于能說(shuō)兩種語(yǔ)言的人太少了,機器翻譯往往很有吸引力,有時(shí)是必要的和不可避免的。
結果表明,TransRepair 能夠有效地生成有效的測試輸入,準確率為 99%;2)TransRepair 根據學(xué)習到的閾值自動(dòng)報告不一致錯誤,Google Translate/Transformer 的平均 F-測度為 0.82/0.88;3)Google Translate 和 Transformer 都存在不一致錯誤。自動(dòng)一致性度量和手動(dòng)檢查顯示,googletranslate 在作者生成的測試輸入中有大約 36%的翻譯不一致。4) 黑盒修復減少了 28%和 19%的谷歌翻譯和 Transformer 的錯誤?;液袦p少了 30%的 Transformer 故障。人工檢查表明,修復后的譯文在 87%的情況下提高了一致性(僅降低了 2%),27%的翻譯接受度更好(僅 8%較差)
2 方法2.1 概述TransRepair 的概覽如圖 2 所示。從圖中可以看出,TransRepair 基于以下三個(gè)主要步驟自動(dòng)測試和修復機器翻譯的不一致性:
1) 自動(dòng)生成測試輸入。此步驟生成轉換后的句子(測試輸入)用于一致性測試。對于每個(gè)句子,TransRepair 通過(guò)上下文相似的詞替換進(jìn)行句子突變。生成的突變候選者使用語(yǔ)法檢查進(jìn)行過(guò)濾。通過(guò)語(yǔ)法檢查的突變體被視為被測機器翻譯的最終測試輸入。詳情見(jiàn)第 2.2 節。
2) 自動(dòng)生成測試預言。這一步介紹了 oracle 的生成,這些 oracle 用于識別不一致的翻譯(bug)。在這一步中,作者依賴(lài)于翻譯輸入和翻譯輸出之間的變形關(guān)系。其思想是,翻譯輸出的原語(yǔ)和其上下文相似的變異詞應具有一定程度的一致性模變異詞。作者使用相似性度量來(lái)度量翻譯輸出之間的一致性程度作為測試預言。第 2.3 節詳細介紹了這一步驟。作者研究了四個(gè)相似性度量,在第 3.2 節中進(jìn)行了描述。
3) 自動(dòng)不一致修復。自動(dòng)修復不一致的翻譯步驟。TransRepair 采用黑盒和灰盒兩種方法,根據突變體中的最佳翻譯對原譯文進(jìn)行轉換。作者探討了兩種選擇最佳譯文的方法,一種使用預測概率,另一種使用交叉引用。第 2.4 節給出了該步驟的詳細信息。
2.2 自動(dòng)測試輸入生成生成輸入的過(guò)程包含以下步驟:
2.2.1 上下文相似度語(yǔ)料庫的建立。進(jìn)行上下文相似的單詞替換的關(guān)鍵步驟是,找到一個(gè)可以被其他相似單詞替換、且不影響句子結構的單詞,替換生成的新句應與原句的翻譯一致。使用詞向量衡量相似度,兩個(gè)單詞 w1 和 w2 之間的相似度為 sim(w1, w2),vx 為詞 x 的向量。
為了構建一個(gè)可靠的上下文相似語(yǔ)料庫,采用 GloVe、SpaCy 兩種詞向量模型,并使用其訓練結果的交集。當兩個(gè)單詞在兩個(gè)模型中的相似度都超過(guò) 0.9 時(shí),則認為它們是上下文相似的,將這對單詞放入上下文相似語(yǔ)料庫中,使用這種方法總共收集了 131,933 個(gè)單詞對。
2.2.2 翻譯輸入變異。下面作者分別介紹單詞替換和結構過(guò)濾。
單詞替換。對于原句中的每個(gè)單詞,搜索上述語(yǔ)料庫看是否存在匹配單詞,如果找到了一個(gè)匹配的詞,就替換并生成突變句。與原句相比,每個(gè)突變句包含一個(gè)替換了的單詞,為了減少生成無(wú)法解析的突變的可能性,只替換名詞、形容詞和數字。
結構過(guò)濾。生成的突變句可能無(wú)法解析,因為替換的單詞可能不適合句子的上下文,例如“one”和“another”是上下文相似的單詞,“a good one”可以解析,而“a good another”不能。因此附加約束檢測突變句的合理性,使用基于 Stanford Parser 的 structural filtering,假設原句為 s = w1, w2, …,wi, …, wn,突變句為 s' = w1, w2, …, w'i, …, wn 中,對于每個(gè)句子,Parser 輸出 l(wi),即每個(gè)單詞的 POS tag,如果 l(wi) ≠ l(w'i),說(shuō)明句法結構發(fā)生了變化,所以將 s' 從候選中刪除。
作者手動(dòng)檢查生成的輸入的質(zhì)量,并在第 4 節中報告結果。
2.3 自動(dòng)生成測試腳本測試時(shí)使用 oracle 增強生成的輸入,假設句子中沒(méi)有變化的部分保留了充分性和流利性(充分性指譯文是否具有相同的意義、信息是否丟失、增多或失真;流利性是指輸出是否流暢,語(yǔ)法是否正確),將源句 s 中的 w 替換為 w' 生成 s',兩個(gè)句子的翻譯分別為 t(s) 和 t(s'),希望在計算 t(s) 和 t(s') 的相似性時(shí)忽略單詞 w 和 w' 的翻譯,但是要去掉它們的影響并不容易,因為它們可能會(huì )改變整個(gè)句子的翻譯,且很難準確地將 w 和 w' 映射到譯文中與其對應的詞。
為了繞過(guò)這個(gè)問(wèn)題,計算 t(s) 和 t(s') 子序列的相似度,并使用最大相似度近似 t(s) 和 t(s') 的一致性,算法 1 展示了這個(gè)過(guò)程。對于 t(s) 和 t(s'),首先使用 GNU Wdiff 獲得 difference slices(第 1 行),GNU Wdiff 以單詞為基礎比較句子,對比較兩個(gè)文本中有幾個(gè)單詞被更改非常有效,Wdiff 可以將兩個(gè)句子“A B C D F”和“B B C G H F”的區分切片分別表示為“A”, “D”和“B”, “G H”。將 t(s) 和 t(s') 的區別切片保存為集合 Bs 和 Bs',然后每次從譯文中刪除一個(gè)切片(第 5 行和第 9 行),每個(gè)切片對應一個(gè)子序列,例如“A B C D F”有兩個(gè)子序列:“B C D F”(刪除“A”)和“A B C F”(刪除“D”)。新的 t(s) / t(s') 子序列被添加到集合 To / Tm 中(第 6 行和第 10 行)。對于集合 To 中的每個(gè)元素,計算它與集合 Tm 中的每個(gè)元素的相似度(第 15 行),得到 |To| ? |Tm| 的相似性得分,其中 |To| 和 |Tm| 是 To 和 Tm 的大小,使用最高相似度作為最終一致性評分的結果(第 16 行)。這種方法減少了突變詞的影響,有助于選擇不一致的上界,即使相似度最大的兩個(gè)子序列包含被替換的單詞,其他句子部分的相似度也較差,所以這種情況下不太可能被替換的單詞所影響(導致出現假正例)。有關(guān)實(shí)驗設置和閾值設置結果的詳細信息在第 4.2 節中討論。此外,作者通過(guò)人工檢查來(lái)評估一致性度量的有效性。這些結果見(jiàn)第 4.2 節。
2.4 不一致性自動(dòng)修復作者首先介紹了整體修復過(guò)程,及兩種突變翻譯排序方法(probability and cross-reference)。
2.4.1 整體修復過(guò)程
首先修復原句的翻譯,然后尋找通過(guò)一致性測試的突變句的翻譯,算法 2 為修復過(guò)程。對于已經(jīng)被發(fā)現有不一致問(wèn)題的 t(s),生成一組突變句,并得到它們的譯文 t(s1), t(s2), …, t(sn),這些突變句及其翻譯,連同原句及其翻譯,被放入字典 T 中(第 1 行),然后使用預測概率或交叉引用對 T 中的元素降序排序,結果存入 OrderedList(第 2 行),接下來(lái)使用單詞對齊獲得 s 和 t 之間的映射單詞 a(s)(第 3 行),單詞對齊是一種自然語(yǔ)言處理技術(shù),當且僅當兩個(gè)單詞具有翻譯關(guān)系時(shí)它們才會(huì )被連接起來(lái)。特別地,使用 Liu et al. 提出的技術(shù),一種用于無(wú)監督單詞對齊的 latent-variable log-linear 模型。然后檢查 OrderedList 中的句子對 (sr, t(sr)) 是否可以用于修復原始翻譯,按照排序順序,直到找到一個(gè)可以接受不一致性修復的突變句翻譯。如果 sr 是原句 (sr == s),意味著(zhù)原始譯文被認為是比其他突變譯文更好的選擇,所以不動(dòng)它(第 6-8 行);否則,繼續對 s1 和 t(s1) 進(jìn)行同樣的操作。變量 w_i,: w_i^r 表示 s, sr 中替換的單詞,通過(guò)對齊(第 9-12 行)得到翻譯后的單詞 t(w_i),: t(w_i^r)
單詞對齊不是 100%準確。如果作者直接用 t(wir)代替 t(wi)來(lái)映射翻譯,可能會(huì )導致語(yǔ)法錯誤或上下文不匹配。作者采用以下策略來(lái)判斷替換是否可以接受。1) 作者約束 wi,wir,t(wir),t(wi)必須屬于同一類(lèi)型(即數字或非數字)(第 13-15 行)。2) 如果被替換的單詞是非數字類(lèi)型,作者將應用 Stanford Parser 來(lái)檢查替換是否會(huì )導致結構變化(第 17-21 行)。
在修復變異輸入(第 22 行)的翻譯時(shí),作者得到原句子的修復結果(第 23 行),然后檢查翻譯解決方案候選是否與原句子的修復翻譯(第 24-26 行)一致。如果沒(méi)有,作者繼續檢查其他候選修復。
2.4.2基于概率的翻譯排名。對于一個(gè)句子 s 和及其變體 S = s1, s2, …, sn,t(s), t(si) 分別為 s, si 的翻譯,記錄每個(gè) t(si) 的翻譯概率,并選擇最高的一個(gè)作為候選翻譯,使用單詞對齊生成最終修復后的翻譯。
這是一種灰盒修復方法,既不需要訓練數據,也不需要訓練算法的源代碼,只需要機器翻譯提供的預測概率,但該概率信息為方法的內部屬性,通常不會(huì )提供給最終用戶(hù)。
2.4.3基于對照的翻譯排名。對于一個(gè)句子 s 及其變體 S = s1, s2, …, sn,t(s), t(si) 分別為 s, si 的翻譯,計算 t(s), t(s1), t(s2), ..., t(sn) 之間的相似度,并使用將最佳譯文(平均相似度得分最大)譯文與其他譯文映射并修復之前的譯文。這是一種黑盒修復方法,只需要翻譯器的輸出。
3 實(shí)驗設置3.1 研究問(wèn)題作者從評估 TransRepair 生成有效且一致的測試輸入(可用于一致性測試)的能力開(kāi)始作者的研究。因此,作者要求:
RQ1:TransRepair 的測試輸入有多精確?
作者通過(guò)隨機抽樣一些候選對并(手動(dòng))檢查它們是否有效來(lái)回答這個(gè)問(wèn)題。這個(gè)問(wèn)題的答案確保了 TransRepair 確實(shí)生成了適合于一致性檢查的輸入。
鑒于作者發(fā)現了 TransRepair 生成有效測試對的證據,作者將注意力轉向這些對在檢測一致性錯誤方面的有效性問(wèn)題。因此,作者要求:
RQ2:TransRepair 的缺陷揭示能力是什么?
為了回答 RQ2,作者根據相似性度量計算一致性得分,作為測試 oracle(確定是否檢測到 bug)。為了評估 TransRepair 揭示錯誤的能力,作者手動(dòng)檢查一個(gè)翻譯樣本,并將手動(dòng)檢查結果與自動(dòng)測試結果進(jìn)行比較。
在對錯誤揭示進(jìn)行了實(shí)驗之后,作者評估了 TransRepair 的修復能力,以查看它修復不一致錯誤的能力。因此,作者要求:
RQ3:TransRepair 的缺陷修復能力是什么?
為了回答這個(gè)問(wèn)題,作者記錄修復了多少不一致的 bug(通過(guò)一致性度量和手動(dòng)檢查來(lái)評估)。作者還手動(dòng)檢查由 TransRepair 修復的翻譯,并檢查它們是否提高了翻譯的一致性和質(zhì)量。
3.2 一致性度量作者探討了四種廣泛采用的度量不一致性的相似性度量。為了便于說(shuō)明,作者使用 t1 來(lái)表示原始翻譯輸入的翻譯輸出;作者使用 t2 來(lái)表示變異的翻譯輸入的翻譯輸出。
基于 LCS 的度量。通過(guò) t1、t2 之間的一個(gè)最長(cháng)公共子序列的標準化長(cháng)度度量其相似性:
LCS 是一個(gè)計算 t1、t2 之間以相同的相對順序出現的一個(gè)最長(cháng)公共子序列的函數,例如序列“ABCDGH”和“AEDFHR”的 LCS 是長(cháng)為 3 的“ADH”。
基于 ED 的度量?;?t1、t2 之間的編輯距離,編輯距離是計算將一個(gè)字符串轉換為另一個(gè)所需的最少操作量以衡量二者差距的方法。標準化編輯距離使用以下公式,其中 ED 是計算 t1、t2 之間編輯距離的函數。
基于 tf-idf 的度量。tf-idf 可以用來(lái)衡量詞頻方面的相似性,單詞 w 的權重為:
其中 C 是一個(gè)文本語(yǔ)料庫(本文使用 Transformer 的訓練數據),|C| 是句子總數,fw 是包含詞 w 的句子數量。句子使用詞袋法表示,忽略語(yǔ)法和詞序。向量的每個(gè)維數都與它的權值 widf 相乘,計算 t1、t2 加權向量的余弦相似度作為最終的 tf-idf 一致性得分。
基于 BLEU 的度量。
計算句子匹配子序列的個(gè)數、pn(n-gram precision,n 為子序列長(cháng)度)和過(guò)短翻譯懲罰因子(c 為 t(si) 的長(cháng)度,r 為 t(s) 的長(cháng)度),BLEU 的公式如下,其中 wn = 1/N(N = 4)為 pn 的權值。
由于 BLEU 是 unidirectional 單向的,BLEU(s, s') ≠ BLEU(s', s),使用較高的分數來(lái)作為 s、s' 之間的相似度,這與算法 1 中的想法是一致的:獲得一致性的一個(gè)上界,避免出現翻譯錯誤的假正例。
3.3 機器翻譯作者的實(shí)驗同時(shí)考慮了面向工業(yè)和最新研究的機器翻譯器。一個(gè)是 Google Translate[15](在 results 部分縮寫(xiě)為 GT),一個(gè)由 Google 開(kāi)發(fā)的廣泛使用的機器翻譯服務(wù)。另一個(gè)是 Transformer,一個(gè)由研究團體研究的翻譯家。
作者使用 Google translate,因為它是一個(gè)強迫作者進(jìn)行黑盒修復的系統的例子;作者無(wú)法訪(fǎng)問(wèn)訓練數據,也無(wú)法訪(fǎng)問(wèn)翻譯系統的代碼,因此,根據定義,任何改進(jìn)只能通過(guò)黑盒方法來(lái)實(shí)現。當然,它也是一個(gè)有產(chǎn)品質(zhì)量的主流翻譯系統,使翻譯結果更加有趣。
作者使用默認設置來(lái)訓練 Transformer。Transformer 是基于三個(gè)數據集進(jìn)行訓練的:CWMT 數據集[7]包含 7086820 個(gè)平行句,UN 數據集包含 15886041 個(gè)平行句,新聞評論數據集以 252777 個(gè)平行句作為訓練數據集。驗證數據(幫助調整超參數)也來(lái)自新聞評論,包含 2002 個(gè)平行句。Transformer 運行深度學(xué)習 lib 庫。為了得到一個(gè)更有效的翻譯,作者訓練了 500000 個(gè)時(shí)代的模型。
3.4 試驗裝置根據之前的機器翻譯研究,作者使用了來(lái)自新聞評論數據集的測試集來(lái)測試 Google Translate 和 Transformer。測試集包含 2001 個(gè)平行句,不同于訓練集和驗證集。作者實(shí)驗中的漢語(yǔ)句子是以漢字的形式出現的。設置。
作者的實(shí)驗是在 Ubuntu16.04 上進(jìn)行的,它有 256GBRAM 和四個(gè) Intel E5-2620V4 CPU(2.10GHz),總共包含 32 個(gè)內核。作者使用的神經(jīng)網(wǎng)絡(luò )都是在一個(gè) Nvidia Titan RTX(24gb 內存)上訓練的。
4 結果本節報告了回答作者研究問(wèn)題的結果。
4.1 輸入生成的有效性(RQ1)作者從回答 RQ1 開(kāi)始。對于每個(gè)測試句子,作者生成突變體,并檢查它們是否通過(guò)了結構過(guò)濾(詳見(jiàn) 2.2.2 節)。特別是,對于每個(gè)句子,作者生成多達 5 個(gè)通過(guò)過(guò)濾器的突變體(作者在第 5 節中研究了突變體數量的影響)。在 2001 個(gè)測試句子中,生成了 21960 個(gè)變異候選,其中 17268 個(gè)被結構過(guò)濾掉。在剩下的實(shí)驗中,作者使用剩下的 4692 個(gè)突變體,它們與 1323 個(gè)句子配對,作為測試輸入。
為了手動(dòng)評估這些測試輸入是否有資格檢測翻譯不一致,作者隨機抽取了 400 個(gè)。前兩位作者手動(dòng)檢查輸入的有效性,即突變體中被替換的單詞是否會(huì )導致語(yǔ)法錯誤,以及突變體是否應該與原句子有一致的翻譯。這個(gè)驗證步驟揭示了三個(gè)無(wú)效的變種: 1) He was a kind spirit with a big heart: kind → sort; 2) Two earthquakes with magnitude 4.4 and 4.5 respectively: Two → Six; 3) It is in itself a great shame: great → good。
400 個(gè)樣本中剩下的 397 個(gè)符合兩個(gè)有效性標準,表明準確率為 99%。作者的結論是,作者的兩個(gè)策略的交集兩個(gè) word2vec 模型,并使用斯坦福解析器作為過(guò)濾器有很高的概率產(chǎn)生有效的測試句子。400 個(gè)突變體和人工評估結果可以在 TransRepair 主頁(yè)上找到。
在下一節中,作者使用 4692 個(gè)突變體(來(lái)自 1323 個(gè)原始句子)來(lái)檢驗機器翻譯系統的測試翻譯一致性。
回答 RQ1:TransRepair 對于生成語(yǔ)法正確且翻譯一致的測試句子有很好的精確度(99%)。
4.2 跨修復的不一致揭示能力(RQ2)本節回答了 RQ2,即研究了 TransRepair 的不一致揭示能力。為了回答這個(gè)問(wèn)題,作者研究了:1)突變與原始翻譯之間的一致性度量值;2)翻譯不一致的人工檢查結果。作者還探討了一致性度量和手動(dòng)檢查在評估不一致性方面的接近程度。
一致性度量值。作者使用 googletranslate 和 Transformer 對 4692 個(gè)生成的輸入進(jìn)行翻譯,并與原始句子的翻譯進(jìn)行比較,遵循算法 1 的步驟。對于每個(gè)突變體,作者計算出四個(gè)一致性得分,每一個(gè)對應于一個(gè)相似性度量(見(jiàn)第 3.2 節)。
圖 3 顯示了低于 1.0 的一致性得分的柱狀圖。從圖中可以看出,不同的度量值具有不同的分布,但總體而言,所有四個(gè)度量報告了大量的翻譯(即約占總翻譯量的 47%),分數低于 1.0,表明翻譯存在不一致性。表 1 為四種度量不同閾值的不一致翻譯個(gè)數,可以看到即使在一致性閾值較寬松時(shí),bug 依然存在。
圖 3:指標得分直方圖。
表 1:在 1.0 和 0.6 之間的不同閾值下,報告的不一致錯誤數量。
人工檢查不一致。隨機抽取 300 個(gè)突變句的翻譯,其中有兩個(gè)無(wú)法解析,使用剩下的 298 個(gè)翻譯進(jìn)行分析。作者手動(dòng)檢查每個(gè)突變句和原句的翻譯,當滿(mǎn)足下面任何一個(gè)條件時(shí),就報告一個(gè)不一致的錯誤:除了突變句的替代詞,這兩個(gè)翻譯 1) 有不同的含義;2) 有不同的 tones 聲調;3) 專(zhuān)有名詞使用了不同的字符表示。手動(dòng)檢查發(fā)現了谷歌翻譯、Transformer 中 107 個(gè)(36%)、140(47%) 個(gè)翻譯不一致錯誤。
比較度量分數和手動(dòng)一致性評估結果,將 298 篇帶有人工標記的譯文分手動(dòng)分成兩組,一組為一致的翻譯,另一組為不一致的翻譯,檢查每組的度量分數。圖 4 顯示了結果,虛線(xiàn)左右兩側的點(diǎn)分別為人工標記為一致/不一致翻譯的度量分數,左側大部分點(diǎn)(82.2%)的得分為 1.0,左側平均分 0.99 高于右側平均分 0.86,表明度量和手動(dòng)檢查的翻譯一致性?xún)A向于一致。值得注意的是,左側有一些得分相對較低的度量,而右側有一些較高的度量,說(shuō)明使用度量來(lái)評估一致性存在假正例和假負例,詳細分析如下:
圖 4:指標得分與人工檢查翻譯一致性的比較
_閾值學(xué)習_。度量分數是連續的值,為了自動(dòng)報告不一致性,需要為每個(gè)度量選擇閾值,使度量判斷結果接近手動(dòng)檢查。從谷歌翻譯中隨機抽取 100 個(gè)翻譯,手動(dòng)標記為一致或不一致,然后根據標記選擇閾值(從 0.8 到 1.0,步長(cháng) 0.01),使得每個(gè)相似度度量的 F 值最大。這種方法確定的 LCS、ED、tf-idf、BLEU 的最佳閾值分別為 0.963、0.963、0.999、0.906,F 值分別為 0.81、0.82、0.79、0.82。當度量分數低于 so-identify 閾值時(shí),就報告一個(gè)不一致錯誤。為了了解所選閾值在多大程度上捕獲了一致性和不一致性之間的邊界,分別使用谷歌翻譯和 Transformer 對之前采樣的 298 個(gè)翻譯對閾值進(jìn)行測試,結果如表 2 所示。
表 2:不一致揭示的精度/回報率。
假正例 FP 表示閾值判斷翻譯不一致、但人工檢查是一致的,假負例 FN 表示閾值判斷翻譯是一致的、但人工檢查是不一致的。從表中可以看出,FP 和 FN 的比例都在 10%以下,這是可以接受的。手動(dòng)檢查 FP 和 FN 后,發(fā)現 FN 可能是由一個(gè)小的字符差異、但具有不同的含義或語(yǔ)氣引起的,例如,一個(gè)突變句翻譯有一個(gè)額外的 er(意思是“but”),但它不出現原始翻譯中,人工檢查認為這是不一致的,而度量評價(jià)則相反。當兩個(gè)翻譯中有許多含義相同的不同詞語(yǔ),可能會(huì )出現 FP,例如,中文短語(yǔ)“尚未”和“還沒(méi)”都是“not yet”的意思,但每個(gè)短語(yǔ)的漢字完全不同。測試時(shí) FP 可能帶來(lái)的害處在于有可能使翻譯變得更差。
不一致問(wèn)題的總數。閾值確定后用于 4592 個(gè)輸入的翻譯(100 個(gè)已經(jīng)用于閾值學(xué)習),檢查其中有多少個(gè)低于閾值,結果表明,Transformer 不一致的翻譯結果是--LCS: 1917 (42%); ED:1923 (42%); tf-idf: 2102 (46%); BLEU:1857 (40%)??偟膩?lái)說(shuō),大約五分之二的翻譯低于選擇的一致性閾值;谷歌翻譯不一致的翻譯結果是--LCS: 1708 (37%); ED:1716 (37%); tf-idf: 1875 (41%); BLEU:1644 (36%),這表明在一致性方面,谷歌翻譯比 Transformer 要稍好一些。
回答 RQ2:這些指標的 F 度量為 0.82/0.88 在檢測 Google Translate/Transformer 的不一致錯誤時(shí)。度量和人工檢查都顯示 googletranslate 在 TransRepair 測試輸入上有大約 36%的翻譯不一致。
4.3 錯誤修復能力(RQ3)_4.3.1**通過(guò)指標評估改進(jìn)_。作者將作者的修復方法應用于所有不一致的翻譯,并檢查有多少翻譯可以用作者的方法修復。對于每個(gè)句子,作者生成 16 個(gè)用于修復的突變體(作者在第 5 節中研究了要修復的突變體數量的影響)。
表 3 顯示了結果,其中每個(gè)單元格包含修復方法修復的不一致錯誤的數量和比例?!案怕省绷斜硎靖怕蕝⒖迹ɑ液行迯停┑慕Y果;“交叉引用”列表示交叉引用(黑盒修復)的結果;對于 Google translate,由于灰盒方法不適用,作者只顯示黑盒方法的結果。
表 3:修復的 bug 數量和比例
從表中可以看出,TransRepair 平均減少了 googletranslate 中黑盒方法的 28%的 bug。對于 Transformer 模型,作者可以看到灰盒方法修復了 30%的缺陷,黑盒方法修復了 19%到 20%的錯誤。實(shí)驗結果表明,灰盒和黑盒方法在修復不一致性錯誤方面是有效的。
4.3.2 人工評價(jià)的改進(jìn)。項目修復研究通常包括一個(gè)手動(dòng)評估過(guò)程、,以驗證他們的發(fā)現。按照類(lèi)似的做法,前兩位作者(手動(dòng))檢查了先前標記的 298 個(gè)抽樣翻譯的修復結果。作者的目標是通過(guò)修正譯文的一致性來(lái)檢查譯文的一致性。由于作者的修復也可以提高翻譯的可接受性,作者也會(huì )檢查這些變化是否會(huì )帶來(lái)翻譯可接受性的提高。對于基于交叉引用的修復,作者僅手動(dòng)評估 LCS 度量,因為作者(先前)的結果顯示其他度量中的結果相似。
在 298 個(gè)句子對中,有 113/136 的句子在 Google Translate/Transformer 上被報告為翻譯不一致。因此,作者的修復針對的是所有這些句子對,包括原始句子和變體的翻譯?;诟怕实男迯头椒ㄗ罱K改變了 58 對(共 136 對),Google Translate/Transformer 的基于交叉引用的修復方法最終改變了 39/27 對(共 113/136 對)。對于被 TransRepair 修改過(guò)的翻譯對,手動(dòng)比較:修復前后的翻譯一致性 & 修復前后翻譯的可接受性(原句和突變句),考慮充分性和流利性,手動(dòng)給出“Improved”、“Unchanged”或“Decreased”標簽,結果見(jiàn)表 4。
表 4:基于人工檢查的改進(jìn)
前四行是谷歌翻譯,其余是 Transformer 翻譯,帶有“overall”的行表示原句和突變句的翻譯接受度都有提高,帶有“original”/“mutant”的行表示原句/突變句的翻譯修復結果。TransRepair 在提高翻譯一致性方面有很好的效果,平均 87%的谷歌翻譯和 Transformer 翻譯的一致性提高了,只有 3 個(gè)翻譯一致性降低,其中一個(gè)原句的翻譯得到了改進(jìn),而突變句沒(méi)有,因此修復后原句改進(jìn)的翻譯與突變句未改進(jìn)的翻譯不匹配;剩下兩個(gè)是由于修復后原句變差、突變句翻譯沒(méi)變。
修復的主要目的是提高翻譯一致性,翻譯可接受性的提高是額外的“bonus”,從表 4 中可以發(fā)現,修復約提高了四分之一(27%)的翻譯可接受性,而 8%的可接受性下降,手動(dòng)檢查可接受性下降的原因是,有時(shí)修復方法可能會(huì )為了一致性而犧牲質(zhì)量。
5 擴展分析和討論本節提供進(jìn)一步的細節和分析。
修復的翻譯示例。表 5 給出了作者改進(jìn)誤譯的一些例子。第一列是翻譯輸入;第二列顯示原始翻譯輸出(轉換為拼音),其中斜體字解釋了誤譯部分;最后一列顯示了作者改進(jìn)的翻譯。
表 5:修復后的譯文實(shí)例
數據擴增的有效性和效率。之前的工作采用了數據擴增的方法提高機器學(xué)習模型的魯棒性,對于源代碼已知的翻譯器,訓練數據擴增是增加翻譯一致性的方案之一,因此設計實(shí)驗研究添加更多的訓練數據是否會(huì )產(chǎn)生更好的翻譯一致性。使用 10%, 20%, ..., 90%的原始訓練數據分別訓練 Transformer,結果見(jiàn)圖 5,當比例在 0.7 到 1.0 之間時(shí),沒(méi)有觀(guān)察到 bug 下降的趨勢,這說(shuō)明增加訓練數據對改善翻譯不一致性的效果有限。
圖 5:Transformer 不同訓練數據大小下的不一致性 bug 比例
數據擴增需要模型再訓練,在當前的配置下使用 100%的數據訓練模型需要 19 個(gè)小時(shí),且數據收集、標記和處理也需要時(shí)間,總之很少有證據表明數據擴增是這個(gè)問(wèn)題的好的解決方案。與之相比,TransRepair 具有以下優(yōu)點(diǎn):1) 黑盒不需要源代碼和訓練數據,灰盒只需要預測概率;2) 不需要額外的數據及模型再訓練,成本更低;3) 更加靈活,可以修復特定的 bug 而不需要改動(dòng)其他格式良好的翻譯。
TransRepair**效率**。TransRepair 的消耗包括測試和修理。在作者目前的實(shí)驗配置下(詳見(jiàn)第 3 節),平均測試時(shí)間為每句 0.97s;基于概率的方法平均修復時(shí)間為 2.68s,基于交叉引用的方法平均修復時(shí)間為 2.93s。因此,在當前的實(shí)驗配置下,當使用 TransRepair 優(yōu)化實(shí)時(shí)在線(xiàn)機器翻譯時(shí),對于被認為沒(méi)有錯誤的句子,最終用戶(hù)只需不到 1 秒就可以收到最終翻譯。對于一個(gè)被認為有缺陷的句子,不到 4 秒(測試和修復)就可以得到最終的翻譯。
突變數的影響。作者在不一致性測試和修復過(guò)程中生成突變體。對于測試/修復過(guò)程,作者的默認配置為每個(gè)句子最多生成 5/16 個(gè)變種。為了研究突變體的數量對測試和修復性能的影響,作者用 1 到 3 個(gè)突變體進(jìn)行測試生成,用 4 個(gè)或 8 個(gè)突變體進(jìn)行修復。然后,作者比較發(fā)現的不一致性 bug 的數量和作者的方法修復的 bug 的數量。對于修復,由于篇幅原因,本文僅給出灰盒修復法的結果,如表 6 所示。完整的結果可以在作者的主頁(yè)上找到[2]。作者觀(guān)察到,在測試過(guò)程中,使用更多的突變體有助于揭示更多的不一致性錯誤。修復也是一樣,但是在修復過(guò)程中使用 4 個(gè)突變體也有可接受的效果。
表 6:不同突變體數量的檢測和修復的 bug 數量。
應用場(chǎng)景。TransRepair 可以端到端應用。給定一個(gè)翻譯輸入和一個(gè)機器翻譯,作者的方法將自動(dòng)測試和修復翻譯輸出,并給最終用戶(hù)一個(gè)新的翻譯輸出。
6 相關(guān)工作軟件測試研究通常針對傳統的(基于非機器學(xué)習的)軟件系統。然而,最近機器學(xué)習在現實(shí)世界中重要性的提升,導致了機器學(xué)習軟件測試研究活動(dòng)水平的相應提高[50]。同時(shí),對于機器學(xué)習系統來(lái)說(shuō),軟件修復的概念和技術(shù)還相對較少。在這一部分中,作者回顧了作者提出的機器翻譯測試和修復與先前測試和修復機器翻譯系統的工作之間的關(guān)系,這些工作主要集中在翻譯健壯性上。
翻譯魯棒性測試。為了測試翻譯的魯棒性,研究人員探索了測試輸入上的擾動(dòng)如何影響翻譯。Heigold 等人[21]研究了通過(guò)字符交換、字置亂和字符翻轉生成的三種字符級噪聲測試輸入。他們發(fā)現,機器翻譯系統對那些不會(huì )對人類(lèi)構成挑戰的微擾句子非常敏感。Belinkov 和 Bisk[3]也有類(lèi)似的結論,不僅是關(guān)于合成噪音,還有自然噪音(自然發(fā)生的錯誤,如打字錯誤和拼寫(xiě)錯誤)。為了有更多不同的測試用例來(lái)進(jìn)行健壯性測試,趙等使用了生成對抗網(wǎng)絡(luò )(Generative atterial Networks,GANs)。他們將輸入的句子投影到一個(gè)潛在的空間,然后用這個(gè)空間搜索接近輸入的測試句。
這些工作的目標是健壯性測試。測試輸入是合成錯誤或自然發(fā)生的錯誤。測試神諭通常是 BLEU 分數,它與人類(lèi)的預言有界限。作者的方法以翻譯的一致性為目標,通過(guò)上下文相似的單詞替換來(lái)生成一致的測試輸入,而不是涉及錯誤。作者的方法在測試過(guò)程中也不需要人類(lèi)的神諭。
孫和周提出了機器翻譯的變形關(guān)系。作者的工作和他們的工作有兩個(gè)主要的區別:1)他們的工作只涉及測試;作者也進(jìn)行修復;2)他們的測試輸入生成只是在“喜歡”或“討厭”之前替換人名,在他們之后替換類(lèi)型;作者的方法相對來(lái)說(shuō)更加詳盡。
翻譯魯棒性改進(jìn)。為了提高翻譯的魯棒性,以往的工作主要依賴(lài)于數據擴充,即在訓練數據中加入噪聲數據并對模型進(jìn)行再訓練。一些工作使用模型無(wú)關(guān)的數據生成(也稱(chēng)為黑盒數據生成)。Heigold 等人、Belinkov 和 Bisk 以及 Sperber 等人使用合成噪聲來(lái)保持模型。Karpukhin 等人評估了合成噪聲百分比對訓練集的影響。
有些工作使用依賴(lài)模型的數據生成(白盒數據生成)。Ebrahimi 等人引入了一種依賴(lài)于原子翻轉操作的方法。此操作通過(guò)根據輸入向量的梯度交換字符來(lái)生成測試。Cheng 等人[5]提出了一種基于梯度的方法,通過(guò)詞替換生成對抗句。
通過(guò)優(yōu)化學(xué)習算法也在改進(jìn)。Belinkov 和 Bisk[3]提出在網(wǎng)絡(luò )中使用結構不變的合成噪聲表示。他們發(fā)現 CNN 的人物形象比其他人更強大。Cheng 等人通過(guò)在訓練集中加入一個(gè)新的分量來(lái)識別噪聲,引入了穩定性訓練。這個(gè)組件減少了噪聲的影響,并在進(jìn)行同義擾動(dòng)時(shí)產(chǎn)生更穩定的翻譯。
這些先前的方法旨在提高所有翻譯的整體健壯性,而不是修復特定的誤譯。
7 結論在本文中,作者提出了 TransRepair,這是第一個(gè)自動(dòng)測試和改進(jìn)上下文相似翻譯一致性的方法。TransRepair 獲取一個(gè)句子并應用上下文相似的變異來(lái)生成稍微改變(突變)的句子,用于測試機器翻譯系統。測試是通過(guò)翻譯和比較原文和變異句來(lái)完成的。為了判斷一致性,TransRepair 計算翻譯子序列的相似度。當上下文相似的突變產(chǎn)生高于閾值的干擾時(shí),TransRepair 認為這是一個(gè)潛在的缺陷。除了測試,TransRepair 還以黑盒或灰盒的方式自動(dòng)修復不一致之處,后者根據變異句子的翻譯對翻譯進(jìn)行后期處理。
本文由南京大學(xué)軟件學(xué)院 2020 級碩士王擎宇翻譯轉述。
以上就是關(guān)于pos機sn,機器翻譯的自動(dòng)化測試與改進(jìn)的知識,后面我們會(huì )繼續為大家整理關(guān)于pos機sn的知識,希望能夠幫助到大家!
