誤排查指南)
《阿斯圖里亞斯傳奇》翻譯一下結(jié)果出來四個(gè)字天貓精靈。第一次看到這個(gè)標(biāo)題我以為是翻譯軟件抽風(fēng)后來仔細(xì)想了想它其實(shí)能牽扯出好多條線文本翻譯、OCR 識(shí)別、語音助手、品牌實(shí)體、AI 幻覺全都踩了一遍。如果你平時(shí)做內(nèi)容編輯、測(cè)產(chǎn)品、寫代碼或者只是經(jīng)常用翻譯工具都值得停下來看看這種離譜結(jié)果到底是怎么產(chǎn)生的。先聲明一下原始材料里沒有給出這個(gè)結(jié)果的完整出處我不確定它來自翻譯工具的截圖、OCR 翻車還是網(wǎng)友故意玩的梗。但沒關(guān)系光是“阿斯圖里亞斯傳奇”被翻成“天貓精靈”這個(gè)現(xiàn)象本身就已經(jīng)夠拆出很多實(shí)際問題的排查方法了。1. 先把“翻譯成天貓精靈”這個(gè)結(jié)果當(dāng)錯(cuò)誤案例拆開1.1 專有名詞為什么最容易翻車“阿斯圖里亞斯傳奇”看起來像是一個(gè)專有名詞標(biāo)題。“阿斯圖里亞斯”大概率對(duì)應(yīng)西班牙的阿斯圖里亞斯地區(qū)英文是 Asturias“傳奇”則可能對(duì)應(yīng) Legend 或者西班牙語里的 Leyenda。懂一點(diǎn)背景的人會(huì)知道阿爾貝尼茲有一首很有名的鋼琴曲就叫《阿斯圖里亞斯》也常被稱為“Leyenda”也就是“傳奇”或“傳說”。而“天貓精靈”是阿里巴巴旗下智能音箱的品牌名英文名是 Tmall Genie。“實(shí)體”是兩個(gè)完全不同的東西一個(gè)是地名、音樂標(biāo)題、跨文化專名一個(gè)是消費(fèi)電子產(chǎn)品品牌。它們之間既沒有語義關(guān)系也沒有音譯對(duì)應(yīng)關(guān)系更不存在什么縮寫關(guān)系。那為什么機(jī)器會(huì)給出這種輸出核心原因是翻譯模型在處理低頻專有名詞時(shí)經(jīng)常缺少可靠的實(shí)體邊界判斷。它可能不知道“阿斯圖里亞斯傳奇”是一個(gè)整體標(biāo)題也可能不知道“天貓精靈”是品牌名而不是“天貓”加“精靈”兩個(gè)普通詞的簡(jiǎn)單組合。一旦模型在訓(xùn)練數(shù)據(jù)里見過“天貓精靈”這個(gè)高頻組合而同時(shí)對(duì)“阿斯圖里亞斯”這類低頻詞的置信度很低就可能用高頻熟悉詞替換掉低頻陌生詞產(chǎn)生看起來毫無邏輯的輸出。這其實(shí)很像人考試時(shí)遇到不會(huì)的題心里一慌就把記憶里最熟的答案寫上去。AI 也有類似行為只是它沒有主觀意識(shí)純粹是概率選擇的結(jié)果。1.2 從“詞”到“實(shí)體”缺的是什么“阿斯圖里亞斯傳奇”和“天貓精靈”之間的錯(cuò)誤不是單詞語法錯(cuò)誤而是實(shí)體理解錯(cuò)誤。在做 NLP 任務(wù)時(shí)“實(shí)體”比“詞”的要求更高。一個(gè)詞可以有多種含義但實(shí)體要落到具體對(duì)象上要能連接知識(shí)庫里的信息。比如“精靈”這個(gè)詞在普通詞典里可以是 fairy、elf、spirit。但“天貓精靈”里的“精靈”不能單獨(dú)拆開理解它和“天貓”綁定在一起是一個(gè)固定品牌通常應(yīng)該譯成 Tmall Genie而不是 Tmall Fairy更不能因?yàn)椤熬`”和“傳奇”在游戲、魔幻題材里經(jīng)常一起出現(xiàn)就把整個(gè)短語強(qiáng)行關(guān)聯(lián)起來。“阿斯圖里亞斯傳奇”要正確處理至少需要兩步識(shí)別出“阿斯圖里亞斯”是地名或?qū)S忻~。識(shí)別出“阿斯圖里亞斯傳奇”是一個(gè)標(biāo)題或作品名并保留專名部分。如果第一步就沒做對(duì)后面全都會(huì)歪。這個(gè)案例里模型大概率把專有名詞當(dāng)成了普通文本或者壓根沒走到實(shí)體識(shí)別這一步。2. 這個(gè)現(xiàn)象在三條鏈路里都會(huì)出現(xiàn)“翻譯成天貓精靈”聽起來只是一個(gè)翻譯問題但實(shí)際在真實(shí)產(chǎn)品里至少有三條鏈路會(huì)產(chǎn)生類似效果。搞清楚是哪個(gè)入口出問題排查方向完全不同。2.1 文本翻譯鏈路如果用戶是把“阿斯圖里亞斯傳奇”或“Asturias Legend”直接輸入翻譯框那么問題出在文本翻譯的模型預(yù)測(cè)環(huán)節(jié)。正常預(yù)期是如果輸入中文輸出為“Asturias Legend”“Legend of Asturias”或“Asturias: Legend”。如果輸入英文輸出為“阿斯圖里亞斯傳奇”或“阿斯圖里亞斯的傳說”。但模型可能把輸入的序列切分得亂七八糟或者在解碼時(shí)選了一個(gè)概率偏高但完全錯(cuò)誤的結(jié)果。要驗(yàn)證是模型問題還是詞典問題可以把輸入換成“阿斯圖里亞斯”“傳奇”“天貓精靈”分別跑一遍。一般來說輸入正常預(yù)期可能看到的異常阿斯圖里亞斯Asturias天貓精靈傳奇Legend精靈天貓精靈Tmall Genie天貓精靈品牌名阿斯圖里亞斯傳奇Asturias Legend / Legend of Asturias天貓精靈如果單獨(dú)翻譯“阿斯圖里亞斯”也出問題說明對(duì)低頻專名理解有缺陷。如果單獨(dú)翻譯都正常一組合就錯(cuò)說明上下文交互時(shí)產(chǎn)生了干擾模型沒有穩(wěn)定地把專名邊界保留下來。2.2 OCR 與圖片識(shí)別鏈路第二種可能也是我覺得最有意思的場(chǎng)景用戶拿圖片去“翻譯”但翻譯工具實(shí)際先做了 OCR 識(shí)別又做了翻譯。假設(shè)圖片里原本是產(chǎn)品包裝上面寫著“天貓精靈”。因?yàn)樽煮w、反光、角度、分辨率等問題OCR 可能把“天貓精靈”識(shí)別成“阿斯圖里亞斯傳奇”。用戶看到識(shí)別后的文本再用翻譯功能去還原自然覺得“原來是天貓精靈”。這個(gè)方向雖然和“翻譯結(jié)果錯(cuò)誤”不完全一樣但癥狀很像輸入一張圖輸出的文字和原圖對(duì)不上。這里的排查重點(diǎn)就不是翻譯模型而是 OCR 模型、圖像預(yù)處理、字體庫和字段校驗(yàn)。遇到這種情況正確姿勢(shì)是先看 OCR 的原始識(shí)別結(jié)果再談翻譯對(duì)不對(duì)。OCR 如果錯(cuò)了后續(xù)翻譯再準(zhǔn)也沒用。2.3 語音識(shí)別與喚醒詞鏈路還有一種場(chǎng)景和“天貓精靈”本身相關(guān)用戶對(duì)智能音箱說話說了一個(gè)內(nèi)容標(biāo)題結(jié)果設(shè)備以為自己被喚醒了或者把內(nèi)容標(biāo)題識(shí)別成了喚醒詞。比如用戶對(duì)天貓精靈說“播放阿斯圖里亞斯傳奇”如果這句話里的某個(gè)音節(jié)和“天貓精靈”的發(fā)音特征接近語音識(shí)別模型可能誤觸發(fā)。這個(gè)和文本翻譯沒有直接關(guān)系但對(duì)用戶的真實(shí)感受非常相似我明明說的是音樂名你怎么把我當(dāng)成在喊你名字語音鏈路要排查的問題包括喚醒詞誤觸發(fā)、方言口音差異、同音詞混淆、前后端點(diǎn)檢測(cè)等。和文本翻譯相比它多了聲學(xué)信號(hào)這一層問題更隱蔽。3. 把它當(dāng) Bug 來復(fù)現(xiàn)我的排查順序不要一看到離譜輸出就直接給團(tuán)隊(duì)提“翻譯錯(cuò)了請(qǐng)修一下”。這種反饋太模糊開發(fā)很難定位。正確做法是把現(xiàn)象當(dāng)成一個(gè) bug按鏈路逐步復(fù)現(xiàn)。我一般會(huì)按下面這個(gè)順序走。3.1 先固定入口和輸入版本第一步是問清楚用戶到底從哪里觸發(fā)是純文本輸入是拍圖翻譯是語音輸入是網(wǎng)頁端還是客戶端同時(shí)記錄產(chǎn)品版本、系統(tǒng)版本、機(jī)型、網(wǎng)絡(luò)環(huán)境、語言對(duì)。這些信息決定了后續(xù)復(fù)現(xiàn)環(huán)境。如果輸入是圖片一定要讓用戶提供原圖因?yàn)橥痪湓捲诓煌煮w和光照下OCR 結(jié)果可能完全不同。如果輸入是語音錄音文件也特別重要。我踩過的坑是用戶報(bào)問題時(shí)只截圖了結(jié)果沒有截圖輸入內(nèi)容。結(jié)果我拿文字去復(fù)現(xiàn)怎么都復(fù)現(xiàn)不出來。后來才知道他走的是 OCR 通道圖片里的文字被識(shí)別錯(cuò)了。沒有原始輸入排查就是大海撈針。3.2 用最小樣例對(duì)照找規(guī)律固定環(huán)境后把輸入拆成最小單位來做對(duì)照測(cè)試。這個(gè)步驟很像單元測(cè)試。可以做一個(gè)表格分別跑這些輸入阿斯圖里亞斯傳奇阿斯圖里亞斯傳奇天貓精靈Asturias LegendAsturiasLeyenda de Asturias一張包含“天貓精靈”文字的產(chǎn)品圖看哪條輸入能穩(wěn)定復(fù)現(xiàn)“天貓精靈”這個(gè)結(jié)果哪條輸入是好的。如果只有第 1 條偶發(fā)出現(xiàn)錯(cuò)誤那大概率是模型對(duì)組合標(biāo)題的上下文建模不穩(wěn)。如果第 2 條也錯(cuò)那問題可能在專名處理上。如果第 8 條錯(cuò)那問題在 OCR。這里不要急著調(diào)參。先記錄每條輸入的正確結(jié)果、錯(cuò)誤結(jié)果、置信度、錯(cuò)誤出現(xiàn)次數(shù)。批量跑五到十次觀察是不是隨機(jī)錯(cuò)誤。隨機(jī)錯(cuò)誤的處理方式和穩(wěn)定錯(cuò)誤完全不一樣。隨機(jī)錯(cuò)誤往往和模型采樣、網(wǎng)絡(luò)延遲、緩存有關(guān)穩(wěn)定錯(cuò)誤則傾向于詞典、規(guī)則、訓(xùn)練數(shù)據(jù)問題。3.3 查詞典、實(shí)體庫和規(guī)則日志第三步檢查“詞典層”。很多翻譯產(chǎn)品在模型之外還會(huì)接一層術(shù)語庫、品牌詞庫、用戶自定義詞典或后處理規(guī)則。如果產(chǎn)品里本來就有“天貓精靈”的品牌保護(hù)規(guī)則比如強(qiáng)制輸出 Tmall Genie那就要看看為什么規(guī)則沒有生效。可能是規(guī)則沒有命中可能是實(shí)體識(shí)別階段把“阿斯圖里亞斯傳奇”錯(cuò)誤分類到了品牌類也可能后處理規(guī)則順序不對(duì)被別的規(guī)則覆蓋了。好的排查方式是在日志里輸出中間態(tài)分詞結(jié)果是什么。實(shí)體識(shí)別結(jié)果是什么。候選詞列表前五名是什么。最終選擇邏輯是什么。有沒有命中后處理規(guī)則。如果中間結(jié)果顯示“阿斯圖里亞斯傳奇”被切成了“阿斯圖里亞斯”和“傳奇”而實(shí)體識(shí)別把“傳奇”和“精靈”掛到了同一個(gè)主題下后續(xù)翻譯就可能往奇幻、游戲、傳說方向偏最終跳到“天貓精靈”也就能理解一部分了。4. 用戶側(cè)別被一個(gè)離譜結(jié)果帶偏如果你不是開發(fā)者只是一個(gè)普通用戶遇到這種離譜翻譯可以從下面三個(gè)角度快速判斷是不是工具真的錯(cuò)了。4.1 三重驗(yàn)證回譯、查詞、搜網(wǎng)第一招是回譯。把錯(cuò)誤結(jié)果“天貓精靈”再翻譯回原語言。如果原語言是英文就把“Tmall Genie”翻回中文得到“天貓精靈”。你會(huì)發(fā)現(xiàn)它根本不可能還原成“阿斯圖里亞斯傳奇”。這說明翻譯結(jié)果是單向漂移中間沒有任何可逆的語義或音譯關(guān)系。第二招是查詞典。手動(dòng)查“阿斯圖里亞斯”的標(biāo)準(zhǔn)譯名。正常百科會(huì)給 Asturias 或“阿斯圖里亞斯”不會(huì)給“天貓精靈”。這一步能快速確認(rèn)專名部分的標(biāo)準(zhǔn)答案。第三招是網(wǎng)絡(luò)搜索。把“阿斯圖里亞斯傳奇”作為完整詞放進(jìn)搜索引擎看看這個(gè)標(biāo)題主要出現(xiàn)在什么場(chǎng)景里。如果是音樂、游戲、影視、文學(xué)那它更不可能和智能音箱品牌混在一起。三重驗(yàn)證之后基本可以判斷這是一個(gè)低置信度錯(cuò)誤輸出不應(yīng)該被當(dāng)作有效翻譯結(jié)果使用。4.2 判斷“離譜”的幾個(gè)簡(jiǎn)單標(biāo)準(zhǔn)不是所有“看起來怪”的翻譯都是錯(cuò)的尤其詩歌、俚語、雙關(guān)語經(jīng)常需要意譯。但要判斷“阿斯圖里亞斯傳奇”和“天貓精靈”這種可以看三條源文本和目標(biāo)文本是否存在明顯的音譯對(duì)應(yīng)。比如“Huawei”和“華為”有音譯對(duì)應(yīng)但“阿斯圖里亞斯傳奇”和“天貓精靈”完全沒有。源文本和目標(biāo)文本是否存在語義關(guān)聯(lián)。“傳奇”和“精靈”勉強(qiáng)能沾上魔幻題材“阿斯圖里亞斯”和“天貓”完全沒關(guān)系。是否涉及品牌、公司、產(chǎn)品名。品牌通常不能亂翻出現(xiàn)跨品牌跳躍要高度警惕。如果三條全不沾卻還給出肯定語氣的結(jié)果那就是模型出了問題不是你在文化上沒跟上。4.3 保留原始文本和版本信息普通用戶遇到這種情況記得把原文、原圖或錄音截圖保存下來。如果后續(xù)要反饋給產(chǎn)品方這些材料比一句“翻譯錯(cuò)了”有用得多。反饋時(shí)可以寫清楚輸入的是文字還是圖片還是語音。使用的產(chǎn)品版本。原語言和目標(biāo)語言。期望輸出是什么。實(shí)際輸出是什么。復(fù)現(xiàn)了幾次。能提供這些信息開發(fā)人員定位問題的效率會(huì)高很多。這也是為什么很多團(tuán)隊(duì)喜歡說“沒有問題描述就沒有 bug”。5. 開發(fā)者和產(chǎn)品團(tuán)隊(duì)可以提前做的四道防線作為產(chǎn)品和技術(shù)團(tuán)隊(duì)不能等著用戶發(fā)現(xiàn)這種“段子級(jí)錯(cuò)誤”。至少可以從四個(gè)方向提前做防護(hù)。5.1 專有名詞白名單和免翻譯列表第一道防線是建白名單。這里不是把所有詞都凍結(jié)不翻而是把品牌名、產(chǎn)品名、人名、地名、作品名等識(shí)別出來放入受控規(guī)則。比如“天貓精靈”可以映射為 Tmall Genie不應(yīng)該被拆成“Tmall Sprites”之類的組合。常見做法是維護(hù)一份 JSON 或表格源語言目標(biāo)語言原文指定譯文是否免翻譯zh-CNen天貓精靈Tmall Genie是zh-CNes天貓精靈Tmall Genie是enzh-CNAsturias阿斯圖里亞斯是eszh-CNLeyenda傳奇 / 傳說否白名單不是越多越好但核心品牌名、知名地名、重要作品名一定要覆蓋。否則專名高頻出現(xiàn)時(shí)錯(cuò)誤會(huì)被無限放大。5.2 低置信度降級(jí)策略第二道防線是給翻譯結(jié)果加置信度門檻。很多模型的輸出不是只有結(jié)果還有分?jǐn)?shù)或概率。當(dāng)置信度很低時(shí)產(chǎn)品不應(yīng)該直接把結(jié)果懟給用戶。降級(jí)策略可以這樣做置信度高顯示正常翻譯結(jié)果。置信度中等顯示結(jié)果并標(biāo)注“可能不準(zhǔn)確”。置信度低顯示原文并提示“未能識(shí)別這段文本的可靠含義”。“阿斯圖里亞斯傳奇”被翻成“天貓精靈”這種結(jié)果置信度大概率不高。如果產(chǎn)品在低置信度時(shí)選擇“顯示原文”用戶至少不會(huì)看到一個(gè)離譜答案。這比強(qiáng)行翻譯要好得多。5.3 把“怪詞”加進(jìn)測(cè)試集第三道防線是在測(cè)試集里加入低頻專有名詞和容易混淆的品牌詞。很多翻譯產(chǎn)品的回歸測(cè)試只跑常見新聞?lì)悺⒓夹g(shù)類文本缺少對(duì)怪名詞的覆蓋。結(jié)果一遇到地名、人名、品牌名就開始亂跳。可以準(zhǔn)備一份“奇怪名詞清單”專門用來測(cè)實(shí)體邊界和翻譯穩(wěn)定性阿斯圖里亞斯。天貓精靈。阿爾貝尼茲。Leyenda。Asturias。每次發(fā)版前拿這些詞跑一遍。只要有一個(gè)入口出現(xiàn)跨實(shí)體跳變就要回滾或加規(guī)則。這種自動(dòng)化測(cè)試雖然簡(jiǎn)單但能攔住大量“看起來像段子、實(shí)際上影響信任度”的問題。5.4 異常結(jié)果可追蹤第四道防線是日志和追蹤。當(dāng)用戶上報(bào)“翻譯成天貓精靈”時(shí)工程團(tuán)隊(duì)要能查到這條請(qǐng)求當(dāng)時(shí)用了什么模型版本、什么詞典、什么后處理規(guī)則、概率多少。建議記錄這些字段請(qǐng)求 ID。輸入原文、原圖或錄音文件。模型版本。分詞和實(shí)體識(shí)別中間結(jié)果。候選結(jié)果前五名及置信度。命中的規(guī)則。最終輸出。用戶是否點(diǎn)擊反饋。有了這些數(shù)據(jù)不僅能定位問題還能統(tǒng)計(jì)這種錯(cuò)誤在全量流量中的占比。如果只是小概率隨機(jī)事件可以靠降級(jí)策略處理如果頻繁出現(xiàn)就要專項(xiàng)優(yōu)化。說到底“阿斯圖里亞斯傳奇”翻成“天貓精靈”最值得關(guān)注的不是這個(gè)梗本身多好笑而是它說明了一個(gè)很現(xiàn)實(shí)的問題今天很多 AI 產(chǎn)品真的會(huì)在低置信度場(chǎng)景下一本正經(jīng)地胡說八道。用戶如果完全不設(shè)防很容易被帶偏開發(fā)如果只把它當(dāng)段子處理不去排查實(shí)體識(shí)別和置信度降級(jí)后面還會(huì)有更多更離譜的輸出等著你。我個(gè)人更建議把這類現(xiàn)象當(dāng)做一個(gè)“負(fù)樣本”存進(jìn)問題庫。每次看到這種跨實(shí)體的跳變都主動(dòng)問一遍它是文本翻譯、OCR 還是語音識(shí)別出的問題中間哪一層丟了實(shí)體邊界低置信度結(jié)果有沒有被強(qiáng)制降級(jí)把這些問題答清楚比單純嘲笑翻譯軟件有意義得多。