Amazon Translate е част от семейството услуги AI/ML, налични в Amazon Web Services. Той разчита на машини за невронни машинни преводи, използващи колекция от развиващи се набори от данни, които осигуряват основата за непрекъснатото обучение и способността на Amazon Translate да предоставя все по-точни преводи.

Преди пускането на Amazon Translate през 2017 г. разработчиците на софтуер трябваше да използват услуги за превод, разчитащи на статичен евристичен модел и които често изискваха включване на значителен код на трета страна в тяхното приложение. С Amazon Translate са достъпни както услугите за превод в реално време, така и услугите за групов превод, като се използва извикване на API от комплекта за разработка на софтуер на AWS (SDK) за вашия конкретен език за програмиране. Използването на съществуващ API опростява възможността за локализиране на уеб сайт или предоставяне на многоезични данни чрез предварителна обработка на данните или превода им при поискване.

Не всяка дума ще се преведе точно на друг език. Имената на фирмите, марките на продуктите, знаците и други термини, уникални за вашата индустрия, компания или култура, може да нямат съответен превод на друг език. Amazon Translate решава този проблем, като предоставя възможност за персонализирана терминология, която ви позволява да определите как конкретният термин се превежда на конкретен език. Тази възможност трябва да намали броя на преводите, изисквани от професионални преводачи, което означава по-ниски разходи за вашата организация и проект за разработка на софтуер.

Независимо дали става дума само за няколко думи или голям обем текст, Amazon Translate се мащабира лесно, когато нуждите ви от превод нарастват. Услугата осигурява постоянно бързи и надеждни преводи, независимо от обема заявки за превод, които правите.

Примерни случаи на употреба

Страницата за общ преглед на Amazon Translate подчертава няколко приложения за Amazon Translate, включително анализиране на съдържанието на социалните медии, за да разбере гледните точки на потребителите, свързани с вашия продукт, независимо от езика, на който са написани коментарите. Това решение използва както Amazon Translate, така и Amazon Comprehend за анализ на обработката на естествен език.

Друг пример е преводът в реално време на динамична и статична информация. Непрекъснатият превод на информация в реално време е труден за поддържане, тъй като обемът на информацията и броят на преводачите, които можете да си позволите да наемете, са обратно пропорционални. Например, уеб сайтове, съдържание за игри, аудио и видео могат да се възползват от превода в реално време.

Един пример е превод в реално време за услуги за поддръжка и помощ. Потребителите не са ограничени от знанията си за езика, който използва вашата корпорация. Испаноговорящ потребител (например) може да въвежда на испански, текстът се превежда на английски с помощта на Amazon Translate и се показва на агента по поддръжката. Тогава агентът по поддръжката може да отговори на английски и текстът след това се превежда на испански. Всяка текстова комуникация може да бъде обработена с помощта на Amazon Translate, преди да бъде изпратена до желаната аудитория.

Езикова поддръжка

Amazon Translate не се ограничава до преводи между един език и английски. Може да превежда от и на всеки поддържан език. Наличните езици са изброени в документацията на Amazon Translate. Когато свързвате изходен език и целеви език, получавате езикова двойка.

Към 27 юни 2020 г. Amazon Translate поддържа 55 езика.

Как работи?

Amazon Translate използва невронна система за превод, за разлика от статистически и базирани на правила машини за превод. Трябва накратко да разберем разликите между тези подходи.

Превод, базиран на правила

Базираният на правила превод разчита на езикови правила и масивни речници. Има набор от езикови правила и двуезичен речник за всяка езикова двойка. В допълнение, базираният на правила двигател изисква „„обширни лексикони с морфологична, синтактична и семантична информация и големи набори от правила““. Това означава, че има голяма предварителна инвестиция в създаването на превод за конкретна езикова двойка и поддържането на езиковите правила и речници.

Статистически превод

