Skip to content

Commit c869c36

Browse files
committed
Properly handle average confidence for translation jos with no pretranslations (i.e. primarily SMT)
1 parent db04610 commit c869c36

2 files changed

Lines changed: 22 additions & 4 deletions

File tree

src/Serval/src/Serval.Translation/Services/PlatformService.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ public async Task InsertPretranslationsAsync(
376376
int nextModelRevision = engine.ModelRevision + 1;
377377

378378
var batch = new List<Pretranslation>();
379-
double confidenceTotal = 0.0;
379+
double totalConfidence = 0.0;
380380
int numPretranslations = 0;
381381
await foreach (PretranslationContract item in pretranslations.WithCancellation(cancellationToken))
382382
{
@@ -404,7 +404,7 @@ public async Task InsertPretranslationsAsync(
404404
Confidence = item.Confidence,
405405
}
406406
);
407-
confidenceTotal += item.Confidence ?? 0.0;
407+
totalConfidence += item.Confidence ?? 0.0;
408408
numPretranslations += 1;
409409
if (batch.Count == PretranslationInsertBatchSize)
410410
{
@@ -417,7 +417,11 @@ public async Task InsertPretranslationsAsync(
417417

418418
await _builds.UpdateAsync(
419419
b => b.Id == buildId,
420-
u => u.Set(b => b.ExecutionData.AveragePretranslationConfidence, confidenceTotal / numPretranslations),
420+
u =>
421+
u.Set(
422+
b => b.ExecutionData.AveragePretranslationConfidence,
423+
numPretranslations > 0 ? totalConfidence / numPretranslations : 0.0
424+
),
421425
cancellationToken: cancellationToken
422426
);
423427
}

src/Serval/test/Serval.Translation.Tests/Services/PlatformServiceTests.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,27 @@ await env.Builds.InsertAsync(
5252
Assert.That(env.Pretranslations.Count, Is.EqualTo(1));
5353
await env.PlatformService.BuildCompletedAsync("b0", 0, 0.0);
5454
Assert.That(env.Pretranslations.Count, Is.EqualTo(1));
55+
5556
await env.PlatformService.BuildStartedAsync("b0");
5657
await env.PlatformService.InsertPretranslationsAsync("e0", "b0", GetTestPretranslations());
5758
await env.PlatformService.BuildCompletedAsync("b0", 0, 0.0);
5859
Assert.That(env.Pretranslations.Count, Is.EqualTo(1));
5960
Assert.That(
6061
(await env.Builds.GetAsync(b => b.Id == "b0"))?.ExecutionData.AveragePretranslationConfidence,
61-
Is.Zero
62+
Is.Zero.Within(0.001)
63+
);
64+
65+
await env.PlatformService.BuildStartedAsync("b0");
66+
await env.PlatformService.InsertPretranslationsAsync(
67+
"e0",
68+
"b0",
69+
AsyncEnumerable.Empty<PretranslationContract>()
70+
);
71+
await env.PlatformService.BuildCompletedAsync("b0", 0, 0.0);
72+
Assert.That(env.Pretranslations.Count, Is.EqualTo(0));
73+
Assert.That(
74+
(await env.Builds.GetAsync(b => b.Id == "b0"))?.ExecutionData.AveragePretranslationConfidence,
75+
Is.Zero.Within(0.001)
6276
);
6377
}
6478

0 commit comments

Comments
 (0)