From ec882830883f07b57cc129a089c6b35ddc786c59 Mon Sep 17 00:00:00 2001 From: Enkidu93 Date: Thu, 17 Oct 2024 09:29:49 -0400 Subject: [PATCH] Fix emrge errors --- .../TranslationEngineServiceV1.cs | 55 +++++++++++-------- .../SIL.ServiceToolkit.csproj | 2 +- .../Utils/ParallelCorpusPreprocessor.cs | 1 - 3 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/Echo/src/EchoTranslationEngine/TranslationEngineServiceV1.cs b/src/Echo/src/EchoTranslationEngine/TranslationEngineServiceV1.cs index 719c7237..ea8b0457 100644 --- a/src/Echo/src/EchoTranslationEngine/TranslationEngineServiceV1.cs +++ b/src/Echo/src/EchoTranslationEngine/TranslationEngineServiceV1.cs @@ -75,30 +75,34 @@ await client.BuildStartedAsync( try { + List pretranslationsRequests = []; + ParallelCorpusPreprocessor.PreprocessCorpora( + request.Corpora.Select(Map).ToList(), + row => { }, + (row, corpus) => + { + pretranslationsRequests.Add( + new InsertPretranslationsRequest + { + EngineId = request.EngineId, + CorpusId = corpus.Id, + TextId = row.TextId, + Refs = { row.Refs.Select(r => r.ToString()) }, + Translation = row.SourceSegment + } + ); + }, + false + ); using ( AsyncClientStreamingCall call = client.InsertPretranslations(cancellationToken: cancellationToken) ) { - ParallelCorpusPreprocessor.PreprocessCorpora( - request.Corpora.Select(Map).ToList(), - row => { }, - async (row, corpus) => - { - await call.RequestStream.WriteAsync( - new InsertPretranslationsRequest - { - EngineId = request.EngineId, - CorpusId = corpus.Id, - TextId = row.TextId, - Refs = { row.Refs.Select(r => r.ToString()) }, - Translation = row.SourceSegment - }, - cancellationToken - ); - }, - false - ); + foreach (InsertPretranslationsRequest request in pretranslationsRequests) + { + await call.RequestStream.WriteAsync(request, cancellationToken); + } await call.RequestStream.CompleteAsync(); await call; } @@ -214,14 +218,18 @@ private static SIL.ServiceToolkit.Models.MonolingualCorpus Map(MonolingualCorpus kvp => kvp.Value.Chapters.ToHashSet() ); var trainOnTextIds = source.TrainOnTextIds.ToHashSet(); - FilterChoice trainingFilter = GetFilterChoice(trainOnChapters, trainOnTextIds); + FilterChoice trainingFilter = GetFilterChoice(trainOnChapters, trainOnTextIds, source.TrainOnAll); var pretranslateChapters = source.PretranslateChapters.ToDictionary( kvp => kvp.Key, kvp => kvp.Value.Chapters.ToHashSet() ); var pretranslateTextIds = source.PretranslateTextIds.ToHashSet(); - FilterChoice pretranslateFilter = GetFilterChoice(pretranslateChapters, pretranslateTextIds); + FilterChoice pretranslateFilter = GetFilterChoice( + pretranslateChapters, + pretranslateTextIds, + source.PretranslateAll + ); return new SIL.ServiceToolkit.Models.MonolingualCorpus { @@ -254,12 +262,13 @@ private enum FilterChoice private static FilterChoice GetFilterChoice( IReadOnlyDictionary> chapters, - HashSet textIds + HashSet textIds, + bool noFilter ) { // Only either textIds or Scripture Range will be used at a time // TextIds may be an empty array, so prefer that if both are empty (which applies to both scripture and text) - if (chapters is null && textIds is null) + if (noFilter || (chapters is null && textIds is null)) return FilterChoice.None; if (chapters is null || chapters.Count == 0) return FilterChoice.TextIds; diff --git a/src/ServiceToolkit/src/SIL.ServiceToolkit/SIL.ServiceToolkit.csproj b/src/ServiceToolkit/src/SIL.ServiceToolkit/SIL.ServiceToolkit.csproj index 37c983d2..509c7683 100644 --- a/src/ServiceToolkit/src/SIL.ServiceToolkit/SIL.ServiceToolkit.csproj +++ b/src/ServiceToolkit/src/SIL.ServiceToolkit/SIL.ServiceToolkit.csproj @@ -16,7 +16,7 @@ - + diff --git a/src/ServiceToolkit/src/SIL.ServiceToolkit/Utils/ParallelCorpusPreprocessor.cs b/src/ServiceToolkit/src/SIL.ServiceToolkit/Utils/ParallelCorpusPreprocessor.cs index 0c728f0b..c7d82728 100644 --- a/src/ServiceToolkit/src/SIL.ServiceToolkit/Utils/ParallelCorpusPreprocessor.cs +++ b/src/ServiceToolkit/src/SIL.ServiceToolkit/Utils/ParallelCorpusPreprocessor.cs @@ -70,7 +70,6 @@ row.Ref is not ScriptureRef sr sc.Corpus.PretranslateTextIds.Except(sc.Corpus.TrainOnTextIds ?? new()) ); } - return textCorpus.Where(row => row.Ref is not ScriptureRef sr || sc.Corpus.PretranslateChapters is null