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