45 lines
1007 B
Python
45 lines
1007 B
Python
import re
|
|
|
|
class Nlu:
|
|
def __init__(self):
|
|
self.acts = {
|
|
"request": {
|
|
'triggers': ['jak', 'kiedy'],
|
|
'parameters': ['imie']
|
|
}
|
|
}
|
|
|
|
|
|
def tokenize(self, string):
|
|
clean_string = self.get_str_cleaned(string)
|
|
|
|
return clean_string.split()
|
|
|
|
|
|
def get_str_cleaned(self, str_dirty):
|
|
punctuation = '!"#$%&\'()*+,-./:;<=>?@[\\\\]^_`{|}~'
|
|
new_str = str_dirty.lower()
|
|
new_str = re.sub(' +', ' ', new_str)
|
|
|
|
for char in punctuation:
|
|
new_str = new_str.replace(char,'')
|
|
|
|
return new_str
|
|
|
|
def parse(self, message):
|
|
tokens = self.tokenize(message)
|
|
act = None
|
|
param = []
|
|
|
|
for k, v in self.acts.items():
|
|
if any(t in v['triggers'] for t in tokens):
|
|
act = k
|
|
|
|
for t in tokens:
|
|
if t in v['parameters']:
|
|
param.append(t)
|
|
|
|
|
|
return (act, param)
|
|
|