Kolyadual commited on
Commit
dc8ce6b
·
verified ·
1 Parent(s): 5a37249

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +60 -0
  2. requirements.txt +1 -0
app.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import json
3
+ import random
4
+ import re
5
+ from difflib import get_close_matches
6
+
7
+ try:
8
+ with open("patterns.json", "r", encoding="utf-8") as f:
9
+ PATTERNS = json.load(f)
10
+ except Exception as e:
11
+ PATTERNS = {"default": [f"Ошибка загрузки: {e}"]}
12
+
13
+ # === Логика обработки ===
14
+ KEYWORDS = {
15
+ "привет": ["привет", "здравствуй", "хай", "прив"],
16
+ "как дела": ["дела", "как ты", "настроение"],
17
+ "имя": ["имя", "кто ты", "зовут"],
18
+ "школа": ["школа", "урок", "задача", "математика"],
19
+ "пока": ["пока", "выход", "до свидания"],
20
+ "knowledge": ["что такое", "как приготовить", "расскажи про"]
21
+ }
22
+
23
+ def preprocess(text):
24
+ return re.sub(r'[^а-яё\s]', ' ', text.lower()).strip()
25
+
26
+ def find_response(user_input):
27
+ clean = preprocess(user_input)
28
+ if not clean:
29
+ return "Пожалуйста, напиши что-нибудь!"
30
+ if any(w in clean for w in ["пока", "выход", "стоп"]):
31
+ return "До свидания! Возвращайся скорее! 😊"
32
+
33
+ knowledge = PATTERNS.get("knowledge", {})
34
+ if clean in knowledge:
35
+ return knowledge[clean]
36
+ matches = get_close_matches(clean, knowledge.keys(), n=1, cutoff=0.6)
37
+ if matches:
38
+ return knowledge[matches[0]]
39
+
40
+ all_keywords = []
41
+ keyword_to_intent = {}
42
+ for intent, words in KEYWORDS.items():
43
+ if intent == "knowledge": continue
44
+ for word in words:
45
+ all_keywords.append(word)
46
+ keyword_to_intent[word] = intent
47
+
48
+ for token in clean.split():
49
+ matches = get_close_matches(token, all_keywords, n=1, cutoff=0.6)
50
+ if matches:
51
+ return random.choice(PATTERNS[keyword_to_intent[matches[0]]])
52
+ return random.choice(PATTERNS["default"])
53
+
54
+ gr.Interface(
55
+ fn=find_response,
56
+ inputs="text",
57
+ outputs="text",
58
+ title="Newton Micro - теперь умнее! ;)",
59
+ description="Сверхлёгкий ИИ на Python. Поддерживает опечатки и рецепты."
60
+ ).launch()
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ gradio>=2.0,<3.0