SystemyDialogowe/NaturalLanguageUnderstanding.py

39 lines
1.2 KiB
Python
Raw Normal View History

2021-04-25 23:17:14 +02:00
from UserActType import UserActType
from UserAct import UserAct
import re
class NLU:
2021-04-26 00:29:07 +02:00
"""
Moduł odpowiedzialny za analizę tekstu. W wyniku jego działania tekstowa reprezentacja wypowiedzi użytkownika zostaje zamieniona na jej reprezentację semantyczną, najczęściej w postaci ramy.
Wejście: Tekst
Wyjście: Akt użytkownika (rama)
"""
2021-04-25 23:17:14 +02:00
def __init__(self):
self.__actParsePatternList = [
(
r"(.*)(cze(ś|s)(ć|c)|witaj|dzie(ń|n) dobry)(.*)",
UserActType.WELCOME_MSG,
[]
),
(
r"(.*)(Jak (masz na imi(ę|e))|(si(ę|e) nazywasz))(.*)",
UserActType.REQUEST,
["name"]
),
(
r"(.*)((ż|z)egnaj)|(do widzenia)|(na razie)(.*)",
UserActType.BYE,
[]
)
]
2021-04-26 15:13:52 +02:00
def parseUserInput(self, text: str) -> UserAct:
2021-04-25 23:17:14 +02:00
for pattern, actType, actParams in self.__actParsePatternList:
regex = re.compile(pattern, re.IGNORECASE)
match = regex.match(text)
if match:
return UserAct(actType, actParams)
return UserAct(UserActType.INVALID)