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