in src/jobs/util/evaluate.py [0:0]
def compute_scores(self, row, label_key="label", pred_key=None):
def cos_sim(s1, s2):
embeddings = [np.mean(self.embedder(s)[0], axis=0) for s in [s1, s2]]
similarity = cosine_similarity(embeddings[0].reshape(1, -1), embeddings[1].reshape(1, -1)).squeeze()
return similarity
def count_repeat_words(prediction):
words = prediction.split()
word_set = set()
num_duplicate_words = 0
for word in words:
stem = self.stemmer.stem(word)
if stem in word_set:
num_duplicate_words += 1
else:
word_set.add(stem)
return num_duplicate_words
scores = self.rouge_scorer.score(row[label_key], row[pred_key])
return {
'rouge1': scores['rouge1'].fmeasure,
'rouge2': scores['rouge2'].fmeasure,
'rougeL': scores['rougeL'].fmeasure,
'pred_len': len(row[pred_key]),
'label_len': len(row[label_key]),
'repeat_words': count_repeat_words(row[pred_key]),
'cos_sim': cos_sim(row[label_key], row[pred_key])
}