Статистическият превод използва модели за статистически анализ, извлечени от едноезични и двуезични речници. Изграждането на модела за превод може да бъде бързо, но качеството на речниците и броят на думите в тези речници оказват влияние върху превода и неговата точност. Въпреки че статистическият модел може да определи семантиката и контекста, можем по-подходящо да сравним статистическия превод с хартиен двуезичен речник, като английско-испански/испанско-английски.

Невронен превод

Предизвикателството с базираните на правила и статистическите модели е усилието да се създадат първоначалните лингвистични правила и речници, последвано от текущата поддръжка, последвано от ограничения контекстуален анализ преди завършването на превода. Това прави разходите за първоначално разработване и текуща поддръжка значителни.

Механизмите за невронен превод като Amazon Translate могат да произвеждат по-точни преводи чрез използване на техники за дълбоко обучение, внедрени чрез невронна мрежа. Невронната мрежа разглежда целия контекст на изречението за превод вместо няколко думи преди или след думата, която се превежда.

За да извършим превод, който ще видим в следващия раздел, трябва да имаме UTF-8 кодиран текстов файл, който е известен като изходен текст. Резултатът от превода е UTF-8 кодиран изходен текст, който може да има различен брой знаци в зависимост от конкретната езикова двойка.

Механизмът за превод чете изходния текст едно изречение наведнъж и анализира всяка дума, за да изгради семантично представяне. Тази работа се извършва от кодера. След като се създаде семантичното представяне, декодерът го използва, за да превежда една дума наведнъж.

С Amazon Translate можем да изберем да не посочваме конкретен изходен език, което е от полза в определени контексти, където може да не знаете на какъв език комуникира потребителят. Например, приложение за чат на бюро за помощ може да трябва да поддържа всички езици до английски. За да зададете автоматично откриване на език, използвайте auto като изходен език.

Използването на автоматично разпознаване на езика води до допълнителни такси, тъй като за откриване на езика се използва естественият езиков професор (NLP) на Amazon Comprehend.

Средната статия на Julien Simon от 2017 г. „Бърз поглед върху машинния превод с Amazon Translate“ е малко остаряла, но той въвежда използването на „Amazon SageMaker“ при внедряването на Amazon Translate.

Използвате Amazon Translate?

Amazon Translate е наличен в конзолата за управление на AWS, чрез интерфейса на командния ред на AWS и комплекта за разработка на софтуер на AWS. Нека да разгледаме използването на Amazon Translate в конзолата за управление и комплекта за разработка на софтуер (SDK).

Тази статия не обяснява как да настроите AWS акаунт, CLI или SDK.

Конзола

Преди да разгледаме използването на SDK за подаване на заявка за превод, ще видим как да подадете заявка за превод с помощта на конзолата. След като влезете в конзолата за управление на AWS, отворете Amazon Translate и разгънете страничната лента, за да видите наличните опции. В противен случай страницата с общ преглед ви позволява незабавно да преминете към превод в реално време.

Щракването върху елемента от менюто превод в реално време показва изглед, в който можете да изберете изходната и целевата езикова двойка и да предоставите изходния текст.

Докато въвеждате изходния текст, преведеният текст се появява в другото текстово поле. Ето пример за превод от английски на френски.

Това изображение показва опцията за използване на опцията за персонализирана терминология, където можете да вмъкнете уникални думи за вашия конкретен случай и да определите как ще бъдат преведени на други езици. Тази опция е деактивирана по подразбиране.

Страницата превод в реално време допълнително показва JSON, който би бил необходим за превод в реално време на изходния текст с помощта на CLI или SDK. Ако в полето източник не е предоставен текст, JSON включва конфигурацията за езиковата двойка. Това ви позволява да използвате променлив текст във вашето приложение, когато извършвате превода.

Пакетен превод

Преводът в реално време, както е илюстриран в конзолата за управление на AWS, е синхронен — докато въвеждате текста, той веднага се превежда. Този подход обаче има ограничение от 5000 знака. В много случаи това е достатъчно за много от случаите на употреба, представени досега.

