Пример #1
0
        private (int WordMatchScore, decimal WeightedScore) GetAnswerScore(string lineToMatch, string answer, IEnumerable <WordFrequency> docWordFrequency)
        {
            var wordMatches = StringProcessor.GetUniqueWordMatch(lineToMatch, answer, _commonWords);

            var standardUpperLimit = docWordFrequency.Max(w => w.Frequency);
            var wordPriorityScore  = 0;

            foreach (var word in wordMatches)
            {
                var relativeWordPriority = standardUpperLimit - (docWordFrequency.FirstOrDefault(iw => iw.Word == word)?.Frequency ?? 0);
                wordPriorityScore += relativeWordPriority;
            }

            var weightedScore = (wordPriorityScore / (decimal)answer.Length) * 10000;

            return(wordPriorityScore, Math.Round(weightedScore, 2));
        }