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 |
|
Mieszkaj boho | Potęga checklisty | Sen o okapi | ON | Przygody matematyka |
|
||||||
Dwanaście Stacji | Krew | Milczenie owiec | Duma i uprzedzenie | Władca Pierścieni |
|
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 |
|
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 |
|
Paragraf 22 | Rebeka | Birdsong | Buszujący w zbożu | Żona podróżnika w czasie |
|
||||||
Miasteczko Middlemarch | Przeminęło z wiatrem | Wielki Gatsby | Samotnia |
|
Miasteczko Middlemarch | Przeminęło z wiatrem | Wielki Gatsby | Samotnia |
|
||||||
Wojna i pokój | Autostopem przez Galaktykę | Znowu w Brideshead | Grona gniewu |
|
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 |
|
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 |
|
<authors> = Marcin Bruczkowski | Harari Yuval Noah | Haruki Murakami | Fiodor Dostojewski |
|
||||||
Robert Anthony Salvatore | Dimitri Głuchowski | Dan Brown | Anna Rice |
|
Robert Anthony Salvatore | Dimitri Głuchowski | Dan Brown | Anna Rice |
|
||||||
Wojciech Chmielarz | Remigiusz Mróz | Leigh Bardugo | Carlos Ruiz Zafon |
|
Wojciech Chmielarz | Remigiusz Mróz | Leigh Bardugo | Carlos Ruiz Zafon |
|
||||||
Tomasz Budzyński | Weronika Łodyga | Andrzej Sapkowski | J R R Tolkien |
|
Tomasz Budzyński | Weronika Łodyga | Andrzej Sapkowski | J R R Tolkien |
|
||||||
Katarzyna Marciniak | Richard Taylor | Megan Rosenbloom | Piotr Zychowicz |
|
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 |
|
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 |
|
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 |
|
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 |
|
Mieszkaj boho | Potęga checklisty | Sen o okapi | ON | Przygody matematyka |
|
||||||
Dwanaście Stacji | Krew | Milczenie owiec | Duma i uprzedzenie | Władca Pierścieni |
|
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 |
|
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 |
|
Paragraf 22 | Rebeka | Birdsong | Buszujący w zbożu | Żona podróżnika w czasie |
|
||||||
Miasteczko Middlemarch | Przeminęło z wiatrem | Wielki Gatsby | Samotnia |
|
Miasteczko Middlemarch | Przeminęło z wiatrem | Wielki Gatsby | Samotnia |
|
||||||
Wojna i pokój | Autostopem przez Galaktykę | Znowu w Brideshead | Grona gniewu |
|
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 |
|
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 |
|
<authors> = Marcin Bruczkowski | Harari Yuval Noah | Haruki Murakami | Fiodor Dostojewski |
|
||||||
Robert Anthony Salvatore | Dimitri Głuchowski | Dan Brown | Anna Rice |
|
Robert Anthony Salvatore | Dimitri Głuchowski | Dan Brown | Anna Rice |
|
||||||
Wojciech Chmielarz | Remigiusz Mróz | Leigh Bardugo | Carlos Ruiz Zafon |
|
Wojciech Chmielarz | Remigiusz Mróz | Leigh Bardugo | Carlos Ruiz Zafon |
|
||||||
Tomasz Budzyński | Weronika Łodyga | Andrzej Sapkowski | J R R Tolkien |
|
Tomasz Budzyński | Weronika Łodyga | Andrzej Sapkowski | J R R Tolkien |
|
||||||
Katarzyna Marciniak | Richard Taylor | Megan Rosenbloom | Piotr Zychowicz |
|
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 |
|
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 |
|
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 |
|
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;
|
<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 |
|
powiesc | basn | satyra | legenda | liryka | opowiadanie | komedia | epika | poezja |
|
||||||
literatura piekna;
|
literatura piekna;
|
||||||
|
|
||||||
<editions> = 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 |2003 |
|
<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):
|
def __init__(self):
|
||||||
self.grammars = [jsgf.parse_grammar_file(f'JSGFs/{file_name}') for file_name in os.listdir('JSGFs')]
|
self.grammars = [jsgf.parse_grammar_file(f'JSGFs/{file_name}') for file_name in os.listdir('JSGFs')]
|
||||||
|
|
||||||
def get_dialog_act(self, sentence):
|
def get_dialog_act(self, rule):
|
||||||
acts = []
|
slots = []
|
||||||
for sentence in sentence.split(','):
|
self.get_slots(rule.expansion, slots)
|
||||||
for grammar in self.grammars:
|
return {'act': rule.grammar.name, 'slots': slots}
|
||||||
match = grammar.find_matching_rules(sentence)
|
|
||||||
if match:
|
|
||||||
acts.append(grammar.name)
|
|
||||||
return acts
|
|
||||||
|
|
||||||
def match_slots(self, expansion, slots):
|
def get_slots(self, expansion, slots):
|
||||||
if expansion.tag != '':
|
if expansion.tag != '':
|
||||||
slots.append((expansion.tag, expansion.current_match))
|
slots.append((expansion.tag, expansion.current_match))
|
||||||
return slots
|
return
|
||||||
|
|
||||||
for child in expansion.children:
|
for child in expansion.children:
|
||||||
self.get_slots(child, slots)
|
self.get_slots(child, slots)
|
||||||
@ -27,14 +23,18 @@ class NLU:
|
|||||||
if not expansion.children and isinstance(expansion, jsgf.NamedRuleRef):
|
if not expansion.children and isinstance(expansion, jsgf.NamedRuleRef):
|
||||||
self.get_slots(expansion.referenced_rule.expansion, slots)
|
self.get_slots(expansion.referenced_rule.expansion, slots)
|
||||||
|
|
||||||
def get_slots(self, utterance):
|
def match(self, utterance):
|
||||||
slots = []
|
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:
|
for grammar in self.grammars:
|
||||||
matched = grammar.find_matching_rules(utterance)
|
matched = grammar.find_matching_rules(utterance)
|
||||||
if matched:
|
if matched:
|
||||||
return self.match_slots(matched[0], slots)
|
return self.get_dialog_act(matched[0])
|
||||||
return []
|
return {'act': 'null', 'slots': []}
|
||||||
|
|
||||||
|
|
||||||
#Dialogue policy
|
#Dialogue policy
|
||||||
class DP:
|
class DP:
|
||||||
|
@ -22,11 +22,10 @@ for file_name in os.listdir('data'):
|
|||||||
rows += 1
|
rows += 1
|
||||||
sentence = row[1]
|
sentence = row[1]
|
||||||
user_acts = row[2].split('&')
|
user_acts = row[2].split('&')
|
||||||
nlu_acts = nlu.get_dialog_act(sentence)
|
nlu_match = nlu.match(sentence)
|
||||||
for nlu_act in nlu_acts:
|
if nlu_match['act'] in user_acts:
|
||||||
for user_act in user_acts:
|
|
||||||
user_act = re.search(PATTERN, user_act).group()
|
|
||||||
if user_act == nlu_act:
|
|
||||||
hits += 1
|
hits += 1
|
||||||
|
|
||||||
|
|
||||||
print(f"Accuracy: {(hits / rows)*100}")
|
print(f"Accuracy: {(hits / rows)*100}")
|
||||||
# Dokładność 38.5%
|
# Dokładność 38.5%
|
Loading…
Reference in New Issue
Block a user