Beispiel #1
0
        public static List<ExportTableDataRow> TransformToTableRows(SimpleSentenceStats stats)
        {
            var converter = new ModelConverter();
            converter._fillRows(stats);

            return converter._rows;
        }
Beispiel #2
0
 private static Dictionary<SentenceWordChain, List<LinguisticObject>> _getProperGroupCollection(
     SentenceWordType chainMasterType, SimpleSentenceStats stats)
 {
     switch (chainMasterType)
     {
         case SentenceWordType.Subject:
             return stats.ChainsFromSubjects;
         case SentenceWordType.Predicate:
             return stats.ChainsFromPredicates;
         default:
             return stats.ChainsFromMeaningParts;
     }
 }
Beispiel #3
0
        private static Dictionary<LinguisticObjectType, List<LinguisticObjectDetectionMetrics>> _getErrorObjects(
            SimpleSentenceStats stats)
        {
            var result = new Dictionary<LinguisticObjectType, List<LinguisticObjectDetectionMetrics>>();

            var errors = _getErrorObjects(stats.Subjects.Objects);
            if (errors.Any())
            {
                result[LinguisticObjectType.Subject] = errors;
            }

            errors = _getErrorObjects(stats.Predicates.Objects);
            if (errors.Any())
            {
                result[LinguisticObjectType.Predicate] = errors;
            }

            errors = _getErrorObjects(stats.Uniforms.Objects);
            if (errors.Any())
            {
                result[LinguisticObjectType.Uniform] = errors;
            }

            errors = _getErrorObjects(stats.MeaningAuxParts.Objects);
            if (errors.Any())
            {
                result[LinguisticObjectType.MeaningPart] = errors;
            }

            errors = _getErrorObjects(stats.ChainsFromSubjects);
            if (errors.Any())
            {
                result[LinguisticObjectType.ChainFromSubject] = errors;
            }

            errors = _getErrorObjects(stats.ChainsFromPredicates);
            if (errors.Any())
            {
                result[LinguisticObjectType.ChainFromPredicate] = errors;
            }

            errors = _getErrorObjects(stats.ChainsFromMeaningParts);
            if (errors.Any())
            {
                result[LinguisticObjectType.ChainFromMeaningPart] = errors;
            }

            return result;
        }
Beispiel #4
0
        private static SimpleSentenceStats _correctErrors(SimpleSentenceStats result, List<ClasterizedSentenceError> clasterizedSentenceErrors, int correctionClass)
        {
            var emulatedStats = new SimpleSentenceStats
            {
                Subjects =
                    _correctErrorsInObjectsGroup(result.Subjects,
                        clasterizedSentenceErrors.Where(error => error.ObjectType == LinguisticObjectType.Subject), correctionClass),
                Predicates =
                    _correctErrorsInObjectsGroup(result.Predicates,
                        clasterizedSentenceErrors.Where(error => error.ObjectType == LinguisticObjectType.Predicate), correctionClass),
                Uniforms =
                    _correctErrorsInObjectsGroup(result.Uniforms,
                        clasterizedSentenceErrors.Where(error => error.ObjectType == LinguisticObjectType.Uniform), correctionClass),
                MeaningAuxParts =
                    _correctErrorsInObjectsGroup(result.MeaningAuxParts,
                        clasterizedSentenceErrors.Where(error => error.ObjectType == LinguisticObjectType.MeaningPart), correctionClass),
                ChainsFromSubjects =
                    _correctErrorsInObjectsGroup(result.ChainsFromSubjects,
                        clasterizedSentenceErrors.Where(
                            error => error.ObjectType == LinguisticObjectType.ChainFromSubject), correctionClass),
                ChainsFromPredicates =
                    _correctErrorsInObjectsGroup(result.ChainsFromPredicates,
                        clasterizedSentenceErrors.Where(
                            error => error.ObjectType == LinguisticObjectType.ChainFromPredicate), correctionClass),
                ChainsFromMeaningParts =
                    _correctErrorsInObjectsGroup(result.ChainsFromMeaningParts,
                        clasterizedSentenceErrors.Where(
                            error => error.ObjectType == LinguisticObjectType.ChainFromMeaningPart), correctionClass)
            };

            emulatedStats.WasEmulated =
                (new[]
                {
                    emulatedStats.Subjects, emulatedStats.Predicates, emulatedStats.Uniforms, emulatedStats.MeaningAuxParts
                }).Any(group => group.WasEmulated) || emulatedStats.AllLinkedChains.Any(o => o.WasEmulated);

            emulatedStats.CalculateQuality();

            return emulatedStats;
        }
