private static ErrorType _getErrorType(ClasterizedSentenceError error) { if (error.SampleWordsCount == 0) return ErrorType.SurplusLinguisticObject; if (error.DetectedWordsCount == 0) return ErrorType.MissedLinguisticObject; return ErrorType.DetectionDefect; }
private static LinguisticObject _correctErrors(LinguisticObject linguisticObject, ClasterizedSentenceError error, int correctionClass) { if (error.ErrorClass > correctionClass) return linguisticObject; return new LinguisticObject { MappedObjects = linguisticObject.MappedObjects, WasEmulated = true, Metrics = _getCorrectedMetrics(linguisticObject.Metrics) }; }
private static bool _isMatch(ClasterizedSentenceError error, LinguisticObjectDetectionMetrics metrics) { if (error.DetectedWordsCount != metrics.TargetWordsCount || error.SampleWordsCount != metrics.SampleWordsCount || error.ErrorType != metrics.Type) { return false; } var metricsSampleWords = Enumerable.Zip(metrics.SampleWords, metrics.SampleWordIndexes, (s, i) => String.Format("{0} ({1})", s, i)).ToList(); var metricsDetectedWords = Enumerable.Zip(metrics.TargetWords, metrics.TargetWordIndexes, (s, i) => String.Format("{0} ({1})", s, i)).ToList(); return !metricsSampleWords.Except(error.SampleWords).Any() && !metricsDetectedWords.Except(error.DetectedWords).Any() && !error.SampleWords.Except(metricsSampleWords).Any() && !error.DetectedWords.Except(metricsDetectedWords).Any(); }