-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathevaluator.py
More file actions
38 lines (27 loc) · 1.15 KB
/
evaluator.py
File metadata and controls
38 lines (27 loc) · 1.15 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
import metrics
from constants import SOS_TOKEN, EOS_TOKEN
from collections import OrderedDict
import pandas as pd
class Evaluator:
def __init__(self, methods, tensor_encoder):
self.methods = methods
self.tensor_encoder = tensor_encoder
self.metric_functions = {
'BLEU': metrics.bleu,
'ROUGE': metrics.rouge,
'F1': metrics.f1_score
}
def evaluate(self, model):
df = pd.DataFrame()
df['Source'] = self.methods['source']
df['RealName'] = self.methods['name']
df['GeneratedName'] = self.methods['source'].apply(model)
df = self.tensor_encoder.decode(df, 'Source', ['RealName', 'GeneratedName'])
for metric, func in self.metric_functions.items():
df[metric] = [
func(row['RealName'], row['GeneratedName'])
for i, row in df.iterrows()]
df['Source'] = df['Source'].apply(lambda sentence: ' '.join(sentence))
df['RealName'] = df['RealName'].apply(lambda sentence: ' '.join(sentence))
df['GeneratedName'] = df['GeneratedName'].apply(lambda sentence: ' '.join(sentence))
return df