Beispiel #5
0
        private void _writeThirdHeaderRow(SimpleSentenceStats sample)
        {
            XlHelper.WriteValue(Labels.LoSubNum);

            sample.Subjects.Objects.Select((chain, i) =>
            {
                XlHelper.WriteValue(i + 1, Colors.SubjectHeader);
                return chain;
            }).ToArray();

            sample.Predicates.Objects.Select((chain, i) =>
            {
                XlHelper.WriteValue(i + 1, Colors.PredicateHeader);
                return chain;
            }).ToArray();

            sample.Uniforms.Objects.Select((chain, i) =>
            {
                XlHelper.WriteValue(i + 1, Colors.UniformsHeader);
                return chain;
            }).ToArray();

            sample.MeaningAuxParts.Objects.Select((chain, i) =>
            {
                XlHelper.WriteValue(i + 1, Colors.MeaningHeader);
                return chain;
            }).ToArray();

            sample.ChainsFromSubjects.Values.SelectMany(list => list).Select((chain, i) =>
            {
                XlHelper.WriteValue(i + 1, _getChainHeaderColor(SentenceWordType.Subject));
                return chain;
            }).ToArray();

            sample.ChainsFromPredicates.Values.SelectMany(list => list).Select((chain, i) =>
            {
                XlHelper.WriteValue(i + 1, _getChainHeaderColor(SentenceWordType.Predicate));
                return chain;
            }).ToArray();

            sample.ChainsFromMeaningParts.Values.SelectMany(list => list).Select((chain, i) =>
            {
                XlHelper.WriteValue(i + 1, _getChainHeaderColor(SentenceWordType.MeaningPart));
                return chain;
            }).ToArray();
        }
Beispiel #6
0
        private void _writeSummaryByLoType(SimpleSentenceStats stats)
        {
            XlHelper.WriteRow(() =>
            {
                XlHelper.WriteValue(Labels.MeanLoDetectionQuality, Colors.SummaryRow);

                _writeObjectsAverage(stats.Subjects.Objects, stats.Subjects.AverageDetectionQuality);
                _writeObjectsAverage(stats.Predicates.Objects, stats.Predicates.AverageDetectionQuality);
                _writeObjectsAverage(stats.Uniforms.Objects, stats.Uniforms.AverageDetectionQuality);
                _writeObjectsAverage(stats.MeaningAuxParts.Objects, stats.MeaningAuxParts.AverageDetectionQuality);
                _writeObjectsAverage(stats.AllLinkedChains, stats.ChainsAverageDetectionQuality);
            });
        }
Beispiel #7
0
        private void _writeSimpleSentenceStats(SimpleSentenceStats stats, SimpleSentence simpleSentence, int santenceId,
            int? samepleSSId, int? targetSSId)
        {
            XlHelper.AddMargin();
            _writeHeader(stats, simpleSentence, santenceId, samepleSSId, targetSSId);

            _writeBody(stats);
            _writeSummaryByLoType(stats);
            _writeSentenceSummary(stats);
        }
Beispiel #8
0
 private void _writeSentenceSummary(SimpleSentenceStats stats)
 {
     XlHelper.WriteRow(() =>
     {
         XlHelper.WriteValue(Labels.MeanSampleDetectionQuality, Colors.SummaryRow, XlsxHelper.PercentageFormat);
         _writeObjectsAverage(stats.AllObjects, stats.AverageDetectionQuality);
     });
 }
Beispiel #9
0
        private void _writeSecontHeaderRow(SimpleSentenceStats sample)
        {
            XlHelper.WriteValue(Labels.LoName);
            sample.Subjects.Objects.ForEach(chain => XlHelper.WriteValue(Labels.LoLableSubject, Colors.SubjectHeader));
            sample.Predicates.Objects.ForEach(chain => XlHelper.WriteValue(Labels.LoLablePredicate, Colors.PredicateHeader));
            sample.Uniforms.Objects.ForEach(chain => XlHelper.WriteValue(Labels.LoLableUniform, Colors.UniformsHeader));
            sample.MeaningAuxParts.Objects.ForEach(chain => XlHelper.WriteValue(Labels.LoLableMeaning, Colors.MeaningHeader));

            _writeLinkedChainSecondHeader(sample.ChainsFromSubjects, SentenceWordType.Subject);
            _writeLinkedChainSecondHeader(sample.ChainsFromPredicates, SentenceWordType.Predicate);
            _writeLinkedChainSecondHeader(sample.ChainsFromMeaningParts, SentenceWordType.MeaningPart);
        }
