Container: Tekst vertalen
Tekst vertalen.
Aanvraag-URL
Een aanvraag POST
versturen naar:
POST http://localhost:{port}/translate?api-version=3.0&&from={from}&to={to}
Voorbeeldaanvraag
curl -x POST "https:localhost:5000/translate?api-version=3.0&from=en&to=es" -H "Content-Type: application/json" -d "[{
'Text': 'I would really like to drive your car.'}]"
Voorbeeldantwoord
[
{
"translations": [
{
"text": "Realmente me gustaría conducir su coche.",
"to": "es"
}
]
}
]
Aanvraagparameters
Aanvraagparameters die worden doorgegeven aan de queryreeks zijn:
Vereiste parameters
Queryparameter | Beschrijving | Voorwaarde |
---|---|---|
api-versie | Versie van de API die door de client is aangevraagd. Waarde moet zijn 3.0 . |
Vereiste parameter |
from | Hiermee geeft u de taal van de invoertekst. | Vereiste parameter |
to | Hiermee geeft u de taal van de uitvoertekst. Gebruik bijvoorbeeld to=de om te vertalen naar het Duits.Het is mogelijk om te vertalen naar meerdere talen tegelijk door de parameter in de querytekenreeks te herhalen. Gebruik bijvoorbeeld to=de&to=it om te vertalen naar Duits en Italiaans. |
Vereiste parameter |
- U kunt een query uitvoeren op de service voor
translation
ondersteunde talen voor bereiken. - Zie ook Taalondersteuning voor transliteratie.
Optionele parameters
Queryparameter | Beschrijving |
---|---|
textType | Optionele parameter. Hiermee bepaalt u of de tekst die wordt vertaald tekst zonder opmaak of HTML-tekst is. Elke HTML moet een goed gevormd, volledig element zijn. Mogelijke waarden zijn: plain (standaard) of html . |
includeSentenceLength | Optionele parameter. Hiermee geeft u op of zingrenzen moeten worden opgenomen voor de invoertekst en de vertaalde tekst. Mogelijke waarden zijn: true of false (standaard). |
Aanvraagheaders
Kopteksten | Beschrijving | Voorwaarde |
---|---|---|
Verificatieheaders | Bekijk beschikbare opties voor verificatie. | Vereiste aanvraagheader |
Inhoudstype | Hiermee geeft u het inhoudstype van de payload op. De geaccepteerde waarde is application/json; charset=UTF-8 . |
Vereiste aanvraagheader |
Content-Length | De lengte van de aanvraagtekst. | Optioneel |
X-ClientTraceId | Een door de client gegenereerde GUID om de aanvraag op unieke wijze te identificeren. U kunt deze header weglaten als u de tracerings-id in de queryreeks opneemt middels een queryparameter met de naam ClientTraceId . |
Optioneel |
Aanvraagtekst
De hoofdtekst van de aanvraag is een JSON-matrix. Elk matrixelement is een JSON-object met een tekenreekseigenschap met de naam Text
, die de tekenreeks vertegenwoordigt die moet worden vertaald.
[
{"Text":"I would really like to drive your car around the block a few times."}
]
De volgende beperkingen zijn van toepassing:
- De matrix kan maximaal 100 elementen bevatten.
- De volledige tekst in de aanvraag mag niet langer zijn dan 50.000 tekens, inclusief spaties.
Hoofdtekst van de reactie
Een geslaagd antwoord is een JSON-matrix met één resultaat voor elke tekenreeks in de invoermatrix. Een resultaatobject bevat de volgende eigenschappen:
translations
: Een matrix met vertaalresultaten. De grootte van de matrix komt overeen met het aantal doeltalen dat is opgegeven via deto
queryparameter. Elk element in de matrix omvat:to
: Een tekenreeks die de taalcode van de doeltaal vertegenwoordigt.text
: Een tekenreeks die de vertaalde tekst geeft.sentLen
: Een object dat zinsgrenzen retourneert in de in- en uitvoerteksten.srcSentLen
: Een matrix met gehele getallen die de lengte van de zinnen in de invoertekst aangeeft. De lengte van de matrix is het aantal zinnen en de waarden zijn de lengte van elke zin.transSentLen
: Een matrix met gehele getallen die de lengte van de zinnen in de vertaalde tekst aangeeft. De lengte van de matrix is het aantal zinnen en de waarden zijn de lengte van elke zin.Zingrenzen worden alleen opgenomen wanneer de aanvraagparameter
includeSentenceLength
istrue
.sourceText
: Een object met één tekenreekseigenschap met de naamtext
, die de invoertekst in het standaardscript van de brontaal geeft.sourceText
eigenschap is alleen aanwezig wanneer de invoer wordt uitgedrukt in een script dat niet het gebruikelijke script voor de taal is. Als de invoer bijvoorbeeld Arabisch is geschreven in het Latijnse script,sourceText.text
dan zou dezelfde Arabische tekst worden geconverteerd naar het Arabische schrift.
Responsheaders
Kopteksten | Beschrijving |
---|---|
X-RequestId | Waarde die door de service wordt gegenereerd om de aanvraag te identificeren en voor probleemoplossingsdoeleinden te gebruiken. |
X-MT-System | Hiermee geeft u het systeemtype op dat is gebruikt voor vertaling voor elke 'to'-taal die is aangevraagd voor vertaling. De waarde is een door komma's gescheiden lijst met tekenreeksen. Elke tekenreeks geeft een type aan: ▪ Aangepast - Aanvraag bevat een aangepast systeem en ten minste één aangepast systeem is gebruikt tijdens de vertaling. ▪ Team - Alle andere aanvragen |
Antwoordstatuscodes
Als er een fout optreedt, retourneert de aanvraag een JSON-foutreactie. De foutcode is een getal van 6 cijfers dat de HTTP-statuscode van 3 cijfers combineert, gevolgd door een 3-cijferig getal om de fout verder te categoriseren. Algemene foutcodes vindt u op de naslagpagina van v3 Translator.
Codevoorbeelden: tekst vertalen
Notitie
- Elk voorbeeld wordt uitgevoerd op de
localhost
opdracht die u hebtdocker run
opgegeven. - Terwijl uw container wordt uitgevoerd,
localhost
verwijst u naar de container zelf. - Je hoeft niet te gebruiken
localhost:5000
. U kunt elke poort gebruiken die nog niet in gebruik is in uw hostomgeving.
Eén invoer vertalen
In dit voorbeeld ziet u hoe u één zin van het Engels naar vereenvoudigd Chinees vertaalt.
curl -X POST "http://localhost:{port}/translate?api-version=3.0&from=en&to=zh-Hans" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"
De hoofdtekst van het antwoord is:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"}
]
}
]
De translations
matrix bevat één element, waarmee de vertaling van het ene stuk tekst in de invoer wordt gegeven.
Azure AI Translator-eindpunt opvragen (tekst)
Hier volgt een voorbeeld van een cURL HTTP-aanvraag met behulp van localhost:5000 die u hebt opgegeven met de docker run
opdracht:
curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-HANS"
-H "Content-Type: application/json" -d "[{'Text':'Hello, what is your name?'}]"
Notitie
Als u de cURL POST-aanvraag probeert uit te voeren voordat de container gereed is, krijgt u uiteindelijk tijdelijk een service niet beschikbaar antwoord. Wacht totdat de container gereed is en probeer het opnieuw.
Tekst vertalen met behulp van Swagger-API
Engels ↔ Duits
- Ga naar de Swagger-pagina:
http://localhost:5000/swagger/index.html
- POST /vertalen selecteren
- Selecteer Uitproberen
- Voer de parameter From in als
en
- Voer de parameter Aan in als
de
- Voer de parameter api-versie in als
3.0
- Vervang onder teksten door
string
de volgende JSON
[
{
"text": "hello, how are you"
}
]
Selecteer Uitvoeren, de resulterende vertalingen worden uitgevoerd in de hoofdtekst van het antwoord. U ziet de volgende antwoorden:
"translations": [
{
"text": "hallo, wie geht es dir",
"to": "de"
}
]
Tekst vertalen met Python
Engels ↔ Frans
import requests, json
url = 'http://localhost:5000/translate?api-version=3.0&from=en&to=fr'
headers = { 'Content-Type': 'application/json' }
body = [{ 'text': 'Hello, how are you' }]
request = requests.post(url, headers=headers, json=body)
response = request.json()
print(json.dumps(
response,
sort_keys=True,
indent=4,
ensure_ascii=False,
separators=(',', ': ')))
Tekst vertalen met C#/.NET-console-app
Engels ↔ Spaans
Start Visual Studio en maak een nieuwe consoletoepassing. Bewerk het bestand om het *.csproj
<LangVersion>7.1</LangVersion>
knooppunt toe te voegen. Hiermee geeft u C# 7.1 op. Voeg het Newtoonsoft.Json NuGet-pakket versie 11.0.2 toe.
Program.cs
Vervang alle bestaande code door het volgende script:
using Newtonsoft.Json;
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace TranslateContainer
{
class Program
{
const string ApiHostEndpoint = "http://localhost:5000";
const string TranslateApi = "/translate?api-version=3.0&from=en&to=es";
static async Task Main(string[] args)
{
var textToTranslate = "Sunny day in Seattle";
var result = await TranslateTextAsync(textToTranslate);
Console.WriteLine(result);
Console.ReadLine();
}
static async Task<string> TranslateTextAsync(string textToTranslate)
{
var body = new object[] { new { Text = textToTranslate } };
var requestBody = JsonConvert.SerializeObject(body);
var client = new HttpClient();
using (var request =
new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri($"{ApiHostEndpoint}{TranslateApi}"),
Content = new StringContent(requestBody, Encoding.UTF8, "application/json")
})
{
// Send the request and await a response.
var response = await client.SendAsync(request);
return await response.Content.ReadAsStringAsync();
}
}
}
}
Meerdere tekenreeksen vertalen
Het vertalen van meerdere tekenreeksen tegelijk is een kwestie van het opgeven van een matrix met tekenreeksen in de hoofdtekst van de aanvraag.
curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-Hans" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}, {'Text':'I am fine, thank you.'}]"
Het antwoord bevat de vertaling van alle stukken tekst in exact dezelfde volgorde als in de aanvraag. De hoofdtekst van het antwoord is:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"}
]
},
{
"translations":[
{"text":"我很好,谢谢你。","to":"zh-Hans"}
]
}
]
Vertalen naar meerdere talen
In dit voorbeeld ziet u hoe u dezelfde invoer in meerdere talen in één aanvraag kunt vertalen.
curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-Hans&to=de" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'Hello, what is your name?'}]"
De hoofdtekst van het antwoord is:
[
{
"translations":[
{"text":"你好, 你叫什么名字?","to":"zh-Hans"},
{"text":"Hallo, was ist dein Name?","to":"de"}
]
}
]
Inhoud vertalen met markeringen en vertaalde inhoud opgeven
Het is gebruikelijk om inhoud te vertalen die markeringen bevat, zoals inhoud van een HTML-pagina of inhoud uit een XML-document. Voeg de queryparameter textType=html
toe bij het vertalen van inhoud met tags. Daarnaast is het soms handig om specifieke inhoud uit te sluiten van vertaling. U kunt het kenmerk class=notranslate
gebruiken om inhoud op te geven die in de oorspronkelijke taal moet blijven. In het volgende voorbeeld wordt de inhoud in het eerste div
element niet vertaald, terwijl de inhoud in het tweede div
element wordt vertaald.
<div class="notranslate">This will not be translated.</div>
<div>This will be translated. </div>
Hier volgt een voorbeeldaanvraag ter illustratie.
curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=zh-Hans&textType=html" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'<div class=\"notranslate\">This will not be translated.</div><div>This will be translated.</div>'}]"
Het antwoord is:
[
{
"translations":[
{"text":"<div class=\"notranslate\">This will not be translated.</div><div>这将被翻译。</div>","to":"zh-Hans"}
]
}
]
Vertalen met dynamische woordenlijst
Als u al weet welke vertaling u wilt toepassen op een woord of woordgroep, dan kunt u deze als markering opgeven in de aanvraag. De dynamische woordenlijst is alleen veilig voor zelfstandige naamwoorden, zoals persoonlijke namen en productnamen.
De op te geven opmaak maakt gebruik van de volgende syntaxis.
<mstrans:dictionary translation="translation of phrase">phrase</mstrans:dictionary>
Denk bijvoorbeeld aan de Engelse zin 'Het woord wordomatic is een woordenlijstvermelding'. Als u het woordmatisch in de vertaling wilt behouden, verzendt u de aanvraag:
curl -X POST "http://localhost:5000/translate?api-version=3.0&from=en&to=de" -H "Ocp-Apim-Subscription-Key: <client-secret>" -H "Content-Type: application/json; charset=UTF-8" -d "[{'Text':'The word <mstrans:dictionary translation=\"wordomatic\">word or phrase</mstrans:dictionary> is a dictionary entry.'}]"
Het resultaat is:
[
{
"translations":[
{"text":"Das Wort \"wordomatic\" ist ein Wörterbucheintrag.","to":"de"}
]
}
]
Deze functie werkt op dezelfde manier met textType=text
of met textType=html
. De functie moet spaarzaam worden gebruikt. De juiste en veel betere manier om vertaling aan te passen is door Custom Translator te gebruiken. Custom Translator maakt volledig gebruik van de context- en statistische waarschijnlijkheden. Als u trainingsgegevens hebt gemaakt waarin uw werk of woordgroep in context wordt weergegeven, krijgt u betere resultaten. Meer informatie over Custom Translator.
Aanvraaglimieten
Elke vertaalaanvraag is beperkt tot 50.000 tekens, in alle doeltalen waarnaar u vertaalt. Als u bijvoorbeeld een vertaalaanvraag van 3000 tekens verzendt om te vertalen naar drie verschillende talen, resulteert dit in een aanvraaggrootte van 3000x3 = 9.000 tekens, die voldoen aan de aanvraaglimiet. Er worden kosten per teken in rekening gebracht, niet op basis van het aantal aanvragen. We raden u aan kortere aanvragen te verzenden.
De volgende tabel bevat een matrixelement- en tekenlimiet voor de vertaalbewerking van Translator.
Operation | Maximale grootte van matrixelement | Maximum aantal matrixelementen | Maximale aanvraaggrootte (tekens) |
---|---|---|---|
Vertalen | 10,000 | 100 | 50,000 |
Docker compose gebruiken: Translator met ondersteunende containers
Docker Compose is een hulpprogramma waarmee u toepassingen met meerdere containers kunt configureren met behulp van één YAML-bestand met de naam compose.yaml
. Gebruik de docker compose up
opdracht om uw containertoepassing en de docker compose down
opdracht te starten om uw containers te stoppen en te verwijderen.
Als u Docker Desktop CLI hebt geïnstalleerd, bevat het Docker Compose en de bijbehorende vereisten. Zie het overzicht Docker Compose installeren als u geen Docker Desktop hebt.
De volgende tabel bevat de vereiste ondersteunende containers voor uw tekst- en documentomzettingsbewerkingen. De Translator-container verzendt factureringsgegevens naar Azure via de Azure AI Translator-resource in uw Azure-account.
Operation | Aanvraagquery | Documenttype | Ondersteunende containers |
---|---|---|---|
•Vertalen van tekst • Documentomzetting |
from gespecificeerd. |
Office-documenten | Geen |
•Vertalen van tekst • Documentomzetting |
from niet opgegeven. Vereist automatische taaldetectie om de brontaal te bepalen. |
Office-documenten | ✔️ Text Analytics:language-container |
•Vertalen van tekst • Documentomzetting |
from gespecificeerd. |
Gescande PDF-documenten | ✔️ Vision:read-container |
•Vertalen van tekst • Documentomzetting |
from is niet opgegeven waarvoor automatische taaldetectie is vereist om de brontaal te bepalen. |
Gescande PDF-documenten | ✔️ Text Analytics:language-container ✔️ Vision:read-container |
Containerinstallatiekopieën en -tags
De containerinstallatiekopieën van Azure AI-services vindt u in de Microsoft-artefactregister catalogus. De volgende tabel bevat de volledig gekwalificeerde afbeeldingslocatie voor tekst- en documentomzetting:
Container | Locatie van afbeelding | Opmerkingen |
---|---|---|
Translator: Tekstomzetting | mcr.microsoft.com/azure-cognitive-services/translator/text-translation:latest |
U kunt de volledige lijst met azure AI-services tekstomzettingstags bekijken op MCR. |
Translator: Documentomzetting | TODO | TODO |
Tekstanalyse: taal | mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest |
U kunt de volledige lijst met azure AI-services Text Analytics Language-versietags bekijken op MCR. |
Visie: lezen | mcr.microsoft.com/azure-cognitive-services/vision/read:latest |
U kunt de volledige lijst met Azure AI-services Computer Vision-versietags OCR bekijken op MCR. |
Uw toepassing maken
Maak met behulp van uw favoriete editor of IDE een nieuwe map voor uw app met de naam
container-environment
of een naam van uw keuze.Maak een nieuw YAML-bestand met de naam
compose.yaml
. Zowel de .yml- als .yaml-extensies kunnen worden gebruikt voor hetcompose
bestand.Kopieer en plak het volgende YAML-codevoorbeeld in uw
compose.yaml
bestand. Vervang{TRANSLATOR_KEY}
en{TRANSLATOR_ENDPOINT_URI}
door de sleutel- en eindpuntwaarden van uw Azure Portal Translator-exemplaar. Zorg ervoor dat u dedocument translation endpoint
.De naam op het hoogste niveau (
azure-ai-translator
,azure-ai-language
,azure-ai-read
) is de parameter die u opgeeft.Dit
container_name
is een optionele parameter waarmee een naam voor de container wordt ingesteld wanneer deze wordt uitgevoerd, in plaats van een naam tedocker compose
genereren.services: azure-ai-translator: container_name: azure-ai-translator image: mcr.microsoft.com/product/azure-cognitive-services/translator/text-translation:latest environment: - EULA=accept - billing={TRANSLATOR_ENDPOINT_URI} - apiKey={TRANSLATOR_KEY} - AzureAiLanguageHost=http://azure-ai-language:5000 - AzureAiReadHost=http://azure-ai-read:5000 ports: - "5000:5000" azure-ai-language: container_name: azure-ai-language image: mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest environment: - EULA=accept - billing={TRANSLATOR_ENDPOINT_URI} - apiKey={TRANSLATOR_KEY} azure-ai-read: container_name: azure-ai-read image: mcr.microsoft.com/azure-cognitive-services/vision/read:latest environment: - EULA=accept - billing={TRANSLATOR_ENDPOINT_URI} - apiKey={TRANSLATOR_KEY}
Open een terminal navigeer naar de
container-environment
map en start de containers met de volgendedocker-compose
opdracht:docker compose up
Gebruik de volgende opdracht om de containers te stoppen:
docker compose down
Tip
docker compose
Opdrachten:docker compose pause
onderbreekt actieve containers.docker compose unpause {your-container-name}
onderbroken containers worden niet gebruikt.docker compose restart
start alle gestopte en actieve container opnieuw met alle eerdere wijzigingen intact. Als u wijzigingen aanbrengt in uwcompose.yaml
configuratie, worden deze wijzigingen niet bijgewerkt met dedocker compose restart
opdracht. U moet dedocker compose up
opdracht gebruiken om updates en wijzigingen in hetcompose.yaml
bestand weer te geven.docker compose ps -a
geeft een lijst weer van alle containers, inclusief containers die zijn gestopt.docker compose exec
hiermee kunt u opdrachten uitvoeren om omgevingsvariabelen los te koppelen of in te stellen in een actieve container.
Zie docker CLI-naslaginformatie voor meer informatie.