作為身在巴西的解決方案架構(gòu)師,我們經(jīng)常需要將技術(shù)內(nèi)容從英語(yǔ)翻譯成其他語(yǔ)言。人工翻譯無(wú)疑需要耗費(fèi)大量時(shí)間,特別是在處理PowerPoint演示文稿時(shí),分散在頁(yè)面內(nèi)各個(gè)區(qū)域的文字真的會(huì)讓編輯慣了正常純文本文檔的朋友們抓狂。為了解決這個(gè)問(wèn)題,我們編寫了一套腳本,能夠使用Amazon Translate翻譯微軟PowerPoint文件。本文將向大家介紹這套翻譯腳本的具體工作方式。
Amazon Translate是一項(xiàng)基于神經(jīng)網(wǎng)絡(luò)的機(jī)器學(xué)習(xí)翻譯服務(wù),可提供快速、高質(zhì)量、低成本的語(yǔ)言翻譯功能。使用Amazon Translate時(shí),您只需提交源語(yǔ)言的輸入文本,即可接收到翻譯為目標(biāo)語(yǔ)言的輸出文本。關(guān)于Amazon Translate所支持語(yǔ)種的更多詳細(xì)信息,請(qǐng)參閱支持的語(yǔ)種與語(yǔ)言代碼。
我們的翻譯腳本使用Python編寫而成,且需要依賴開(kāi)源庫(kù)以解析演示文稿。
解決方案
此腳本需要傳遞三個(gè)參數(shù):
·源語(yǔ)言
·目標(biāo)語(yǔ)言
·pptx文件的文件路徑
然后腳本將依次執(zhí)行以下功能:
·解析目標(biāo)文件
·提取文本內(nèi)容
·為各文本調(diào)用Amazon Translate API
·將API返回的翻譯文本結(jié)果保存為新文件
以下命令將把演示文稿中的文本由英語(yǔ)翻譯為西班牙語(yǔ):
$python pptx-translator.py en pt example.pptx
Translating example.pptx from en to pt...
Slide 1 of 7
Slide 2 of 7
Slide 3 of 7
Slide 4 of 7
Slide 5 of 7
Slide 6 of 7
Slide 7 of 7
Saving example-pt.pptx...
為了與Amazon Translate進(jìn)行交互,該腳本使用到Boto(AWS SDK for Python)。Boto提供多種配置方式,但無(wú)論如何選擇,您至少需要設(shè)置AWS憑證與區(qū)域,才能向AWS正常發(fā)出請(qǐng)求。
為了處理我們提供的演示文稿,該腳本還用到python-pptx,一個(gè)發(fā)布在GitHub上的開(kāi)源庫(kù)。在提供演示文稿路徑作為輸入時(shí),該庫(kù)將返回一個(gè)Presentation對(duì)象,詳見(jiàn)以下代碼:
presentation=Presentation(args.input_file_path)
Presentation對(duì)象當(dāng)中包含演示文稿中的每一張幻燈片,以及各幻燈片中使用的框體圖形與文本段落。您可以遍歷所有段落,并為每段文本調(diào)用Amazon Translate API。Amazon Translate提供兩種不同翻譯處理模式:實(shí)時(shí)翻譯與異步批處理翻譯。此腳本使用實(shí)時(shí)翻譯模式,這意味著在一段文本之上調(diào)用Amazon Translate,然后同步獲得相應(yīng)的翻譯結(jié)果,具體參見(jiàn)以下代碼:
for paragraph in shape.text_frame.paragraphs:
for index, paragraph_run in enumerate(paragraph.runs):
response = translate.translate_text(
Text=paragraph_run.text,
SourceLanguageCode=source_language_code,
TargetLanguageCode=target_language_code,
TerminologyNames=terminology_names)
接下來(lái),您可以使用API返回的翻譯文本替換原始文本,具體代碼如下:
paragraph.runs[index].text=response.get('TranslatedText')
該腳本不僅能夠替換可見(jiàn)的演示文稿文本,還能夠替換對(duì)應(yīng)注釋。此外,這套腳本還提供用于更新語(yǔ)言標(biāo)識(shí)符的字典。為了使微軟PowerPoint能夠檢查其中的拼寫正確性,您需要指定正確的語(yǔ)言信息,具體參見(jiàn)以下代碼:
paragraph.runs[index].font.language_id=LANGUAGE_CODE_TO_LANGUAGE_ID[target_language_code]
除了傳遞文本、源語(yǔ)言與目標(biāo)語(yǔ)言之外,大家還可以使用Amazon Translate提供的Custom Terminology(自定義術(shù)語(yǔ))功能,此功能將幫助大家根據(jù)實(shí)際需求準(zhǔn)確翻譯各項(xiàng)術(shù)語(yǔ)。為此,我們?cè)谡{(diào)用API時(shí)需要傳遞經(jīng)過(guò)預(yù)翻譯的自定義術(shù)語(yǔ)列表。例如,您可以對(duì)某些技術(shù)術(shù)語(yǔ)進(jìn)行自定義,將這些術(shù)語(yǔ)及其對(duì)應(yīng)的翻譯結(jié)果添加至CSV文件當(dāng)中,而后將其路徑作為可選參數(shù)傳遞給腳本。此腳本會(huì)讀取文件并將內(nèi)容導(dǎo)入至Amazon Translate,具體參見(jiàn)以下代碼:
with open(terminology_file_path, 'rb') as f:
translate.import_terminology(
Name=TERMINOLOGY_NAME,
MergeStrategy='OVERWRITE',
TerminologyData={'File': bytearray(f.read()), 'Format': 'CSV'})
在所有幻燈片翻譯完成之后,即可使用以下代碼將結(jié)果另存為新的文件:
presentation.save(output_file_path)
這套腳本非常簡(jiǎn)單,也相當(dāng)實(shí)用。
總結(jié)
本文介紹了一套基于腳本的自動(dòng)翻譯解決方案,能夠使用Amazon Translate將演示文稿中的文本翻譯成多種語(yǔ)言。
Original URL:https://aws.amazon.com/cn/blogs/machine-learning/translating-presentation-files-with-amazon-translate/