Beispiel #10
0
        private void _writeHeader(SimpleSentenceStats stats, SimpleSentence simpleSentence, int id, int? samepleSSId, int? targetSSId)
        {
            XlHelper.WriteRow(() =>
            {
                XlHelper.WriteValue(Labels.SentenceNum, Colors.SummaryHeader);
                XlHelper.WriteValue(id, Colors.SummaryHeader);
            });

            XlHelper.WriteRow(() =>
            {
                XlHelper.WriteValue(Labels.SampleSSNum, Colors.SummaryHeader);
                if (samepleSSId != null)
                {
                    XlHelper.WriteValue((int)samepleSSId, Colors.SummaryHeader);
                }
                else
                {
                    XlHelper.WriteValue("нет", Colors.SummaryHeader);
                }
            });

            XlHelper.WriteRow(() =>
            {
                XlHelper.WriteValue(Labels.TargetSSNum, Colors.SummaryHeader);
                if (targetSSId != null)
                {
                    XlHelper.WriteValue((int)targetSSId, Colors.SummaryHeader);
                }
                else
                {
                    XlHelper.WriteValue("нет", Colors.SummaryHeader);
                }
            });

            XlHelper.WriteRow(() =>
            {
                XlHelper.WriteValue(Labels.SampleSentence);
                XlHelper.WriteValue(simpleSentence.Text);
            });

            XlHelper.WriteRow(() => _writeFirstHeaderRow(stats));
            XlHelper.WriteRow(() => _writeSecontHeaderRow(stats));
            XlHelper.WriteRow(() => _writeThirdHeaderRow(stats));
        }
Beispiel #11
0
        private void _writeFirstHeaderRow(SimpleSentenceStats sample)
        {
            XlHelper.WriteValue(Labels.LoNum);
            sample.Subjects.Objects.ForEach(chain => XlHelper.WriteValue("1", Colors.SubjectHeader));
            sample.Predicates.Objects.ForEach(chain => XlHelper.WriteValue("2", Colors.PredicateHeader));
            sample.Uniforms.Objects.ForEach(chain => XlHelper.WriteValue("3", Colors.UniformsHeader));
            sample.MeaningAuxParts.Objects.ForEach(chain => XlHelper.WriteValue("4", Colors.MeaningHeader));

            sample.ChainsFromSubjects.Values.SelectMany(list => list)
                .ForEach(o => XlHelper.WriteValue("5", _getChainHeaderColor(SentenceWordType.Subject)));
            sample.ChainsFromPredicates.Values.SelectMany(list => list)
                .ForEach(o => XlHelper.WriteValue("5", _getChainHeaderColor(SentenceWordType.Predicate)));
            sample.ChainsFromMeaningParts.Values.SelectMany(list => list)
                .ForEach(o => XlHelper.WriteValue("5", _getChainHeaderColor(SentenceWordType.MeaningPart)));
        }
Beispiel #12
0
 private void _writeBody(SimpleSentenceStats stats)
 {
     var bodyRows = ModelConverter.TransformToTableRows(stats);
     var cellsCount = stats.AllObjects.Count();
     _writeRows(bodyRows, cellsCount);
 }
Beispiel #13
0
        private static List<SentenceErrors> _getErrors(SimpleSentenceStats stats, int i)
        {
            var errorObjects = _getErrorObjects(stats);

            return new List<SentenceErrors>
            {
                new SentenceErrors
                {
                    SentenceId = i,
                    ErrorsType = ErrorType.MissedLinguisticObject,
                    ErrorObjects = _selectErrors(errorObjects, ErrorType.MissedLinguisticObject)
                },
                new SentenceErrors
                {
                    SentenceId = i,
                    ErrorsType = ErrorType.SurplusLinguisticObject,
                    ErrorObjects = _selectErrors(errorObjects, ErrorType.SurplusLinguisticObject)
                },
                new SentenceErrors
                {
                    SentenceId = i,
                    ErrorsType = ErrorType.DetectionDefect,
                    ErrorObjects = _selectErrors(errorObjects, ErrorType.DetectionDefect)
                }
            };
        }
Beispiel #14
0
 private void _chargePenalties(SimpleSentenceStats obj)
 {
     _chargePenalties(obj.Subjects.Objects);
     _chargePenalties(obj.Predicates.Objects);
     _chargePenalties(obj.Uniforms.Objects);
     _chargePenalties(obj.MeaningAuxParts.Objects);
     obj.ChainsFromMeaningParts.Values.ForEach(_chargePenalties);
     obj.ChainsFromPredicates.Values.ForEach(_chargePenalties);
     obj.ChainsFromSubjects.Values.ForEach(_chargePenalties);
 }
Beispiel #15
0
        private void _fillRows(SimpleSentenceStats stats)
        {
            _fillRowsFromObjectsGroup(stats.Subjects.Objects);
            _fillRowsFromObjectsGroup(stats.Predicates.Objects);
            _fillRowsFromObjectsGroup(stats.Uniforms.Objects);
            _fillRowsFromObjectsGroup(stats.MeaningAuxParts.Objects);

            stats.ChainsFromSubjects.Values.ForEach(_fillRowsFromObjectsGroup);
            stats.ChainsFromPredicates.Values.ForEach(_fillRowsFromObjectsGroup);
            stats.ChainsFromMeaningParts.Values.ForEach(_fillRowsFromObjectsGroup);
        }