nlu update
This commit is contained in:
parent
4670a75d80
commit
6eb2ecfeed
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
__pycache__
|
@ -17,19 +17,19 @@ public <potwierdzenie4> = Książka <book> została zarezerwowana;
|
||||
Mieszkaj boho | Potęga checklisty | Sen o okapi | ON | Przygody matematyka |
|
||||
Dwanaście Stacji | Krew | Milczenie owiec | Duma i uprzedzenie | Władca Pierścieni |
|
||||
Jane Eyre | Harry Potter i kamień filozoficzny | Zabić drozda | Wichrowe Wzgórza |
|
||||
Rok 1984 | Mroczne materie | Wielkie nadzieje | Małe kobietki | Tessa D’Urberville |
|
||||
Rok 1984 | Mroczne materie | Wielkie nadzieje | Małe kobietki | Tessa D Urberville |
|
||||
Paragraf 22 | Rebeka | Birdsong | Buszujący w zbożu | Żona podróżnika w czasie |
|
||||
Miasteczko Middlemarch | Przeminęło z wiatrem | Wielki Gatsby | Samotnia |
|
||||
Wojna i pokój | Autostopem przez Galaktykę | Znowu w Brideshead | Grona gniewu |
|
||||
Alicja w Krainie Czarów | O czym szumią wierzby | Anna Karenina | David Copperfield |
|
||||
Opowieści z Narnii | Emma | Perswazje | Lew, Czarwnica i Stara Szafa;
|
||||
Opowieści z Narnii | Emma | Perswazje | Lew Czarwnica i Stara Szafa;
|
||||
|
||||
<authors> = Marcin Bruczkowski | Harari Yuval Noah | Haruki Murakami | Fiodor Dostojewski |
|
||||
Robert Anthony Salvatore | Dimitri Głuchowski | Dan Brown | Anna Rice |
|
||||
Wojciech Chmielarz | Remigiusz Mróz | Leigh Bardugo | Carlos Ruiz Zafon |
|
||||
Tomasz Budzyński | Weronika Łodyga | Andrzej Sapkowski | J R R Tolkien |
|
||||
Katarzyna Marciniak | Richard Taylor | Megan Rosenbloom | Piotr Zychowicz |
|
||||
Ewelina Podrez-Siama | Marzena Rogalska | Bill Gates | Justina Blakeney |
|
||||
Ewelina Podrez Siama | Marzena Rogalska | Bill Gates | Justina Blakeney |
|
||||
Atul Gawande | Mariana Leky | Diana Brzezińska | Stanisław Ulam | Tomasz Różycki |
|
||||
Max Czornyj | Thomas Harris | Jane Austen | J R R Tolkien | Charlotte Bronte |
|
||||
J K Rowling | Harper Lee | Emily Bronte | George Orwell | Philip Pullman | Charles Dickens |
|
||||
|
@ -59,19 +59,19 @@ public <rezerwacja4> = Chciałabym dokonać rezerwacji ksiązki <books> {books}*
|
||||
Mieszkaj boho | Potęga checklisty | Sen o okapi | ON | Przygody matematyka |
|
||||
Dwanaście Stacji | Krew | Milczenie owiec | Duma i uprzedzenie | Władca Pierścieni |
|
||||
Jane Eyre | Harry Potter i kamień filozoficzny | Zabić drozda | Wichrowe Wzgórza |
|
||||
Rok 1984 | Mroczne materie | Wielkie nadzieje | Małe kobietki | Tessa D’Urberville |
|
||||
Rok 1984 | Mroczne materie | Wielkie nadzieje | Małe kobietki | Tessa D Urberville |
|
||||
Paragraf 22 | Rebeka | Birdsong | Buszujący w zbożu | Żona podróżnika w czasie |
|
||||
Miasteczko Middlemarch | Przeminęło z wiatrem | Wielki Gatsby | Samotnia |
|
||||
Wojna i pokój | Autostopem przez Galaktykę | Znowu w Brideshead | Grona gniewu |
|
||||
Alicja w Krainie Czarów | O czym szumią wierzby | Anna Karenina | David Copperfield |
|
||||
Opowieści z Narnii | Emma | Perswazje | Lew, Czarwnica i Stara Szafa;
|
||||
Opowieści z Narnii | Emma | Perswazje | Lew Czarwnica i Stara Szafa;
|
||||
|
||||
<authors> = Marcin Bruczkowski | Harari Yuval Noah | Haruki Murakami | Fiodor Dostojewski |
|
||||
Robert Anthony Salvatore | Dimitri Głuchowski | Dan Brown | Anna Rice |
|
||||
Wojciech Chmielarz | Remigiusz Mróz | Leigh Bardugo | Carlos Ruiz Zafon |
|
||||
Tomasz Budzyński | Weronika Łodyga | Andrzej Sapkowski | J R R Tolkien |
|
||||
Katarzyna Marciniak | Richard Taylor | Megan Rosenbloom | Piotr Zychowicz |
|
||||
Ewelina Podrez-Siama | Marzena Rogalska | Bill Gates | Justina Blakeney |
|
||||
Ewelina Podrez Siama | Marzena Rogalska | Bill Gates | Justina Blakeney |
|
||||
Atul Gawande | Mariana Leky | Diana Brzezińska | Stanisław Ulam | Tomasz Różycki |
|
||||
Max Czornyj | Thomas Harris | Jane Austen | J R R Tolkien | Charlotte Bronte |
|
||||
J K Rowling | Harper Lee | Emily Bronte | George Orwell | Philip Pullman | Charles Dickens |
|
||||
@ -82,10 +82,10 @@ public <rezerwacja4> = Chciałabym dokonać rezerwacji ksiązki <books> {books}*
|
||||
|
||||
<status> = otwarta | zamknięta | otwarta w czasie pandemii | zamknięta do odwołania;
|
||||
|
||||
<genres> = romans | thriller | ksiazka fantasy | horror | biografia | science-fiction | dramat |
|
||||
<genres> = romans | thriller | ksiazka fantasy | horror | biografia | science fiction | dramat |
|
||||
powiesc | basn | satyra | legenda | liryka | opowiadanie | komedia | epika | poezja |
|
||||
literatura piekna;
|
||||
|
||||
<editions> = 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 |2003 |
|
||||
2004 | 2005 | 2000
|
||||
2004 | 2005 | 2000;
|
||||
|
||||
|
30
Modules.py
30
Modules.py
@ -7,19 +7,15 @@ class NLU:
|
||||
def __init__(self):
|
||||
self.grammars = [jsgf.parse_grammar_file(f'JSGFs/{file_name}') for file_name in os.listdir('JSGFs')]
|
||||
|
||||
def get_dialog_act(self, sentence):
|
||||
acts = []
|
||||
for sentence in sentence.split(','):
|
||||
for grammar in self.grammars:
|
||||
match = grammar.find_matching_rules(sentence)
|
||||
if match:
|
||||
acts.append(grammar.name)
|
||||
return acts
|
||||
def get_dialog_act(self, rule):
|
||||
slots = []
|
||||
self.get_slots(rule.expansion, slots)
|
||||
return {'act': rule.grammar.name, 'slots': slots}
|
||||
|
||||
def match_slots(self, expansion, slots):
|
||||
def get_slots(self, expansion, slots):
|
||||
if expansion.tag != '':
|
||||
slots.append((expansion.tag, expansion.current_match))
|
||||
return slots
|
||||
return
|
||||
|
||||
for child in expansion.children:
|
||||
self.get_slots(child, slots)
|
||||
@ -27,14 +23,18 @@ class NLU:
|
||||
if not expansion.children and isinstance(expansion, jsgf.NamedRuleRef):
|
||||
self.get_slots(expansion.referenced_rule.expansion, slots)
|
||||
|
||||
def get_slots(self, utterance):
|
||||
slots = []
|
||||
def match(self, utterance):
|
||||
list_of_illegal_character = [',', '.', "'", '?', '!', ':', '-', '/']
|
||||
for illegal_character in list_of_illegal_character[:-2]:
|
||||
utterance = utterance.replace(f'{illegal_character}','')
|
||||
for illegal_character in list_of_illegal_character[-2:]:
|
||||
utterance = utterance.replace(f'{illegal_character}',' ')
|
||||
|
||||
for grammar in self.grammars:
|
||||
matched = grammar.find_matching_rules(utterance)
|
||||
if matched:
|
||||
return self.match_slots(matched[0], slots)
|
||||
return []
|
||||
|
||||
return self.get_dialog_act(matched[0])
|
||||
return {'act': 'null', 'slots': []}
|
||||
|
||||
#Dialogue policy
|
||||
class DP:
|
||||
|
11
evaluate.py
11
evaluate.py
@ -22,11 +22,10 @@ for file_name in os.listdir('data'):
|
||||
rows += 1
|
||||
sentence = row[1]
|
||||
user_acts = row[2].split('&')
|
||||
nlu_acts = nlu.get_dialog_act(sentence)
|
||||
for nlu_act in nlu_acts:
|
||||
for user_act in user_acts:
|
||||
user_act = re.search(PATTERN, user_act).group()
|
||||
if user_act == nlu_act:
|
||||
hits += 1
|
||||
nlu_match = nlu.match(sentence)
|
||||
if nlu_match['act'] in user_acts:
|
||||
hits += 1
|
||||
|
||||
|
||||
print(f"Accuracy: {(hits / rows)*100}")
|
||||
# Dokładność 38.5%
|
Loading…
Reference in New Issue
Block a user