31 lines
801 B
Python
31 lines
801 B
Python
import os
|
|
import re
|
|
import jsgf
|
|
import pandas as pd
|
|
import numpy as np
|
|
from NaturalLanguageUnderstanding import NLU
|
|
|
|
nlu = NLU()
|
|
|
|
rows = 0
|
|
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:
|
|
sentence = row[1]
|
|
sentences = sentence.split(',')
|
|
for sentence in sentences:
|
|
acts = row[2].split('&')
|
|
for act in acts:
|
|
rows += 1
|
|
frame = nlu.parse_user_input(sentence)
|
|
frame_act_name = frame.getActType().name.lower()
|
|
if frame_act_name in act.strip():
|
|
hits += 1
|
|
|
|
print(f"Accuracy: {(hits / rows)*100}")
|