Асинхронният или пакетният превод се използва за по-големи количества текст или всяка ситуация, при която не се нуждаете от почти мигновен превод. Пакетният превод използва S3 контейнер за извличане на изходния файл и съхраняване на преведения текст. Всеки изходен файл може да бъде с размер до 5 GB.

Използването на пакетен превод включва

  • качване на документите за превод в S3 контейнер;
  • указване на контейнера S3, където трябва да се съхраняват преведените резултати; и,
  • предоставяне на IAM роля с достъп за четене до източника и достъп за четене/запис до целевите S3 кофи.

Ако използвате префикси (папки), тогава можете да използвате една кофа с различни префикси. С изходния текст, копиран в посочената кофа S3, стартирайте заявката за групов превод и изчакайте резултатите.

По време на проучването за тази статия забелязах, че времето за пакетен превод може да бъде 15 минути дори за малки количества текст.

Тук важи очевидното предупреждение — всички файлове, поставени в кофата S3, трябва да имат един и същ оригинален език и да бъдат преведени на същия целеви език. Целевият език се посочва при изпращане на пакетното задание, което ви позволява да превеждате изходния текст на много различни езици. Както ще видим по-късно, резултатите се съхраняват в S3 кофа/префикс, който е специфичен за това задание за превод.

Използване на комплекта за разработка на софтуер

Използването на комплекта за разработка на софтуер на AWS (SDK) за взаимодействие с Amazon Translate е подобно на други услуги на AWS. Тази част от статията ще разгледа използването на SDK за изпращане на задания за превод и получаване на статус на задания за пакетен превод.

Изпратете заявка за превод

Опростен пример за подаване на заявка за превод изглежда така:

client = boto3.client('translate')
response = client.translate_text(
            Text=text, SourceLanguageCode=source, TargetLanguageCode=target)

Изграждането на по-сложно решение може да се изпълни по следния начин:

$ ./xlate submit
Enter text to translate: Today is Saturday
Enter source language: en
Enter target language: fr
Aujourd'hui c'est samedi

Тази примерна програма илюстрира изискванията за извикването на translate_text SDK, включително езиковия код за изходния и целевия език, заедно с текста за превод. Това подчертава важен аспект на SDK, който е използването на езиков код, който е предварително дефиниран код от 2-5 знака. Да знаете какъв езиков код да използвате включва проверка на списъка с поддържани езици.

Ако не е предоставена на командния ред, илюстрираната примерна програма (имплементирана в Python чрез Click) подканва за необходимата информация, за да завърши заявката. Отговорът е преведеният текст.

Изпратете задание за пакетен превод

Преди да се потопим в режим на пакетен превод, трябва да обсъдим IAM изискванията за задачата за пакетен превод. Това е така, защото когато се изпрати заданието за пакетен превод, трябва да посочите роля за достъп до данни, предоставяща на Amazon Translate съответните разрешения.

Ето примерна декларация за политика, която може да се приложи към ролята за достъп до данни. Това са минималните разрешения, необходими за тази роля, за да успее заданието за превод.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "translate:*",
                "comprehend:DetectDominantLanguage",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics"
             ],   
            "Resource": "*"
        }
    ]
}

Изпращането на задание за пакетен превод чрез SDK включва предоставяне на информацията, показана тук.

response = client.start_text_translation_job(
            JobName=name,
            InputDataConfig={
                'S3Uri': s3_source,
                'ContentType': s3_source_type
            },
            OutputDataConfig={
                'S3Uri': s3_output
            },
            DataAccessRoleArn=role,
            SourceLanguageCode=source_language,
            TargetLanguageCodes=[
                target_language
            ]
        )

Използвайки примерна програма (имплементирана в Python с помощта на Click), за да илюстрираме използването на SDK, ето как изглежда командният ред (разделен на няколко реда за четливост):

$ ./xlate submit-batch 
    --s3source=s3://xlate-media/in/ 
    --s3output=s3://xlate-media/out/ 
    --s3source-type=plain 
    --fromlanguage=en 
    --tolanguage=fr  
    --role="arn:aws:iam::ACCOUNT_ID:role/translate-access-role" 
    --name=test17 
    --region=us-east-1

