Update app.py
Browse files
app.py
CHANGED
@@ -23,40 +23,38 @@ from dotenv import load_dotenv
|
|
23 |
from datetime import datetime
|
24 |
from sklearn.feature_extraction.text import CountVectorizer
|
25 |
from sklearn.model_selection import train_test_split
|
|
|
26 |
from faker import Faker
|
27 |
from random_word import RandomWords
|
28 |
from textgenrnn import textgenrnn
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
load_dotenv()
|
31 |
|
32 |
app = FastAPI()
|
33 |
|
34 |
lemmatizer = WordNetLemmatizer()
|
35 |
-
|
36 |
-
r = redis.Redis(host=os.getenv("REDIS_HOST"), port=int(os.getenv("REDIS_PORT")), password=
|
37 |
-
random_words = RandomWords()
|
38 |
-
textgen = textgenrnn()
|
39 |
|
40 |
def create_intents_json():
|
41 |
intents = {
|
42 |
"intents": [
|
43 |
{
|
44 |
"tag": "greeting",
|
45 |
-
"patterns": [
|
46 |
"responses": ["¡Hola!", "¿Cómo puedo ayudarte?"],
|
47 |
-
"date":
|
48 |
},
|
49 |
{
|
50 |
"tag": "goodbye",
|
51 |
-
"patterns": [
|
52 |
"responses": ["¡Hasta luego!", "Cuídate!"],
|
53 |
-
"date":
|
54 |
-
},
|
55 |
-
{
|
56 |
-
"tag": "random_word",
|
57 |
-
"patterns": [random_words.get_random_word() for _ in range(5)],
|
58 |
-
"responses": [faker.sentence() for _ in range(5)],
|
59 |
-
"date": datetime.now().strftime("%Y-%m-%d")
|
60 |
}
|
61 |
]
|
62 |
}
|
@@ -102,13 +100,16 @@ async def train_and_save_model():
|
|
102 |
if intent['tag'] not in classes:
|
103 |
classes.append(intent['tag'])
|
104 |
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
|
|
|
|
|
|
112 |
|
113 |
words = sorted(set(words))
|
114 |
classes = sorted(set(classes))
|
@@ -312,7 +313,7 @@ async def root():
|
|
312 |
return html_code
|
313 |
|
314 |
if __name__ == "__main__":
|
315 |
-
|
316 |
create_intents_json()
|
317 |
asyncio.run(train_and_save_model())
|
318 |
uvicorn.run(app, host="0.0.0.0", port=7860)
|
|
|
23 |
from datetime import datetime
|
24 |
from sklearn.feature_extraction.text import CountVectorizer
|
25 |
from sklearn.model_selection import train_test_split
|
26 |
+
from transformers import pipeline
|
27 |
from faker import Faker
|
28 |
from random_word import RandomWords
|
29 |
from textgenrnn import textgenrnn
|
30 |
+
import logging
|
31 |
+
|
32 |
+
# Configuración de logging
|
33 |
+
logging.basicConfig(level=logging.INFO)
|
34 |
+
logger = logging.getLogger(__name__)
|
35 |
|
36 |
load_dotenv()
|
37 |
|
38 |
app = FastAPI()
|
39 |
|
40 |
lemmatizer = WordNetLemmatizer()
|
41 |
+
redis_password = os.getenv("REDIS_PASSWORD")
|
42 |
+
r = redis.Redis(host=os.getenv("REDIS_HOST"), port=int(os.getenv("REDIS_PORT")), password=redis_password)
|
|
|
|
|
43 |
|
44 |
def create_intents_json():
|
45 |
intents = {
|
46 |
"intents": [
|
47 |
{
|
48 |
"tag": "greeting",
|
49 |
+
"patterns": ["Hola", "¿Cómo estás?", "Buenos días"],
|
50 |
"responses": ["¡Hola!", "¿Cómo puedo ayudarte?"],
|
51 |
+
"date": "2021-01-01"
|
52 |
},
|
53 |
{
|
54 |
"tag": "goodbye",
|
55 |
+
"patterns": ["Adiós", "Hasta luego", "Nos vemos"],
|
56 |
"responses": ["¡Hasta luego!", "Cuídate!"],
|
57 |
+
"date": "2021-01-01"
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
}
|
59 |
]
|
60 |
}
|
|
|
100 |
if intent['tag'] not in classes:
|
101 |
classes.append(intent['tag'])
|
102 |
|
103 |
+
# Generar contenido adicional para intents.json
|
104 |
+
fake = Faker()
|
105 |
+
random_words = RandomWords()
|
106 |
+
for _ in range(10): # Generar 10 nuevas entradas
|
107 |
+
random_pattern = f"{fake.sentence()}"
|
108 |
+
random_tag = random_words.get_random_word()
|
109 |
+
documents.append((nltk.word_tokenize(random_pattern), random_tag))
|
110 |
+
words.extend(nltk.word_tokenize(random_pattern))
|
111 |
+
if random_tag not in classes:
|
112 |
+
classes.append(random_tag)
|
113 |
|
114 |
words = sorted(set(words))
|
115 |
classes = sorted(set(classes))
|
|
|
313 |
return html_code
|
314 |
|
315 |
if __name__ == "__main__":
|
316 |
+
logger.info(f"Application Startup at {datetime.now()}")
|
317 |
create_intents_json()
|
318 |
asyncio.run(train_and_save_model())
|
319 |
uvicorn.run(app, host="0.0.0.0", port=7860)
|