/// <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; } }
/// <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); }