32 lines
921 B
Python
32 lines
921 B
Python
from UserActType import UserActType
|
|
import os
|
|
import pandas as pd
|
|
import numpy as np
|
|
from NaturalLanguageUnderstanding import NLU
|
|
|
|
nlu = NLU()
|
|
|
|
rows = 0
|
|
hits = 0
|
|
hard_hits = 0
|
|
|
|
for file_name in os.listdir('data'):
|
|
df = pd.read_csv(f'data/{file_name}', sep='\t', names=['interlocutor', 'sentence', 'acts'])
|
|
df = df[df.interlocutor == 'user']
|
|
data = np.array(df)
|
|
|
|
for row in data:
|
|
rows += 1
|
|
sentence = row[1]
|
|
acts = row[2].split('&')
|
|
user_act = nlu.parse_user_input(sentence)
|
|
for act in acts:
|
|
if str(user_act) == act.strip(' '):
|
|
hard_hits += 1
|
|
for act in acts:
|
|
if act.split('(')[0].strip(' ') == str(user_act).split('(')[0].strip(' '):
|
|
hits += 1
|
|
|
|
print(f"Accuracy (intent only): {(hits / rows)*100} ({hits}/{rows})")
|
|
print(f"Accuracy (intent with slots): {(hard_hits / rows)*100} ({hard_hits}/{rows})")
|