-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheval_code_SM.py
58 lines (43 loc) · 1.76 KB
/
eval_code_SM.py
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
54
55
56
57
58
import pandas as pd
from utils import bleu_score, rougue_score, bert_score, selfcheck_nli_score
import ast
seed = 0
fileName = f"/home/jaewon/HMD_files/src/task1/results/Oct/v1.6_no_seed/task1_genSM_llava_zero_result_{seed}.csv"
file = pd.read_csv(fileName)
bleu_scores = []
rouge_scores = []
bert_scores = []
selfscore_scores = []
def safe_convert_to_string(value):
if isinstance(value, float) and pd.isna(value):
return ""
return str(value)
for idx, row in file.iterrows():
print("Current idx",idx)
surface_message = row['surface_message']
image_caption = row['image_caption']
text = row['text']
if surface_message in ['1', 1]:
reference_text = f"{image_caption.strip('.')}. The author describes this image as: '{text}'"
elif surface_message in ['2', 2]:
reference_text = f"{image_caption.strip('.')}. The person in the image says that: '{text}'"
generated_text = safe_convert_to_string(row['task1_genSM_llava_zero_parsed'])
generated_text = ast.literal_eval(generated_text)[0]
if generated_text and reference_text:
bleu = bleu_score(generated_text, reference_text)
rouge = rougue_score(generated_text, reference_text)
bert = bert_score(generated_text, reference_text)
selfscore = selfcheck_nli_score(generated_text, reference_text)
else:
bleu = rouge = bert = deberta_cos = None
bleu_scores.append(bleu)
rouge_scores.append(rouge)
bert_scores.append(bert)
selfscore_scores.append(selfscore)
file['BLEU_Score'] = bleu_scores
file['ROUGE_Score'] = rouge_scores
file['BERT_Score'] = bert_scores
file['SelfCheckNLI_Score'] = selfscore_scores
output_fileName = f"{fileName[:-4]}_with_scores.csv"
file.to_csv(output_fileName, index=False)
file.head()