Пример #1
0
        private double getTripletsScore(Triplets targetTriplets, Triplets triplets)
        {
            var subjectScore = 0.0;

            foreach (var token in targetTriplets.subject.chunk.tokens)
            {
                subjectScore += tokenScoreService.getTokenScore(token, triplets.subject.chunk.tokens);
            }
            var maxSubjectScore = getMaxTripletScore(targetTriplets.subject.chunk.tokens);

            var predicateScore    = 0.0;
            var maxPredicateScore = 0.0;

            if (targetTriplets.predicate != null)
            {
                foreach (var token in targetTriplets.predicate.chunk.tokens)
                {
                    if (triplets.predicate != null)
                    {
                        predicateScore += tokenScoreService.getTokenScore(token, triplets.predicate.chunk.tokens);
                    }
                }
                maxPredicateScore = getMaxTripletScore(targetTriplets.predicate.chunk.tokens);
            }

            var objectScore = 0.0;

            foreach (var token in targetTriplets.objectTriplet.chunk.tokens)
            {
                objectScore += tokenScoreService.getTokenScore(token, triplets.objectTriplet.chunk.tokens);
            }
            var maxObjectScore = getMaxTripletScore(targetTriplets.objectTriplet.chunk.tokens);

            return(((subjectScore / maxSubjectScore) + (predicateScore / maxPredicateScore) + (objectScore / maxObjectScore)) / 3.0);
        }
Пример #2
0
 public double getSentenceScore(Sentence targetSentence, NaturalLanguageData naturalLanguageDocument, string botName)
 {
     if (targetSentence.triplets.subject != null)
     {
         return(tripletScoreService.getBestTripletScore(targetSentence.triplets, naturalLanguageDocument.sentences));
     }
     else
     {
         var score        = 0.0;
         var maximumScore = 0.0;
         foreach (var targetToken in targetSentence.tokens)
         {
             score        += tokenScoreService.getTokenScore(targetToken, naturalLanguageDocument.sentences);
             maximumScore += tokenScoreService.getTokenValue(targetToken);
         }
         return(score / maximumScore);
     }
 }