Ejemplo n.º 1
0
        /// <summary>
        /// Evaluates answer of given category.
        /// </summary>
        /// <param name="category">Category of evaluated part of dialog.</param>
        /// <param name="dialog">Dialog which part is evaluated.</param>
        /// <param name="answer">The evaluated answer.</param>
        private void evaluateAnswer(EvaluationCategory category, SingleQuestionLog dialog, IEnumerable <string> answer)
        {
            if (!dialog.HasAnnotation)
            {
                //nothing to evaluate
                return;
            }

            var isAnswerCorrect = Enumerable.SequenceEqual(dialog.LastQuestionTurnAnnotation.OrderBy(t => t), answer.OrderBy(t => t));

            var categoryIndex = (int)category;

            if (isAnswerCorrect)
            {
                _correctPoints[categoryIndex] += 1;
            }
            else
            {
                _wrongPoints[categoryIndex] += 1;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Evaluates answer of given category.
        /// </summary>
        /// <param name="evaluatedTurns">Handler which is process given turns.</param>
        /// <param name="category">Category of evaluated part of dialog.</param>
        /// <param name="dialog">Dialog which part is evaluated.</param>
        /// <param name="answer">The evaluated answer.</param>
        private bool evaluate(Func <IEnumerable <TurnLog>, QuestionAnswerReceiveResult> handler, EvaluationCategory category, IEnumerable <TurnLog> evaluatedTurns, SingleQuestionLog dialog)
        {
            var answer = handler(dialog.QuestionTurns);

            if (!answer.IsKnown)
            {
                return(false);
            }

            evaluateAnswer(category, dialog, answer.AnswerEntities);
            return(true);
        }