public SimpleSentenceStats() { Predicates = new LinguisticObjectsGroup(); Subjects = new LinguisticObjectsGroup(); Uniforms = new LinguisticObjectsGroup(); MeaningAuxParts = new LinguisticObjectsGroup(); ChainsFromSubjects = new LinkedObjectsChainGroup(); ChainsFromPredicates = new LinkedObjectsChainGroup(); ChainsFromMeaningParts = new LinkedObjectsChainGroup(); WasEmulated = false; }
private static double _calculateAverage(LinkedObjectsChainGroup chainsFromMeaningParts, LinkedObjectsChainGroup chainsFromPredicates, LinkedObjectsChainGroup chainsFromSubjects) { return (chainsFromMeaningParts.AverageDetectionQuality + chainsFromPredicates.AverageDetectionQuality + chainsFromSubjects.AverageDetectionQuality) / 3d; }
private static void _calculateAverage(LinkedObjectsChainGroup chainsGroup) { if (!chainsGroup.Any()) { chainsGroup.AverageDetectionQuality = 1d; } else { var detectedChains = chainsGroup.SelectMany(pair => pair.Value).Where(o => o.MappedObjects.TargetObjects != null || o.WasEmulated).ToList(); chainsGroup.AverageDetectionQuality = _calculateAverage(detectedChains); } }
private static List<LinguisticObjectDetectionMetrics> _getErrorObjects(LinkedObjectsChainGroup linkedChain) { return _getErrorObjects(linkedChain.Values.SelectMany(list => list)); }
private static LinkedObjectsChainGroup _correctErrorsInObjectsGroup(LinkedObjectsChainGroup chains, IEnumerable<ClasterizedSentenceError> errors, int correctionClass) { var result = new LinkedObjectsChainGroup { AverageDetectionQuality = chains.AverageDetectionQuality }; chains.Keys.ForEach(key => result[key] = chains[key].Select(o => _correctErrorsInObject(o, errors, correctionClass)).ToList()); result.WasEmulated = result.Any(pair => pair.Value.Any(o => o.WasEmulated)); return result; }
private void _writeStatsForObjects(LinkedObjectsChainGroup chains) { XlHelper.WriteValue(chains.SelectMany(pair => pair.Value).Count()); XlHelper.WriteValue(chains.AverageDetectionQuality, chains.WasEmulated ? Colors.EmulatedQuality : (Color?) null, XlsxHelper.PercentageFormat); }