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": [
"jak masz na imię",
"jak się nazywasz",
"twoje imię",
"jak mogę cię wołać",
"jak do ciebie mówić",
"jak cię zwać",
"jak cię nazywać",
"jak masz na imie",
"kim jesteś",
"czym jesteś",
"hej",
"siema",
"witaj",
"witam",
"cześć"
"(?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",
"(?i)\\b(kim|czym)\\s+(jesteś|jestes|jest)\\b",
"(?i)\\b(cześć|witaj|witam|hej|siema|helo|hello)\\b",
"(?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"
]
}

View File

@ -15,5 +15,10 @@
"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. 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 re
from typing import Dict, List, TypedDict
from .config import Config
class Intents(TypedDict):
name_query: List[str]
ask_name: List[str]
class NaturalLanguageProcessor:
def __init__(self, config: Config):
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:
lower_text = input_text.lower()
for intent, phrases in self.intents.items():
if any(phrase in lower_text for phrase in phrases):
return intent
input_text = input_text.lower()
for intent, patterns in self.intents.items():
for pattern in patterns:
if re.search(pattern, input_text):
return intent
return "unknown"