private void Initialize( string segmentedSource, string segmentedTarget, string alignment, SegmentationMethod segmentationMethod, string targetCode) { this.SegmentedSourceSentence = segmentedSource.Split(' '); this.SegmentedTranslation = segmentedTarget.Split(' '); this.SegmentedAlignmentSourceToTarget = TranslationPair.ParseAlignmentString( alignment, SegmentedSourceSentence.Length - 1, SegmentedTranslation.Length - 1, false); this.SegmentedAlignmentTargetToSource = TranslationPair.ParseAlignmentString( alignment, SegmentedTranslation.Length - 1, SegmentedSourceSentence.Length - 1, true); this.AlignmentString = alignment; this.Segmentation = segmentationMethod; }
internal static TranslationPair FetchTranslationFromDb(string sourceText, string model, string targetLanguage) { TranslationPair translationPair = null; if (OpusCatMTEngineSettings.Default.CacheMtInDatabase) { try { translationPair = FetchTranslationFromSqliteDb(sourceText, model, targetLanguage); } catch (Exception ex) { Log.Error(ex.ToString()); translationPair = null; } } if (translationPair == null) { TranslationDbHelper.shortTermMtStorage.TryGetValue( new Tuple <string, string>(sourceText, model), out translationPair); } return(translationPair); }
private void WriteToTranslationDb(object sender, EventArgs e, IEnumerable <string> input, FileInfo spInput, FileInfo transAndAlign) { Queue <string> inputQueue = new Queue <string>(input); if (transAndAlign.Exists) { using (var reader = transAndAlign.OpenText()) { while (!reader.EndOfStream) { var line = reader.ReadLine(); var sourceLine = inputQueue.Dequeue(); var transPair = new TranslationPair(sourceLine, line, this.segmentation, this.TargetCode); TranslationDbHelper.WriteTranslationToDb(sourceLine, transPair, this.SystemName, this.segmentation, this.TargetCode); } } } }
internal static void WriteTranslationToDb( string sourceText, TranslationPair translation, string model, SegmentationMethod segmentationMethod, string targetLanguage) { TranslationDbHelper.shortTermMtStorage.GetOrAdd(new Tuple <string, string>(sourceText, model), translation); if (OpusCatMTEngineSettings.Default.CacheMtInDatabase) { try { TranslationDbHelper.WriteTranslationToSqliteDb(sourceText, translation, model, segmentationMethod, targetLanguage); } catch (Exception ex) { Log.Error(ex.ToString()); TranslationDbHelper.SetupTranslationDb(); } } }
private static void WriteTranslationToSqliteDb( string sourceText, TranslationPair translation, string model, SegmentationMethod segmentationMethod, string targetLanguage) { var translationDb = new FileInfo(HelperFunctions.GetOpusCatDataPath(OpusCatMTEngineSettings.Default.TranslationDBName)); if (translationDb.Length == 0) { translationDb.Delete(); } if (!translationDb.Exists) { TranslationDbHelper.CreateTranslationDb(); } using (var m_dbConnection = new SQLiteConnection($"Data Source={translationDb};Version=3;")) { m_dbConnection.Open(); using (SQLiteCommand insert = new SQLiteCommand( "INSERT or REPLACE INTO translations (sourcetext, translation, segmentedsource, segmentedtranslation, alignment, model, additiondate, segmentationmethod, targetlanguage) VALUES (@sourcetext,@translation,@segmentedsource,@segmentedtranslation,@alignment,@model,CURRENT_TIMESTAMP,@segmentationmethod,@targetlanguage)", m_dbConnection)) { insert.Parameters.Add(new SQLiteParameter("@sourcetext", sourceText)); insert.Parameters.Add(new SQLiteParameter("@translation", translation.Translation)); insert.Parameters.Add(new SQLiteParameter("@segmentedsource", String.Join(" ", translation.SegmentedSourceSentence))); insert.Parameters.Add(new SQLiteParameter("@segmentedtranslation", String.Join(" ", translation.SegmentedTranslation))); insert.Parameters.Add(new SQLiteParameter("@alignment", translation.AlignmentString)); insert.Parameters.Add(new SQLiteParameter("@model", model)); insert.Parameters.Add(new SQLiteParameter("@segmentationmethod", segmentationMethod.ToString())); insert.Parameters.Add(new SQLiteParameter("@targetlanguage", targetLanguage)); insert.ExecuteNonQuery(); } } }
internal void UpdateTranslation(TranslationPair result) { this.TranslationBox.Document.Blocks.Clear(); this.TranslationBox.Document.Blocks.Add(new Paragraph(new Run(result.Translation))); }