Reputation: 55
I'm trying to setup a Custom Translator with a Phrase Dictionary for my company. I followed the official documentation and this tutorial: https://soltisweb.com/blog/detail/2019-08-13-using-a-custom-translator-with-azure-co.
When I translate it seems that it's not using my custom model, here is my setup:
1 Azure Translator:
1 Worspace in Custom Translator, connected to the Azure Translator above:
I've created one project:
I uploaded the same Phrase Dictionary as in the tutorial (Phrase Dictionary):
EN | ES |
---|---|
one | uno |
two | dos |
three | tres |
four | cuatro |
five | cinco |
six | seis |
seven | siete |
eight | ocho |
nine | nueve |
ten | diez |
hi | hola |
hello | buenos dias |
I've generated a model and deployed it everywhere (America, Europe, Asia) without any error.
I've tried to translate "hello" with the following C# code:
// Input and output languages are defined as parameters.
string route = "/translate?api-version=3.0&category=*MyWorkspaceId*-GENERAL&from=en&to=es&allowFallback=true";
string textToTranslate = "hello";
object[] body = new object[] { new { Text = textToTranslate } };
var requestBody = JsonConvert.SerializeObject(body);
using (var client = new HttpClient())
using (var request = new HttpRequestMessage())
{
// Build the request.
request.Method = HttpMethod.Post;
request.RequestUri = new Uri("https://api.cognitive.microsofttranslator.com/" + route);
request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json");
request.Headers.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
request.Headers.Add("Ocp-Apim-Subscription-Region", "global");
// Send the request and get response.
HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
// Read response as a string.
string result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
The result is:
[{"translations":[{"text":"Hola","to":"es"}]}]
The result should be "buenos dias".
I might be missing something really basic... I already tried to re-create everything from scratch with no success.
Update 1
Switched allowFallback=true to allowFallback=false.
{Method: POST, RequestUri: 'https://api.cognitive.microsofttranslator.com//translate?api-version=3.0&category=***-GENERAL&from=en&to=es&allowFallback=false',
Version: 1.1,
Content: System.Net.Http.StringContent,
Headers:
{
Ocp-Apim-Subscription-Key: ***
Ocp-Apim-Subscription-Region: global
Content-Type: application/json; charset=utf-8
}}
Input:
"one, two, three, four, five, six, seven, eight, nine, ten, hi, hello, My name is Doe."
Ouput:
[{"translations":[{"text":"uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez, hola, hola, Mi nombre es Doe.","to":"es"}]}]
Thanks for your support, Cyril
Upvotes: 0
Views: 541
Reputation: 479
We rolled out a hot fix. Issue should be resolved now. Sorry for the inconvenience.
Upvotes: 1
Reputation: 29
There is a possibility you are not hitting your custom model. So, let's first make small change to your API call.
&allowFallback=false to ensure if you don't hit your custom model, the call would fail instead of getting served from our standard model.
Best, Mohamed
Upvotes: 0