-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathRouge.py
More file actions
57 lines (33 loc) · 1.39 KB
/
Rouge.py
File metadata and controls
57 lines (33 loc) · 1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
def rouge_metrics(system_list,reference_list):
reference_word_count = len(reference_list)
system_word_count = len(system_list)
rouge_recall = len(intersection(system_list,reference_list))*1.0/reference_word_count
rouge_precision = len(intersection(system_list,reference_list))*1.0/system_word_count
return rouge_recall, rouge_precision
def intersection(system_lst, ref_lst):
intersection_lst = [value for value in system_lst if value in ref_lst]
return intersection_lst
def create_ngrams(text_list,n=2):
iterations = len(text_list)-n
ngrams = []
gram = []
for i in range(iterations+1):
gram = text_list[i:n+i]
ngrams.append(gram)
return ngrams
system_text = "the cat was found under the bed"
reference_text = "the cat was under the bed"
system_list = system_text.split(" ")
reference_list = reference_text.split(" ")
system_2grams = create_ngrams(system_list,2)
reference_2grams = create_ngrams(reference_list,2)
print (system_2grams)
print (reference_2grams)
rouge_recall, rouge_precision = rouge_metrics(system_list,reference_list)
rouge_2_recall, rouge_2_precision = rouge_metrics(system_2grams,reference_2grams)
print("recall",rouge_recall)
print("precision",rouge_precision)
print("recall",rouge_2_recall)
print("precision",rouge_2_precision)
#chris said that averaging this metric for every text was fine
#chris said that averaging this metric for every text was fine