Стойностите s3Source и s3Output използват префикси, за да определят къде се намират изходните файлове и къде трябва да бъдат поставени преведените файлове.

Стойностите на S3 URI трябва да завършват с „/“ или SDK генерира грешка при изпращане на заданието за превод.

Стойността s3source-type определя дали файлът е обикновен текст или HTML. Моята примерна програма преобразува тези стойности в text/plain или text/html. Това опростява въвеждането на този дълъг команден ред. Стойностите fromlanguage и tolanguage дефинират кодовете на изходния и целевия език. Не е възможно да използвате името на езика като „испански“; трябва да използвате съответния езиков код, 'es' в извикването на API на SDK (въпреки че ако изграждате интерфейс към SDK, можете да внедрите имената на езиците и да ги преведете в езиковите кодове.

Ролята дефинира IAM ролята, която Amazon Translate ще използва при извършване на пакетния превод. Ако ролята не е предоставена, се предоставя грешка при изпращане на заданието. Стойността name предоставя име за заданието. Името се използва за извличане на състоянието на заданието след изпращането на превода. Можем да видим състоянието на заданието, като използваме извикването на функцията list_jobs SDK (пример от моя демонстрационен код):

id: 1232f451846b2b7506f4d52910bbe418 name: test18 status: COMPLETED 
submitted: 2020-07-22 22:44:27.928000-05:00 end: 2020-07-22 22:54:42.731000-05:00 
output: s3://xlate-media/out/548985610555-TranslateText-1232f451846b2b7506f4d52910bbe418/ 
Your job has completed successfully.

Получаването на резултатите от заданието за пакетен превод включва извличането им от S3 URI, указан при изпращането на заданието. Но това е малко по-сложно, тъй като всяка задача за превод сама по себе си се записва в папка под S3 URI.

Ако има повече от един файл във входната група S3, всеки файл се стартира като индивидуално задание за пакетен превод, всяко с уникален JobId, въпреки че името на заданието се прилага към всяко задание.

В този пример резултатите от нашата работа се намират в

s3://xlate-media/out/548985610555-TranslateText-1232f451846b2b7506f4d52910bbe418/

Ако използваме AWS CLI, можем да видим съдържанието на кофата с помощта на командата

aws s3 ls s3://xlate-media/out/548985610555-TranslateText-1232f451846b2b7506f4d52910bbe418/

Резултатите показват файла с нашия превод и папка с име details, която съдържа JSON файл с допълнителни данни за задачата.

Изходният текст е

This is a test file, which is written in English.  This file is used for Amazon Translate to test the batch translation capability.

Изходният текст гласи (на френски),

Ceci est un fichier de test, qui est écrit en anglais. Ce fichier est utilisé pour Amazon Translate pour tester le
capacité de traduction par lots.

Има много повече възможности в Amazon Translate, които не съм засегнал в тази статия. Ако създавате приложения, които се нуждаят от езикови локализации, можете да обработите текста чрез Amazon Translate. С помощта на интерактивни услуги като чатове или за превод на текст при поискване е възможно да се осигури подобрено клиентско изживяване.

Колко добър е преводът?

Очевидният въпрос за всяка преводаческа услуга е „Колко точна е тя?“. За да отговоря на този въпрос, се свързах с моята мрежа LinkedIn за хора, владеещи английски-френски и английски-испански езикови двойки. Беше им предоставен преведеният текст и беше поискано да предоставят превода на английски. Помолих ги да създадат абзац на френски или испански и съответния английски превод. След това взех френския или испанския текст и го преведох на английски и го сравних с техния предоставен превод.

Резултатите от тестовете са документирани в тази статия и консолидирани тук за краткост. Ако искате да прочетете подробното сравнение, вижте тази свързана статия.

Резултатите от Amazon Translate бяха добри в сравнение с оригиналния английски текст или превода на английски, предоставен от преводача. Докато разглеждате превода и го сравнявате с оригинала, е очевидно, че макар използваните думи да са различни, напр. компания вместо корпорация, смисълът на текста е очевиден.

One caveat is content which has multiple formats, like programming documentation where there is both explanatory text and code samples.  Amazon Translate can't distinguish between content which should and should not be translated, meaning that the code sample is also translated which can have untended consequences.

Ценообразуване

Amazon Translate следва модела на ценообразуване pay-as-you-go като много услуги на AWS. Използването на Free-Tier е ограничено до 2 милиона знака на месец за 12 месеца. 12-месечният период на безплатно ниво започва от първия ден, в който използвате услугата. Ограничението от 2 милиона знака включва интервали. След като вашето безплатно ниво приключи или надхвърлите 2 милиона знака за месец, цената е 15,00 USD за милион знака.

Заключение

Всяко съдържание, което създавате и се нуждаете от конвертиране на различен език за вашата аудитория, може да бъде подготвено предварително и публикувано. Ако не знаете какви езици искате да подготвите предварително, можете да изберете да извършите превод в реално време, когато потребителят го поиска.

Като се има предвид това, използването на Amazon Translate за всеки конкретен проект трябва да зависи от вашата уникална ситуация. Следните фактори трябва да се вземат предвид при вземането на решение:

  1. Когато имате нужда от превод почти в реално време, подходящо е да използвате Amazon Translate.
  2. Когато 100% точност е по-маловажна от „разкриването на мисълта“, Amazon Translate има смисъл.
  3. За дълги, сложни документи, където точността е по-важна, използването на професионален преводач е по-подходящо.
  4. Текст, включващ специфичен за култура език, събития или история, може да е по-подходящ за професионален преводач.
  5. Текст, който е „краткотраен“, като чат сесия или имейл, е подходящ за Amazon Translate. Важно е да се има предвид, че могат да възникнат проблеми, тъй като хората не винаги пишат това, което имат предвид.
  6. Текст, който е предназначен за съхранение в архивна система или използван за справка от други, може да се възползва от професионален преводач.
  7. Внимавайте с излишните фрази. Бъдете ясни и кратки.
  8. Потвърдете превода на специфични термини като „бюро за помощ“, може да се преведе на друг език, но може да не е толкова ефективно, колкото използването на термина, подходящ за този език.

Услугата е лесна за използване и както е посочено в допълнителната статия, резултатите от превода са ефективни.

Благодарности

Благодарим на Chanelle Dupuis за съдействието й с английско-френската част от тази оценка. В момента г-жа Дюпюи работи върху своята докторска степен. по френски науки в университета Браун и владее френски, испански, португалски и английски език.

Благодарим на Виктория Мартинез Адалид за съдействието й с англо-испанската част от оценката. Г-жа Адалид е професионален преводач от английски на испански.

И накрая, благодаря на съпругата ми Санди Хеър за старателното четене на всяка статия и изслушването на моите непрекъснати бръщолевения за това, което научавам в процеса на изследване.

Препратки

„Дълбоко гмуркане в Amazon Polly“

Пет прегледа на AWS Transcribe

„Amazon Comprehend“

Amazon Polly: Внасяне на аудио в моите средни статии

„Amazon SageMaker“

Преглед на Amazon Translate

Бърз поглед върху машинния превод с Amazon Translate

Комплект за разработка на софтуер AWS и инструменти за програмиране

Въведение в дигиталното обучение на Amazon Translate

Какво е машинен превод? Машинен превод, базиран на правила срещу статистически машинен превод

за автора

Крис е висококвалифициран професионалист по информационни технологии, AWS облак, обучение и сигурност, осигуряващ лидерство в облака, сигурността, обучението и инженеринга на процеси, за да опрости и достави висококачествени продукти. Той е съавтор на седем книги и автор на повече от 70 статии и глави в книги в технически, управленски и информационни публикации. Неговите богати технологии, информационна сигурност и опит в обучението го правят ключов ресурс, който може да помогне на компаниите при технически предизвикателства.

Авторско право

Тази статия е авторско право © 2020, Chris Hare.