def compute_scores()

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