diff --git a/src/SIL.Machine/QualityEstimation/ChrF3QualityEstimator.cs b/src/SIL.Machine/QualityEstimation/ChrF3QualityEstimator.cs index 0249835c..1d8e34a2 100644 --- a/src/SIL.Machine/QualityEstimation/ChrF3QualityEstimator.cs +++ b/src/SIL.Machine/QualityEstimation/ChrF3QualityEstimator.cs @@ -108,7 +108,8 @@ private List ComputeBookUsability(ScriptureBookScores bo book, label: BookThresholds.ReturnLabel(averageProbability), usability: averageProbability, - projectedChrF3: score.ProjectedChrF3 + projectedChrF3: score.ProjectedChrF3, + confidence: score.Confidence ) ); } @@ -136,7 +137,8 @@ private List ComputeChapterUsability(ScriptureChapter chapter, label: ChapterThresholds.ReturnLabel(averageProbability), usability: averageProbability, - projectedChrF3: score.ProjectedChrF3 + projectedChrF3: score.ProjectedChrF3, + confidence: score.Confidence ) ); } @@ -170,7 +172,8 @@ ScriptureBookScores bookScores scriptureRef: segmentScore.ScriptureRef, label: SegmentThresholds.ReturnLabel(probability), usability: probability, - projectedChrF3: segmentScore.ProjectedChrF3 + projectedChrF3: segmentScore.ProjectedChrF3, + confidence: segmentScore.Confidence ) ); } @@ -193,7 +196,8 @@ TextScores textScores segmentRef: segmentScore.SegmentRef, label: SegmentThresholds.ReturnLabel(probability), usability: probability, - projectedChrF3: segmentScore.ProjectedChrF3 + projectedChrF3: segmentScore.ProjectedChrF3, + confidence: segmentScore.Confidence ) ); } @@ -217,7 +221,8 @@ private List ComputeTextUsability(TextScores textScores) textId, label: BookThresholds.ReturnLabel(averageProbability), usability: averageProbability, - projectedChrF3: score.ProjectedChrF3 + projectedChrF3: score.ProjectedChrF3, + confidence: score.Confidence ) ); } diff --git a/src/SIL.Machine/QualityEstimation/ScriptureBookUsability.cs b/src/SIL.Machine/QualityEstimation/ScriptureBookUsability.cs index 969edfe4..23554a6c 100644 --- a/src/SIL.Machine/QualityEstimation/ScriptureBookUsability.cs +++ b/src/SIL.Machine/QualityEstimation/ScriptureBookUsability.cs @@ -2,8 +2,14 @@ { public class ScriptureBookUsability : UsabilityBase { - public ScriptureBookUsability(string book, UsabilityLabel label, double projectedChrF3, double usability) - : base(label, projectedChrF3, usability) + public ScriptureBookUsability( + string book, + UsabilityLabel label, + double projectedChrF3, + double usability, + double confidence + ) + : base(label, projectedChrF3, usability, confidence) { Book = book; } diff --git a/src/SIL.Machine/QualityEstimation/ScriptureChapterUsability.cs b/src/SIL.Machine/QualityEstimation/ScriptureChapterUsability.cs index dd9cb8cb..2075d714 100644 --- a/src/SIL.Machine/QualityEstimation/ScriptureChapterUsability.cs +++ b/src/SIL.Machine/QualityEstimation/ScriptureChapterUsability.cs @@ -7,9 +7,10 @@ public ScriptureChapterUsability( int chapter, UsabilityLabel label, double projectedChrF3, - double usability + double usability, + double confidence ) - : base(book, label, projectedChrF3, usability) + : base(book, label, projectedChrF3, usability, confidence) { Chapter = chapter; } diff --git a/src/SIL.Machine/QualityEstimation/ScriptureSegmentUsability.cs b/src/SIL.Machine/QualityEstimation/ScriptureSegmentUsability.cs index 0b4765f1..2b203d47 100644 --- a/src/SIL.Machine/QualityEstimation/ScriptureSegmentUsability.cs +++ b/src/SIL.Machine/QualityEstimation/ScriptureSegmentUsability.cs @@ -8,9 +8,10 @@ public ScriptureSegmentUsability( ScriptureRef scriptureRef, UsabilityLabel label, double projectedChrF3, - double usability + double usability, + double confidence ) - : base(scriptureRef.Book, scriptureRef.ChapterNum, label, projectedChrF3, usability) + : base(scriptureRef.Book, scriptureRef.ChapterNum, label, projectedChrF3, usability, confidence) { ScriptureRef = scriptureRef; } diff --git a/src/SIL.Machine/QualityEstimation/TextSegmentUsability.cs b/src/SIL.Machine/QualityEstimation/TextSegmentUsability.cs index 2fdcf2cc..b970b7c3 100644 --- a/src/SIL.Machine/QualityEstimation/TextSegmentUsability.cs +++ b/src/SIL.Machine/QualityEstimation/TextSegmentUsability.cs @@ -8,9 +8,10 @@ public TextSegmentUsability( MultiKeyRef segmentRef, UsabilityLabel label, double projectedChrF3, - double usability + double usability, + double confidence ) - : base(segmentRef.TextId, label, projectedChrF3, usability) + : base(segmentRef.TextId, label, projectedChrF3, usability, confidence) { SegmentRef = segmentRef; } diff --git a/src/SIL.Machine/QualityEstimation/TextUsability.cs b/src/SIL.Machine/QualityEstimation/TextUsability.cs index c3a1f356..ba530f00 100644 --- a/src/SIL.Machine/QualityEstimation/TextUsability.cs +++ b/src/SIL.Machine/QualityEstimation/TextUsability.cs @@ -2,8 +2,14 @@ { public class TextUsability : UsabilityBase { - public TextUsability(string textId, UsabilityLabel label, double projectedChrF3, double usability) - : base(label, projectedChrF3, usability) + public TextUsability( + string textId, + UsabilityLabel label, + double projectedChrF3, + double usability, + double confidence + ) + : base(label, projectedChrF3, usability, confidence) { TextId = textId; } diff --git a/src/SIL.Machine/QualityEstimation/UsabilityBase.cs b/src/SIL.Machine/QualityEstimation/UsabilityBase.cs index da7ae05c..b27f6b7f 100644 --- a/src/SIL.Machine/QualityEstimation/UsabilityBase.cs +++ b/src/SIL.Machine/QualityEstimation/UsabilityBase.cs @@ -2,13 +2,16 @@ { public abstract class UsabilityBase { - protected UsabilityBase(UsabilityLabel label, double projectedChrF3, double usability) + protected UsabilityBase(UsabilityLabel label, double projectedChrF3, double usability, double confidence) { + Confidence = confidence; Label = label; ProjectedChrF3 = projectedChrF3; Usability = usability; } + public double Confidence { get; } + public UsabilityLabel Label { get; } public double ProjectedChrF3 { get; } diff --git a/tests/SIL.Machine.Tests/QualityEstimation/ChrF3QualityEstimatorTests.cs b/tests/SIL.Machine.Tests/QualityEstimation/ChrF3QualityEstimatorTests.cs index 08fbe30f..9c018f99 100644 --- a/tests/SIL.Machine.Tests/QualityEstimation/ChrF3QualityEstimatorTests.cs +++ b/tests/SIL.Machine.Tests/QualityEstimation/ChrF3QualityEstimatorTests.cs @@ -11,7 +11,7 @@ public class ChrF3QualityEstimatorTests public void ChrF3QualityEstimator_TxtFiles() { var qualityEstimation = new ChrF3QualityEstimator(slope: 109.6145, intercept: -14.0633); - List<(MultiKeyRef Key, double Confidence)> confidences = + List<(MultiKeyRef key, double confidence)> confidences = [ (new MultiKeyRef("MAT.txt", 1), 0.6020749899712906), (new MultiKeyRef("MAT.txt", 2), 0.5416165991875662), @@ -25,19 +25,24 @@ public void ChrF3QualityEstimator_TxtFiles() Assert.That(usabilityTextSegments[0].Label, Is.EqualTo(UsabilityLabel.Green)); Assert.That(usabilityTextSegments[0].ProjectedChrF3, Is.EqualTo(51.93).Within(0.01)); Assert.That(usabilityTextSegments[0].Usability, Is.EqualTo(0.765).Within(0.001)); + Assert.That(usabilityTextSegments[0].Confidence, Is.EqualTo(confidences[0].confidence).Within(0.001)); Assert.That(usabilityTextSegments[1].Label, Is.EqualTo(UsabilityLabel.Yellow)); Assert.That(usabilityTextSegments[1].ProjectedChrF3, Is.EqualTo(45.31).Within(0.01)); Assert.That(usabilityTextSegments[1].Usability, Is.EqualTo(0.691).Within(0.001)); + Assert.That(usabilityTextSegments[1].Confidence, Is.EqualTo(confidences[1].confidence).Within(0.001)); Assert.That(usabilityTextSegments[2].Label, Is.EqualTo(UsabilityLabel.Red)); Assert.That(usabilityTextSegments[2].ProjectedChrF3, Is.EqualTo(30.14).Within(0.01)); Assert.That(usabilityTextSegments[2].Usability, Is.EqualTo(0.465).Within(0.001)); + Assert.That(usabilityTextSegments[2].Confidence, Is.EqualTo(confidences[2].confidence).Within(0.001)); Assert.That(usabilityTexts, Has.Count.EqualTo(2)); Assert.That(usabilityTexts[0].Label, Is.EqualTo(UsabilityLabel.Yellow)); Assert.That(usabilityTexts[0].ProjectedChrF3, Is.EqualTo(48.53).Within(0.01)); Assert.That(usabilityTexts[0].Usability, Is.EqualTo(0.728).Within(0.001)); + Assert.That(usabilityTexts[0].Confidence, Is.EqualTo(0.571).Within(0.001)); Assert.That(usabilityTexts[1].Label, Is.EqualTo(UsabilityLabel.Red)); Assert.That(usabilityTexts[1].ProjectedChrF3, Is.EqualTo(30.14).Within(0.01)); Assert.That(usabilityTexts[1].Usability, Is.EqualTo(0.465).Within(0.001)); + Assert.That(usabilityTexts[1].Confidence, Is.EqualTo(confidences[2].confidence).Within(0.001)); } } @@ -62,23 +67,29 @@ List usabilityBooks Assert.That(usabilitySegments[0].Label, Is.EqualTo(UsabilityLabel.Green)); Assert.That(usabilitySegments[0].ProjectedChrF3, Is.EqualTo(51.93).Within(0.01)); Assert.That(usabilitySegments[0].Usability, Is.EqualTo(0.765).Within(0.001)); + Assert.That(usabilitySegments[0].Confidence, Is.EqualTo(confidences[0].confidence).Within(0.001)); Assert.That(usabilitySegments[1].Label, Is.EqualTo(UsabilityLabel.Yellow)); Assert.That(usabilitySegments[1].ProjectedChrF3, Is.EqualTo(45.31).Within(0.01)); Assert.That(usabilitySegments[1].Usability, Is.EqualTo(0.691).Within(0.001)); + Assert.That(usabilitySegments[1].Confidence, Is.EqualTo(confidences[1].confidence).Within(0.001)); Assert.That(usabilitySegments[2].Label, Is.EqualTo(UsabilityLabel.Red)); Assert.That(usabilitySegments[2].ProjectedChrF3, Is.EqualTo(30.14).Within(0.01)); Assert.That(usabilitySegments[2].Usability, Is.EqualTo(0.465).Within(0.001)); + Assert.That(usabilitySegments[2].Confidence, Is.EqualTo(confidences[2].confidence).Within(0.001)); Assert.That(usabilityChapters, Has.Count.EqualTo(2)); Assert.That(usabilityChapters[0].Label, Is.EqualTo(UsabilityLabel.Yellow)); Assert.That(usabilityChapters[0].ProjectedChrF3, Is.EqualTo(48.53).Within(0.01)); Assert.That(usabilityChapters[0].Usability, Is.EqualTo(0.728).Within(0.001)); + Assert.That(usabilityChapters[0].Confidence, Is.EqualTo(0.571).Within(0.001)); Assert.That(usabilityChapters[1].Label, Is.EqualTo(UsabilityLabel.Red)); Assert.That(usabilityChapters[1].ProjectedChrF3, Is.EqualTo(30.14).Within(0.01)); Assert.That(usabilityChapters[1].Usability, Is.EqualTo(0.465).Within(0.001)); + Assert.That(usabilityChapters[1].Confidence, Is.EqualTo(confidences[2].confidence).Within(0.001)); Assert.That(usabilityBooks, Has.Count.EqualTo(1)); Assert.That(usabilityBooks[0].Label, Is.EqualTo(UsabilityLabel.Yellow)); Assert.That(usabilityBooks[0].ProjectedChrF3, Is.EqualTo(41.68).Within(0.01)); Assert.That(usabilityBooks[0].Usability, Is.EqualTo(0.640).Within(0.001)); + Assert.That(usabilityBooks[0].Confidence, Is.EqualTo(0.508).Within(0.001)); } } }