feat: add regex intents

This commit is contained in:
Mikołaj Gawron 2024-05-07 23:34:34 +02:00
parent f552440de7
commit b41e4abd5d
4 changed files with 19 additions and 24 deletions

View File

@ -1,19 +1,8 @@
{ {
"ask_name": [ "ask_name": [
"jak masz na imię", "(?i)\\b(jak|co to jest|czym jest|kto jest|podaj|pokaż|wskaż|kim|którym|czyje|czyja|czyje)\\s+(jest|nazywa się|nazywasz|się nazywasz|twoje|masz na imię|cię wołać|cię zwać|cię nazywać|masz na imie|imię)\\b",
"jak się nazywasz", "(?i)\\b(kim|czym)\\s+(jesteś|jestes|jest)\\b",
"twoje imię", "(?i)\\b(cześć|witaj|witam|hej|siema|helo|hello)\\b",
"jak mogę cię wołać", "(?i)\\b(proszę|powiedz|opowiedz|opisz)\\s+(mi|nam)\\s+(o|więcej|coś)\\s+(o|na temat)\\s*(twoim|ciebie|twoje)\\s*(imieniu|imieniem|imię|nazwisko)\\b"
"jak do ciebie mówić",
"jak cię zwać",
"jak cię nazywać",
"jak masz na imie",
"kim jesteś",
"czym jesteś",
"hej",
"siema",
"witaj",
"witam",
"cześć"
] ]
} }

View File

@ -15,5 +15,10 @@
"Nie rozumiem. Możesz to powtórzyć?", "Nie rozumiem. Możesz to powtórzyć?",
"Nie jestem pewien, co masz na myśli. Możesz to wyjaśnić?", "Nie jestem pewien, co masz na myśli. Możesz to wyjaśnić?",
"Nie jestem pewien, co masz na myśli. Czy możesz to wyjaśnić?" "Nie jestem pewien, co masz na myśli. Czy możesz to wyjaśnić?"
] ],
"repeat": [
"Wygląda na to, że krążymy wokół tego samego tematu. Czy możemy przejść do czegoś innego?",
"Znowu to samo pytanie, może zmienimy temat?",
"Ponownie pytasz o to samo, czy jest coś innego, o co chciałbyś zapytać?"
]
} }

View File

View File

@ -1,21 +1,22 @@
import json import json
import re
from typing import Dict, List, TypedDict from typing import Dict, List, TypedDict
from .config import Config from .config import Config
class Intents(TypedDict): class Intents(TypedDict):
name_query: List[str] ask_name: List[str]
class NaturalLanguageProcessor: class NaturalLanguageProcessor:
def __init__(self, config: Config): def __init__(self, config: Config):
with config.data_path.open('r', encoding='utf-8') as file: with config.data_path.open('r', encoding='utf-8') as file:
self.intents: Intents = json.load(file) self.intents: Dict[str, List[str]] = json.load(file)
def analyze(self, input_text: str) -> str: def analyze(self, input_text: str) -> str:
lower_text = input_text.lower() input_text = input_text.lower()
for intent, phrases in self.intents.items(): for intent, patterns in self.intents.items():
if any(phrase in lower_text for phrase in phrases): for pattern in patterns:
return intent if re.search(pattern, input_text):
return intent
return "unknown" return "unknown"