def rouge_l(candidate_tokens, reference_tokens, beta=1): """ Return the ROUGE-L score (longest common subsequence), where candidate_tokens is a sequence of candidate tokens, reference_tokens is a sequence of reference tokens, and beta determines the relative importance of recall in the F-measure """ lcs = len(longest_common_subsequence(candidate_tokens, reference_tokens)) recall = lcs / float(len(reference_tokens)) precision = lcs / float(len(candidate_tokens)) try: return (((1 + beta**2) * precision * recall) / (beta**2 * precision + recall)) except ZeroDivisionError: return 0
def rouge_l(candidate_tokens, reference_tokens, beta=1): """ Return the ROUGE-L score (longest common subsequence), where candidate_tokens is a sequence of candidate tokens, reference_tokens is a sequence of reference tokens, and beta determines the relative importance of recall in the F-measure """ lcs = len(longest_common_subsequence(candidate_tokens, reference_tokens)) recall = lcs / float(len(reference_tokens)) precision = lcs / float(len(candidate_tokens)) try: return ( ((1 + beta ** 2) * precision * recall ) / (beta ** 2 * precision + recall) ) except ZeroDivisionError: return 0
def test_lcs_string(self): lcs = longest_common_subsequence(self.s1, self.s2) self.assertEqual(lcs, self.s1)
def test_lcs_none2(self): lcs = longest_common_subsequence("", "") self.assertEqual(lcs, "")
def test_lcs_identity(self): lcs = longest_common_subsequence(self.s1, self.s1) self.assertEqual(lcs, self.s1)
def test_lcs_list(self): lcs = longest_common_subsequence(list(self.s1), list(self.s2)) self.assertEqual(lcs, list(self.s1))
def test_lcs_tuple(self): lcs = longest_common_subsequence(tuple(self.s1), tuple(self.s2)) self.assertEqual(lcs, tuple(self.s1))