All Code unstable, feat: code with config archive, finetuning, download models and extract data of db.
This commit is contained in:
parent
9c0b1ce654
commit
ceaa20af06
|
@ -18,5 +18,19 @@ sns_violin*
|
||||||
NewData*
|
NewData*
|
||||||
motor05102023.csv
|
motor05102023.csv
|
||||||
run.sh
|
run.sh
|
||||||
|
Modelo_embedding_Mexico_Puebla/all-mpnet-base-v2/model/*
|
||||||
Finetuning/embeddings/all-mpnet-base-v2/*
|
3pasos/paraphrase-multilingual-mpnet-base-v2/Sta/EvalClass.csv
|
||||||
|
3pasos/paraphrase-multilingual-mpnet-base-v2/model/*
|
||||||
|
9pasos/paraphrase-multilingual-mpnet-base-v2/Sta/EvalClass.csv
|
||||||
|
9pasos/paraphrase-multilingual-mpnet-base-v2/model/*
|
||||||
|
50pasos/paraphrase-multilingual-mpnet-base-v2/Sta/EvalClass.csv
|
||||||
|
50pasos/paraphrase-multilingual-mpnet-base-v2/model/*
|
||||||
|
100pasos/paraphrase-multilingual-mpnet-base-v2/Sta/EvalClass.csv
|
||||||
|
100pasos/paraphrase-multilingual-mpnet-base-v2/model/*
|
||||||
|
Argument/*
|
||||||
|
__pycache__/models.cpython-311.pyc
|
||||||
|
data/raw/__pycache__/models.cpython-311.pyc
|
||||||
|
Modelo_embedding_Mexico_Puebla/*
|
||||||
|
Intentionality3/index.faiss
|
||||||
|
Intentionality3/index.pkl
|
||||||
|
conf/experiment_config.json
|
||||||
|
|
|
@ -4,12 +4,27 @@ from sentence_transformers import SentenceTransformer
|
||||||
# el mas rapido "paraphrase-MiniLM-L3-v2" y "all-MiniLM-L6-v2"
|
# el mas rapido "paraphrase-MiniLM-L3-v2" y "all-MiniLM-L6-v2"
|
||||||
# muy rappudo y muy acertado "all-MiniLM-L12-v2"
|
# muy rappudo y muy acertado "all-MiniLM-L12-v2"
|
||||||
#models=["all-MiniLM-L12-v2","paraphrase-MiniLM-L3-v2" , "all-MiniLM-L6-v2",
|
#models=["all-MiniLM-L12-v2","paraphrase-MiniLM-L3-v2" , "all-MiniLM-L6-v2",
|
||||||
models=["all-mpnet-base-v2","multi-qa-mpnet-base-dot-v1"]
|
from pathlib import Path
|
||||||
|
import json
|
||||||
|
#"paraphrase-multilingual-mpnet-base-v2",'hackathon-pln-es/paraphrase-spanish-distilroberta'
|
||||||
|
nameModel="Modelo_embedding_Mexico_Puebla_hiiamasid"
|
||||||
|
def extractConfig(nameModel="Modelo_embedding_Mexico_Puebla",relPath="./conf/experiment_config.json",dataOut="train_dataset_pos"):
|
||||||
|
configPath=Path(relPath)
|
||||||
|
with open(configPath, 'r', encoding='utf-8') as file:
|
||||||
|
config = json.load(file)[nameModel]
|
||||||
|
if dataOut is list and len(dataOut)==2:
|
||||||
|
Output= config[dataOut[0]][dataOut[1]]
|
||||||
|
else:
|
||||||
|
Output= config[dataOut]
|
||||||
|
return Output
|
||||||
|
baseModel=extractConfig(nameModel=nameModel,dataOut="base_model")
|
||||||
|
models=[baseModel]
|
||||||
|
|
||||||
for model in models:
|
for model in models:
|
||||||
modelST = SentenceTransformer(model)
|
modelST = SentenceTransformer(model)
|
||||||
# Define the path where you want to save the model
|
# Define the path where you want to save the model
|
||||||
save_path = './embeddings/%s/'%(model)
|
save_path = './embeddings/%s/model'%(model)
|
||||||
|
print(save_path)
|
||||||
# Save the model
|
# Save the model
|
||||||
modelST.save(save_path)
|
modelST.save(save_path)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
"32": [
|
||||||
|
"Necesito informar sobre un deterioro en la carretera cerca de donde vivo.",
|
||||||
|
"Quiero expresar mi preocupación acerca de un bache en la calle que está cerca de mi domicilio.",
|
||||||
|
"Estoy solicitando la atención de las autoridades para solucionar un problema vial en las inmediaciones de mi vivienda.",
|
||||||
|
"Necesito poner en conocimiento de las autoridades competentes un bache en la vía cercana a mi residencia.",
|
||||||
|
"reportar bache"
|
||||||
|
|
||||||
|
],
|
||||||
|
"171": [
|
||||||
|
"¿Me podrías decir cuáles son las opciones culturales en estos días?",
|
||||||
|
"Quiero informarme sobre los eventos culturales que no me puedo perder.",
|
||||||
|
"¿Puedes recomendarme eventos culturales?",
|
||||||
|
"Estoy buscando información sobre la agenda cultural y artística de Puebla."
|
||||||
|
],
|
||||||
|
"273": [
|
||||||
|
"Necesito información sobre programas de educación musical para la infancia.",
|
||||||
|
"¿Puede proporcionarme detalles sobre cursos de producción de música electrónica?",
|
||||||
|
"Me gustaría saber más sobre clases de música para adultos mayores.",
|
||||||
|
"Estoy interesado en talleres de música étnica y world music."
|
||||||
|
],
|
||||||
|
"239": [
|
||||||
|
"Quiero indicar que un semáforo no muestra la señal de alto constante.",
|
||||||
|
"Necesito reportar un semáforo que no muestra la señal de alto intermitente.",
|
||||||
|
"Estoy interesado en notificar sobre un semáforo que presenta un mal funcionamiento general.",
|
||||||
|
"Quiero comunicar que un semáforo no muestra ninguna señal de luz."
|
||||||
|
],
|
||||||
|
"452": [
|
||||||
|
"Estoy aquí para alertar sobre un coche en estado de abandono.",
|
||||||
|
"Quiero comunicar que un vehículo ha sido descuidado y está estacionado.",
|
||||||
|
"Necesito reportar un vehículo sin supervisión.",
|
||||||
|
"Estoy dispuesto a dar aviso sobre un automóvil abandonado en la vía pública."
|
||||||
|
],
|
||||||
|
"23": [
|
||||||
|
"¿Que actividades de cine hay esta semana?",
|
||||||
|
"¿Que actividades de club de lectrura hay en puebla?",
|
||||||
|
"¿Donde puedo participar en talleres de escritura?"
|
||||||
|
],
|
||||||
|
"1194":
|
||||||
|
["¿Cómo llegar a la zona arqueológica de Yohualichan desde el centro de Cuetzalan?",
|
||||||
|
"¿Cuál es la mejor ruta para visitar la cascada de Apulco desde Cuetzalan?",
|
||||||
|
"¿Qué transporte recomiendan para llegar a La Gloria desde el centro de Cuetzalan?"],
|
||||||
|
"1315":[
|
||||||
|
"quien es el alcalde de la ciudad de puebla",
|
||||||
|
"quien es el presidente municipal de puebla",
|
||||||
|
"qué estudios tiene eduardo rivera pérez",
|
||||||
|
"qué cargos ha ocupado eduardo rivera pérez",
|
||||||
|
"como se llama el presidente municipal ",
|
||||||
|
"cual es el nombre del alcalde del municipio",
|
||||||
|
"como se llama el alcalde"
|
||||||
|
|
||||||
|
],
|
||||||
|
"0":[
|
||||||
|
"dfjhnr9o",
|
||||||
|
"fgrrd dfgres",
|
||||||
|
"Estoy molesto",
|
||||||
|
"No funciona"
|
||||||
|
]
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,145 @@
|
||||||
|
from models import dbvotes,dbcopies
|
||||||
|
from sentence_transformers import SentenceTransformer
|
||||||
|
from sklearn.ensemble import RandomForestClassifier
|
||||||
|
from sklearn.model_selection import train_test_split
|
||||||
|
from sklearn.metrics import accuracy_score
|
||||||
|
import pandas as pd
|
||||||
|
from typing import List
|
||||||
|
from langchain.pydantic_v1 import BaseModel
|
||||||
|
from langchain.schema.embeddings import Embeddings
|
||||||
|
from unidecode import unidecode
|
||||||
|
from nltk.corpus import stopwords
|
||||||
|
import re
|
||||||
|
from pathlib import Path
|
||||||
|
import json
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import seaborn as sns
|
||||||
|
def extractConfig(nameModel="Modelo_embedding_Mexico_Puebla",relPath="./conf/experiment_config.json",dataOut="train_dataset_pos"):
|
||||||
|
configPath=Path(relPath)
|
||||||
|
with open(configPath, 'r', encoding='utf-8') as file:
|
||||||
|
config = json.load(file)[nameModel]
|
||||||
|
if type(dataOut) is list and len(dataOut)==2:
|
||||||
|
Output= config[dataOut[0]][dataOut[1]]
|
||||||
|
else:
|
||||||
|
Output= config[dataOut]
|
||||||
|
return Output
|
||||||
|
|
||||||
|
def remove_emoji(string):
|
||||||
|
emoji_pattern = re.compile("["
|
||||||
|
u"\U0001F600-\U0001F64F" # emoticons
|
||||||
|
u"\U0001F300-\U0001F5FF" # symbols & pictographs
|
||||||
|
u"\U0001F680-\U0001F6FF" # transport & map symbols
|
||||||
|
u"\U0001F1E0-\U0001F1FF" # flags (iOS)
|
||||||
|
u"\U00002702-\U000027B0"
|
||||||
|
u"\U000024C2-\U0001F251"
|
||||||
|
"]+", flags=re.UNICODE)
|
||||||
|
return emoji_pattern.sub(r' ', string)
|
||||||
|
|
||||||
|
def remove_unwanted(document,stopOK=False,punctuationOK=False,xtrasOK=False, emojiOk=False, unidecodeOK=False):
|
||||||
|
if punctuationOK:
|
||||||
|
# remove punctuation
|
||||||
|
for sig in [".",",","!","¿","?","=","(",")"]:
|
||||||
|
document=document.replace(sig," ")
|
||||||
|
|
||||||
|
if xtrasOK:
|
||||||
|
# remove user mentions
|
||||||
|
document = re.sub("@[A-Za-z0-9_]+"," ", document)
|
||||||
|
# remove URLS
|
||||||
|
document = re.sub(r'http\S+', ' ', document)
|
||||||
|
# remove hashtags
|
||||||
|
document = re.sub("#[A-Za-z0-9_]+","", document)
|
||||||
|
if emojiOk:
|
||||||
|
# remove emoji's
|
||||||
|
document = remove_emoji(document)
|
||||||
|
|
||||||
|
#document = re.sub("[^0-9A-Za-z ]", "" , document)
|
||||||
|
# remove double spaces
|
||||||
|
#print(document)
|
||||||
|
if unidecodeOK:
|
||||||
|
document=unidecode(document)
|
||||||
|
|
||||||
|
|
||||||
|
if stopOK:
|
||||||
|
words=document.split(" ")
|
||||||
|
stop_words = set(stopwords.words('spanish'))
|
||||||
|
words = [w for w in words if not w in stop_words]
|
||||||
|
document=" ".join(words)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
document = document.replace(' ',"")
|
||||||
|
#print(document)
|
||||||
|
return document.strip().lower()
|
||||||
|
|
||||||
|
output=[]
|
||||||
|
for row in dbvotes(dbvotes.votes.id).select():
|
||||||
|
if int(row.vote)==1:
|
||||||
|
Sal={}
|
||||||
|
#print(row.message, row.copy_id,row.vote)
|
||||||
|
query = (dbvotes.messages.id==row.message)
|
||||||
|
messagequery = dbvotes(query).select(dbvotes.messages.ALL)
|
||||||
|
Sal["texto"]=messagequery[0].message
|
||||||
|
Sal["etiqueta"]=row.copy_id
|
||||||
|
query = (dbcopies.copies.id==row.copy_id)
|
||||||
|
copiesquery =dbcopies(query).select(dbcopies.copies.ALL)
|
||||||
|
#Sal["copy_message"]=copiesquery[0].copy_message
|
||||||
|
Sal["intentionality"]=copiesquery[0].intentionality
|
||||||
|
#print(copiesquery)
|
||||||
|
output.append(Sal)
|
||||||
|
|
||||||
|
|
||||||
|
df=pd.DataFrame(output)
|
||||||
|
|
||||||
|
train_data, test_data = train_test_split(df, test_size=0.2, random_state=42)
|
||||||
|
|
||||||
|
def loadmodelEmb(model_name = "embeddings/all-MiniLM-L6-v2",model_kwargs = {'device': 'cpu'}):
|
||||||
|
st = SentenceTransformer(model_name)
|
||||||
|
return st
|
||||||
|
|
||||||
|
class CustomEmbedding(Embeddings, BaseModel,):
|
||||||
|
"""embedding model with preprocessing"""
|
||||||
|
def _get_embedding(self,text) -> List[float]:
|
||||||
|
#print(text,"text")
|
||||||
|
text=remove_unwanted(text,punctuationOK=True,stopOK=True)
|
||||||
|
Sal=emb.encode(text)
|
||||||
|
return Sal
|
||||||
|
def embed_documents(self, texts: List[str]) -> List[List[float]]:
|
||||||
|
Sal=[]
|
||||||
|
for text in texts:
|
||||||
|
Sal.append(self._get_embedding(text))
|
||||||
|
|
||||||
|
return Sal
|
||||||
|
def embed_query(self, text: str) -> List[float]:
|
||||||
|
return self._get_embedding(text)
|
||||||
|
|
||||||
|
nameModel="Modelo_embedding_Mexico_Puebla"
|
||||||
|
valid_path = extractConfig(dataOut="valid_dataset")
|
||||||
|
baseModel= extractConfig(dataOut="base_model")
|
||||||
|
with open(valid_path, 'r', encoding='utf-8') as file:
|
||||||
|
queries_Categoricos = json.load(file)
|
||||||
|
model="./%s/%s/model"%(nameModel,baseModel)
|
||||||
|
|
||||||
|
emb=loadmodelEmb(model_name = model)
|
||||||
|
emb2=CustomEmbedding()
|
||||||
|
train_embeddings = pd.DataFrame(emb2.embed_documents(train_data['texto'].tolist()))
|
||||||
|
test_embeddings = pd.DataFrame(emb2.embed_documents(test_data['texto'].tolist()))
|
||||||
|
print(pd.DataFrame(test_embeddings))
|
||||||
|
|
||||||
|
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)
|
||||||
|
rf_model.fit(train_embeddings, train_data['etiqueta'])
|
||||||
|
|
||||||
|
# Hacer predicciones en el conjunto de prueba
|
||||||
|
predictions = rf_model.predict(test_embeddings)
|
||||||
|
|
||||||
|
# Calcular la precisión
|
||||||
|
accuracy = accuracy_score(test_data['etiqueta'], predictions)
|
||||||
|
print(f'Precisión del modelo: {accuracy:.2f}')
|
||||||
|
|
||||||
|
|
||||||
|
# verificar características importantes
|
||||||
|
feature_importances_df = pd.DataFrame(
|
||||||
|
{"feature": list(test_embeddings.columns), "importance": rf_model.feature_importances_}
|
||||||
|
).sort_values("importance", ascending=False)
|
||||||
|
|
||||||
|
# Mostrar
|
||||||
|
print(feature_importances_df)
|
|
@ -0,0 +1,2 @@
|
||||||
|
scp mgil@apollo.latinux.net:/home/jbenitez/www/py4web/apps/AngelaSmartBot/databases/storage.db ./data/raw/databases
|
||||||
|
scp mgil@apollo.latinux.net:/opt/web2py/applications/MotorAngela/databases/storage.sqlite ./data/raw/databases
|
|
@ -53,81 +53,70 @@ model.fit(train_objectives=[(train_dataloader, train_loss)],epochs=num_epochs,wa
|
||||||
"""
|
"""
|
||||||
from sentence_transformers import SentenceTransformer, losses, InputExample
|
from sentence_transformers import SentenceTransformer, losses, InputExample
|
||||||
from torch.utils.data import DataLoader
|
from torch.utils.data import DataLoader
|
||||||
|
from unidecode import unidecode
|
||||||
|
from pathlib import Path
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
nameModel="Modelo_embedding_Mexico_Puebla_hiiamasid"
|
||||||
|
def extractConfig(nameModel="Modelo_embedding_Mexico_Puebla",relPath="./conf/experiment_config.json",dataOut="train_dataset_pos"):
|
||||||
|
configPath=Path(relPath)
|
||||||
|
with open(configPath, 'r', encoding='utf-8') as file:
|
||||||
|
config = json.load(file)[nameModel]
|
||||||
|
if type(dataOut) is list and len(dataOut)==2:
|
||||||
|
Output= config[dataOut[0]][dataOut[1]]
|
||||||
|
else:
|
||||||
|
Output= config[dataOut]
|
||||||
|
return Output
|
||||||
|
def saveConfig(dictionary):
|
||||||
|
pathOutfile='./%s/%s/params/'%(nameModel,baseModel)
|
||||||
|
if not os.path.exists(pathOutfile):
|
||||||
|
os.makedirs(pathOutfile)
|
||||||
|
with open(pathOutfile+"params.json", "w",encoding='utf-8') as outfile:
|
||||||
|
json.dump(dictionary, outfile)
|
||||||
|
|
||||||
|
def saveData(dictionary):
|
||||||
|
Sal={}
|
||||||
|
pathOutfile='./%s/%s/data/'%(nameModel,baseModel)
|
||||||
|
if not os.path.exists(pathOutfile):
|
||||||
|
os.makedirs(pathOutfile)
|
||||||
|
|
||||||
|
with open(pathOutfile+"train.json", "w",encoding='utf-8') as outfile:
|
||||||
|
json.dump(dictionary, outfile)
|
||||||
|
|
||||||
model="embeddings/all-mpnet-base-v2"
|
now = datetime.now()
|
||||||
modelST = SentenceTransformer(model)
|
|
||||||
|
|
||||||
|
entrenamiento="V_%s_%s_%s"%(now.year,now.month,now.day)
|
||||||
|
baseModel=extractConfig(nameModel=nameModel,dataOut="base_model")
|
||||||
|
trainDatasetPos=extractConfig(nameModel=nameModel,dataOut="train_dataset_pos")
|
||||||
|
|
||||||
|
model=extractConfig(nameModel=nameModel,dataOut="path_model")
|
||||||
|
modelST = SentenceTransformer(model+"/model")
|
||||||
train_loss = losses.MultipleNegativesRankingLoss(model=modelST)
|
train_loss = losses.MultipleNegativesRankingLoss(model=modelST)
|
||||||
|
train_path = Path(trainDatasetPos)
|
||||||
|
with open(train_path, 'r', encoding='utf-8') as file:
|
||||||
|
queries_Categoricos = json.load(file)
|
||||||
|
|
||||||
queries=["reportar un bache en mi comunidad",
|
|
||||||
"¿Como reporto un bacheo en mi comunidad?",
|
|
||||||
"Quiero informar sobre un hoyo en la calle cerca de mi hogar.",
|
|
||||||
"Necesito reportar un bache en la vía cercana a mi residencia.",
|
|
||||||
"Estoy preocupado por un hueco en la carretera que está cerca de donde vivo.",
|
|
||||||
"Me gustaría notificar sobre un desnivel en la carretera en las inmediaciones de mi domicilio.",
|
|
||||||
"Quiero presentar una queja sobre un socavón en la vía que conduce a mi casa.",
|
|
||||||
"Estoy interesado en denunciar una irregularidad en la calle cercana a mi vivienda.",
|
|
||||||
"Necesito dar aviso sobre un problema en la carretera próxima a mi residencia.",
|
|
||||||
"Estoy observando un inconveniente en la carretera cerca de donde vivo y quisiera reportarlo.",
|
|
||||||
"Me gustaría informar sobre un obstáculo en la vía que está cerca de mi casa.",
|
|
||||||
"Quiero señalar un desperfecto en la carretera cercana a mi hogar.",
|
|
||||||
"Necesito poner en conocimiento de las autoridades un bache en la calle adyacente a mi domicilio.",
|
|
||||||
"Estoy solicitando la atención de las autoridades viales para solucionar un problema en la vía cerca de mi vivienda.",
|
|
||||||
"Me gustaría expresar mi preocupación acerca de un bache en la carretera que está cerca de donde resido.",
|
|
||||||
"Quiero dejar constancia de un deterioro en la calle cercana a mi casa.",
|
|
||||||
"Estoy interesado en informar sobre un desperfecto vial en la carretera cercana a mi hogar.",
|
|
||||||
"Necesito notificar sobre un agujero en la carretera que conduce a mi residencia.",
|
|
||||||
"Me gustaría alertar sobre un bache en la vía cerca de mi hogar.",
|
|
||||||
"Quiero dar aviso sobre un desnivel en la calle próxima a mi vivienda.",
|
|
||||||
"Estoy buscando reportar un problema vial en la carretera cercana a mi casa.",
|
|
||||||
"Necesito informar sobre un obstáculo en la vía que está cerca de mi domicilio.",
|
|
||||||
"Me gustaría señalar una irregularidad en la carretera adyacente a mi residencia.",
|
|
||||||
"Quiero presentar una queja sobre un desperfecto en la calle cercana a mi hogar.",
|
|
||||||
"Estoy interesado en denunciar un socavón en la vía que conduce a mi casa.",
|
|
||||||
"Necesito notificar sobre un inconveniente en la carretera próxima a mi residencia.",
|
|
||||||
"Me gustaría informar sobre un deterioro en la carretera cerca de donde vivo.",
|
|
||||||
"Quiero expresar mi preocupación acerca de un bache en la calle que está cerca de mi domicilio.",
|
|
||||||
"Estoy solicitando la atención de las autoridades para solucionar un problema vial en las inmediaciones de mi casa.",
|
|
||||||
"Necesito poner en conocimiento de las autoridades competentes un bache en la vía cercana a mi residencia.",
|
|
||||||
"Me gustaría alertar sobre un agujero en la carretera cerca de mi hogar.",
|
|
||||||
"Quiero notificar sobre un desnivel en la calle adyacente a mi domicilio.",
|
|
||||||
"Estoy buscando reportar un desperfecto en la carretera que está cerca de mi casa.",
|
|
||||||
"Necesito dar aviso sobre un obstáculo en la vía próxima a mi hogar.",
|
|
||||||
"Me gustaría señalar una irregularidad en la carretera cercana a mi residencia.",
|
|
||||||
"Quiero presentar una queja sobre un socavón en la vía que conduce a mi residencia.",
|
|
||||||
"Estoy interesado en denunciar un inconveniente en la carretera próxima a mi casa.",
|
|
||||||
"Necesito informar sobre un deterioro en la carretera cerca de donde vivo.",
|
|
||||||
"Quiero expresar mi preocupación acerca de un bache en la calle que está cerca de mi domicilio.",
|
|
||||||
"Estoy solicitando la atención de las autoridades para solucionar un problema vial en las inmediaciones de mi vivienda.",
|
|
||||||
"Necesito poner en conocimiento de las autoridades competentes un bache en la vía cercana a mi residencia.",
|
|
||||||
"Me gustaría alertar sobre un agujero en la carretera cerca de mi hogar.",
|
|
||||||
"Quiero notificar sobre un desnivel en la calle adyacente a mi domicilio.",
|
|
||||||
"Estoy buscando reportar un desperfecto en la carretera que está cerca de mi casa.",
|
|
||||||
"Necesito dar aviso sobre un obstáculo en la vía próxima a mi hogar.",
|
|
||||||
"Me gustaría señalar una irregularidad en la carretera cercana a mi residencia.",
|
|
||||||
"Quiero presentar una queja sobre un socavón en la vía que conduce a mi residencia.",
|
|
||||||
"Estoy interesado en denunciar un inconveniente en la carretera próxima a mi casa.",
|
|
||||||
"Necesito informar sobre un deterioro en la carretera cerca de donde vivo.",
|
|
||||||
"Quiero expresar mi preocupación acerca de un bache en la calle que está cerca de mi domicilio.",
|
|
||||||
"Estoy solicitando la atención de las autoridades para solucionar un problema vial en las inmediaciones de mi vivienda.",
|
|
||||||
"Necesito poner en conocimiento de las autoridades competentes un bache en la vía cercana a mi residencia."
|
|
||||||
]
|
|
||||||
|
|
||||||
train_examples = []
|
train_examples = []
|
||||||
for q in queries:
|
for i in queries_Categoricos.keys():
|
||||||
train_examples.append(InputExample(texts=[ 'Reportar un bacheo',q]))
|
|
||||||
|
|
||||||
print(train_examples)
|
for j in queries_Categoricos[i]:
|
||||||
train_dataloader = DataLoader(train_examples, shuffle=True, batch_size=2)
|
i=unidecode(i).strip().lower()
|
||||||
print(train_dataloader)
|
j=unidecode(j).strip().lower()
|
||||||
num_epochs = 2
|
|
||||||
warmup_steps = int(len(train_dataloader) * num_epochs * 0.1) #10% of train data
|
|
||||||
|
|
||||||
modelST.fit(train_objectives=[(train_dataloader, train_loss)],epochs=num_epochs,warmup_steps=2)
|
train_examples.append(InputExample(texts=[ i,j]))
|
||||||
save_path = './Finetuning/%s/'%(model)
|
|
||||||
# Save the model
|
|
||||||
|
train_dataloader = DataLoader(train_examples, shuffle=True, batch_size=5)#16
|
||||||
|
print(len(train_dataloader))
|
||||||
|
modelST.fit(train_objectives=[(train_dataloader, train_loss)],epochs=extractConfig(dataOut=["params","num_epochs"]),warmup_steps=extractConfig(dataOut=["params","warmup_steps"]))
|
||||||
|
save_path = './%s/%s/model/'%(nameModel,baseModel)
|
||||||
modelST.save(save_path)
|
modelST.save(save_path)
|
||||||
|
|
||||||
|
params={"entrenamiento":entrenamiento,"baseModel":baseModel}
|
||||||
|
params.update(extractConfig(dataOut="params"))
|
||||||
|
saveConfig(params)
|
||||||
|
saveData(queries_Categoricos)
|
||||||
|
|
||||||
|
|
457
metrics.py
457
metrics.py
|
@ -5,7 +5,7 @@ from langchain.vectorstores import FAISS
|
||||||
from langchain.pydantic_v1 import BaseModel
|
from langchain.pydantic_v1 import BaseModel
|
||||||
from langchain.schema.embeddings import Embeddings
|
from langchain.schema.embeddings import Embeddings
|
||||||
from sentence_transformers import SentenceTransformer
|
from sentence_transformers import SentenceTransformer
|
||||||
from scipy.spatial import distance
|
|
||||||
from typing import List
|
from typing import List
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
@ -18,13 +18,27 @@ from unidecode import unidecode
|
||||||
from nltk.corpus import stopwords
|
from nltk.corpus import stopwords
|
||||||
import seaborn as sns
|
import seaborn as sns
|
||||||
import argparse
|
import argparse
|
||||||
|
from scipy.spatial import distance
|
||||||
|
from pathlib import Path
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from nltk.corpus import stopwords
|
||||||
|
import nltk
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument("-f", "--file", help="Nombre de archivo a procesar")
|
parser.add_argument("-f", "--file", help="Nombre de archivo a procesar")
|
||||||
parser.add_argument("-d", "--distance", default="distance")
|
parser.add_argument("-d", "--distance", default="distance")
|
||||||
parser.add_argument("-m", "--models", default="All")
|
parser.add_argument("-m", "--models", default="All")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
def extractConfig(nameModel="Modelo_embedding_Mexico_Puebla",relPath="./conf/experiment_config.json",dataOut="train_dataset_pos"):
|
||||||
|
configPath=Path(relPath)
|
||||||
|
with open(configPath, 'r', encoding='utf-8') as file:
|
||||||
|
config = json.load(file)[nameModel]
|
||||||
|
if type(dataOut) is list and len(dataOut)==2:
|
||||||
|
Output= config[dataOut[0]][dataOut[1]]
|
||||||
|
else:
|
||||||
|
Output= config[dataOut]
|
||||||
|
return Output
|
||||||
|
|
||||||
# if args.file:
|
# if args.file:
|
||||||
# print ("El nombre de archivo a procesar es: ", )
|
# print ("El nombre de archivo a procesar es: ", )
|
||||||
|
@ -95,15 +109,17 @@ def loadmodelEmb(model_name = "embeddings/all-MiniLM-L6-v2",model_kwargs = {'dev
|
||||||
st = SentenceTransformer(model_name)
|
st = SentenceTransformer(model_name)
|
||||||
return st
|
return st
|
||||||
|
|
||||||
|
pathsqlite=extractConfig(dataOut="pathsqlite")
|
||||||
def loadCopysAndData(pathsqlite="motor.sqlite"):
|
def loadCopysAndData(pathsqlite=pathsqlite):
|
||||||
con = sqlite3.connect(pathsqlite)
|
con = sqlite3.connect(pathsqlite)
|
||||||
copies_df = pd.read_sql_query("SELECT * from copies", con)
|
copies_df = pd.read_sql_query("SELECT * from copies WHERE intentionality IS NOT NULL", con)
|
||||||
copiesT = copies_df[copies_df.copy_start =="T"]
|
copiesT = copies_df
|
||||||
copiesT=copiesT[["copy_message","id","name"]]
|
copiesT=copiesT[["copy_message","id","name","intentionality"]]
|
||||||
|
#print(copiesT)
|
||||||
data = copiesT
|
data = copiesT
|
||||||
|
#print(data)
|
||||||
B=DataFrameLoader(data,page_content_column="copy_message")
|
B=DataFrameLoader(data,page_content_column="copy_message")
|
||||||
B2=DataFrameLoader(data,page_content_column="name")
|
B2=DataFrameLoader(data,page_content_column="intentionality")
|
||||||
documents=B.load()
|
documents=B.load()
|
||||||
documents2=B2.load()
|
documents2=B2.load()
|
||||||
return documents,documents2
|
return documents,documents2
|
||||||
|
@ -114,13 +130,13 @@ def makeFaissdb(documents,folder_path,embedding):
|
||||||
pass
|
pass
|
||||||
db = FAISS.from_documents(documents, embedding)
|
db = FAISS.from_documents(documents, embedding)
|
||||||
FAISS.save_local(db,folder_path=folder_path)
|
FAISS.save_local(db,folder_path=folder_path)
|
||||||
return [db,folder_path]
|
return db
|
||||||
|
def FinderDbs(query,dbs,filtred=False,th=5000):
|
||||||
def FinderDbs(query,dbs,filtred=False,th=1.2):
|
|
||||||
AllData={}
|
AllData={}
|
||||||
for dbt in dbs:
|
for dbt in dbs:
|
||||||
Sal = dbt.similarity_search_with_score(query,4)
|
Sal = dbt.similarity_search_with_score(query,4)
|
||||||
for output in Sal:
|
for output in Sal:
|
||||||
|
#print(output)
|
||||||
if output[0].metadata["id"] in AllData.keys():
|
if output[0].metadata["id"] in AllData.keys():
|
||||||
AllData[output[0].metadata["id"]]["d"]=min([AllData[output[0].metadata["id"]]["d"]-0.1,output[1]-0.1])
|
AllData[output[0].metadata["id"]]["d"]=min([AllData[output[0].metadata["id"]]["d"]-0.1,output[1]-0.1])
|
||||||
else:
|
else:
|
||||||
|
@ -131,7 +147,7 @@ def FinderDbs(query,dbs,filtred=False,th=1.2):
|
||||||
if filtred:
|
if filtred:
|
||||||
filtredData={}
|
filtredData={}
|
||||||
for row in AllData.keys():
|
for row in AllData.keys():
|
||||||
if AllData[row]["d"]<1.2:
|
if AllData[row]["d"]<th:
|
||||||
filtredData[row]=AllData[row]
|
filtredData[row]=AllData[row]
|
||||||
filtredData=dict(sorted(filtredData.items(), key=lambda item: item[1]["d"]))
|
filtredData=dict(sorted(filtredData.items(), key=lambda item: item[1]["d"]))
|
||||||
return filtredData,filtredData.keys()
|
return filtredData,filtredData.keys()
|
||||||
|
@ -140,251 +156,23 @@ def FinderDbs(query,dbs,filtred=False,th=1.2):
|
||||||
else:
|
else:
|
||||||
AllData=dict(sorted(AllData.items(), key=lambda item: item[1]["d"]))
|
AllData=dict(sorted(AllData.items(), key=lambda item: item[1]["d"]))
|
||||||
return AllData,AllData.keys()
|
return AllData,AllData.keys()
|
||||||
if args.models=="All":
|
|
||||||
models=["all-MiniLM-L12-v2","paraphrase-MiniLM-L3-v2" , "all-MiniLM-L6-v2","all-mpnet-base-v2","multi-qa-mpnet-base-dot-v1"]
|
|
||||||
else:
|
|
||||||
models=["embeddings/all-mpnet-base-v2","Finetuning/embeddings/all-mpnet-base-v2"]
|
|
||||||
|
|
||||||
queries_bacheo=["Quiero reportar un bacheo",
|
|
||||||
"reportar un bache en mi comunidad",
|
|
||||||
"¿Como reporto un bacheo en mi comunidad?",
|
|
||||||
"Quiero informar sobre un hoyo en la calle cerca de mi hogar.",
|
|
||||||
"Necesito reportar un bache en la vía cercana a mi residencia.",
|
|
||||||
"Estoy preocupado por un hueco en la carretera que está cerca de donde vivo.",
|
|
||||||
"Me gustaría notificar sobre un desnivel en la carretera en las inmediaciones de mi domicilio.",
|
|
||||||
"Quiero presentar una queja sobre un socavón en la vía que conduce a mi casa.",
|
|
||||||
"Estoy interesado en denunciar una irregularidad en la calle cercana a mi vivienda.",
|
|
||||||
"Necesito dar aviso sobre un problema en la carretera próxima a mi residencia.",
|
|
||||||
"Estoy observando un inconveniente en la carretera cerca de donde vivo y quisiera reportarlo.",
|
|
||||||
"Me gustaría informar sobre un obstáculo en la vía que está cerca de mi casa.",
|
|
||||||
"Quiero señalar un desperfecto en la carretera cercana a mi hogar.",
|
|
||||||
"Necesito poner en conocimiento de las autoridades un bache en la calle adyacente a mi domicilio.",
|
|
||||||
"Estoy solicitando la atención de las autoridades viales para solucionar un problema en la vía cerca de mi vivienda.",
|
|
||||||
"Me gustaría expresar mi preocupación acerca de un bache en la carretera que está cerca de donde resido.",
|
|
||||||
"Quiero dejar constancia de un deterioro en la calle cercana a mi casa.",
|
|
||||||
"Estoy interesado en informar sobre un desperfecto vial en la carretera cercana a mi hogar.",
|
|
||||||
"Necesito notificar sobre un agujero en la carretera que conduce a mi residencia.",
|
|
||||||
"Me gustaría alertar sobre un bache en la vía cerca de mi hogar.",
|
|
||||||
"Quiero dar aviso sobre un desnivel en la calle próxima a mi vivienda.",
|
|
||||||
"Estoy buscando reportar un problema vial en la carretera cercana a mi casa.",
|
|
||||||
"Necesito informar sobre un obstáculo en la vía que está cerca de mi domicilio.",
|
|
||||||
"Me gustaría señalar una irregularidad en la carretera adyacente a mi residencia.",
|
|
||||||
"Quiero presentar una queja sobre un desperfecto en la calle cercana a mi hogar.",
|
|
||||||
"Estoy interesado en denunciar un socavón en la vía que conduce a mi casa.",
|
|
||||||
"Necesito notificar sobre un inconveniente en la carretera próxima a mi residencia.",
|
|
||||||
"Me gustaría informar sobre un deterioro en la carretera cerca de donde vivo.",
|
|
||||||
"Quiero expresar mi preocupación acerca de un bache en la calle que está cerca de mi domicilio.",
|
|
||||||
"Estoy solicitando la atención de las autoridades para solucionar un problema vial en las inmediaciones de mi casa.",
|
|
||||||
"Necesito poner en conocimiento de las autoridades competentes un bache en la vía cercana a mi residencia.",
|
|
||||||
"Me gustaría alertar sobre un agujero en la carretera cerca de mi hogar.",
|
|
||||||
"Quiero notificar sobre un desnivel en la calle adyacente a mi domicilio.",
|
|
||||||
"Estoy buscando reportar un desperfecto en la carretera que está cerca de mi casa.",
|
|
||||||
"Necesito dar aviso sobre un obstáculo en la vía próxima a mi hogar.",
|
|
||||||
"Me gustaría señalar una irregularidad en la carretera cercana a mi residencia.",
|
|
||||||
"Quiero presentar una queja sobre un socavón en la vía que conduce a mi residencia.",
|
|
||||||
"Estoy interesado en denunciar un inconveniente en la carretera próxima a mi casa.",
|
|
||||||
"Necesito informar sobre un deterioro en la carretera cerca de donde vivo.",
|
|
||||||
"Quiero expresar mi preocupación acerca de un bache en la calle que está cerca de mi domicilio.",
|
|
||||||
"Estoy solicitando la atención de las autoridades para solucionar un problema vial en las inmediaciones de mi vivienda.",
|
|
||||||
"Necesito poner en conocimiento de las autoridades competentes un bache en la vía cercana a mi residencia.",
|
|
||||||
"Me gustaría alertar sobre un agujero en la carretera cerca de mi hogar.",
|
|
||||||
"Quiero notificar sobre un desnivel en la calle adyacente a mi domicilio.",
|
|
||||||
"Estoy buscando reportar un desperfecto en la carretera que está cerca de mi casa.",
|
|
||||||
"Necesito dar aviso sobre un obstáculo en la vía próxima a mi hogar.",
|
|
||||||
"Me gustaría señalar una irregularidad en la carretera cercana a mi residencia.",
|
|
||||||
"Quiero presentar una queja sobre un socavón en la vía que conduce a mi residencia.",
|
|
||||||
"Estoy interesado en denunciar un inconveniente en la carretera próxima a mi casa.",
|
|
||||||
"Necesito informar sobre un deterioro en la carretera cerca de donde vivo.",
|
|
||||||
"Quiero expresar mi preocupación acerca de un bache en la calle que está cerca de mi domicilio.",
|
|
||||||
"Estoy solicitando la atención de las autoridades para solucionar un problema vial en las inmediaciones de mi vivienda.",
|
|
||||||
"Necesito poner en conocimiento de las autoridades competentes un bache en la vía cercana a mi residencia."
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# for model in models:
|
|
||||||
# emb=loadmodelEmb(model_name = model)
|
|
||||||
# emb2=CustomEmbedding()
|
|
||||||
# #print(inspect.getsource(HuggingFaceEmbeddings))
|
|
||||||
# documents,documents2=loadCopysAndData()
|
|
||||||
# db=makeFaissdb(documents,"TCopies",emb2)
|
|
||||||
# db2=makeFaissdb(documents2,"Tnames",emb2)
|
|
||||||
# for Fdb in [db,db2]:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# for query in queries:
|
nameModel="Modelo_embedding_Mexico_Puebla_hiiamasid"
|
||||||
# point=0
|
valid_path = extractConfig(nameModel=nameModel,dataOut="valid_dataset")
|
||||||
# AllData=FinderDbs(query,[Fdb[0]])
|
baseModel= extractConfig(nameModel=nameModel,dataOut="base_model")
|
||||||
# print(model)
|
path_model=extractConfig(nameModel=nameModel,dataOut="path_model")
|
||||||
# print(Fdb[1])
|
with open(valid_path, 'r', encoding='utf-8') as file:
|
||||||
# if 32 in AllData[1]:
|
queries_Categoricos = json.load(file)
|
||||||
# point+=1
|
models=["./"+path_model]
|
||||||
# if 32 == list(AllData[1])[0]:
|
#print(1111,models)
|
||||||
# point+=9
|
copies_text=queries_Categoricos.keys()
|
||||||
# print(AllData[1],point)
|
|
||||||
|
|
||||||
|
try:
|
||||||
queries_Categoricos={
|
os.makedirs("./%s/Sta"%(path_model), exist_ok = True)
|
||||||
"formas_de_reportar_bache": [
|
except OSError as error:
|
||||||
"Quiero informar sobre un hoyo en la calle cerca de mi hogar.",
|
pass
|
||||||
"Necesito reportar un bache en la vía cercana a mi residencia.",
|
|
||||||
"Estoy preocupado por un hueco en la carretera que está cerca de donde vivo.",
|
|
||||||
"Me gustaría notificar sobre un desnivel en la carretera en las inmediaciones de mi domicilio.",
|
|
||||||
"Quiero presentar una queja sobre un socavón en la vía que conduce a mi casa.",
|
|
||||||
"Estoy interesado en denunciar una irregularidad en la calle cercana a mi vivienda.",
|
|
||||||
"Necesito dar aviso sobre un problema en la carretera próxima a mi residencia.",
|
|
||||||
"Estoy observando un inconveniente en la carretera cerca de donde vivo y quisiera reportarlo.",
|
|
||||||
"Me gustaría informar sobre un obstáculo en la vía que está cerca de mi casa.",
|
|
||||||
"Quiero señalar un desperfecto en la carretera cercana a mi hogar.",
|
|
||||||
"Necesito poner en conocimiento de las autoridades un bache en la calle adyacente a mi domicilio.",
|
|
||||||
"Estoy solicitando la atención de las autoridades viales para solucionar un problema en la vía cerca de mi vivienda.",
|
|
||||||
"Me gustaría expresar mi preocupación acerca de un bache en la carretera que está cerca de donde resido.",
|
|
||||||
"Quiero dejar constancia de un deterioro en la calle cercana a mi casa.",
|
|
||||||
"Estoy interesado en informar sobre un desperfecto vial en la carretera cercana a mi hogar.",
|
|
||||||
"Necesito notificar sobre un agujero en la carretera que conduce a mi residencia.",
|
|
||||||
"Me gustaría alertar sobre un bache en la vía cerca de mi hogar.",
|
|
||||||
"Quiero dar aviso sobre un desnivel en la calle próxima a mi vivienda.",
|
|
||||||
"Estoy buscando reportar un problema vial en la carretera cercana a mi casa.",
|
|
||||||
"Necesito informar sobre un obstáculo en la vía que está cerca de mi domicilio.",
|
|
||||||
"Me gustaría señalar una irregularidad en la carretera adyacente a mi residencia.",
|
|
||||||
"Quiero presentar una queja sobre un desperfecto en la calle cercana a mi hogar.",
|
|
||||||
"Estoy interesado en denunciar un socavón en la vía que conduce a mi casa.",
|
|
||||||
"Necesito notificar sobre un inconveniente en la carretera próxima a mi residencia.",
|
|
||||||
"Me gustaría informar sobre un deterioro en la carretera cerca de donde vivo.",
|
|
||||||
"Quiero expresar mi preocupación acerca de un bache en la calle que está cerca de mi domicilio.",
|
|
||||||
"Estoy solicitando la atención de las autoridades para solucionar un problema vial en las inmediaciones de mi casa.",
|
|
||||||
"Necesito poner en conocimiento de las autoridades competentes un bache en la vía cercana a mi residencia.",
|
|
||||||
"Me gustaría alertar sobre un agujero en la carretera cerca de mi hogar.",
|
|
||||||
"Quiero notificar sobre un desnivel en la calle adyacente a mi domicilio.",
|
|
||||||
"Estoy buscando reportar un desperfecto en la carretera que está cerca de mi casa.",
|
|
||||||
"Necesito dar aviso sobre un obstáculo en la vía próxima a mi hogar.",
|
|
||||||
"Me gustaría señalar una irregularidad en la carretera cercana a mi residencia.",
|
|
||||||
"Quiero presentar una queja sobre un socavón en la vía que conduce a mi residencia.",
|
|
||||||
"Estoy interesado en denunciar un inconveniente en la carretera próxima a mi casa.",
|
|
||||||
"Necesito informar sobre un deterioro en la carretera cerca de donde vivo.",
|
|
||||||
"Quiero expresar mi preocupación acerca de un bache en la calle que está cerca de mi domicilio.",
|
|
||||||
"Estoy solicitando la atención de las autoridades para solucionar un problema vial en las inmediaciones de mi vivienda.",
|
|
||||||
"Necesito poner en conocimiento de las autoridades competentes un bache en la vía cercana a mi residencia.",
|
|
||||||
"Me gustaría alertar sobre un agujero en la carretera cerca de mi hogar.",
|
|
||||||
"Quiero notificar sobre un desnivel en la calle adyacente a mi domicilio.",
|
|
||||||
"Estoy buscando reportar un desperfecto en la carretera que está cerca de mi casa.",
|
|
||||||
"Necesito dar aviso sobre un obstáculo en la vía próxima a mi hogar.",
|
|
||||||
"Me gustaría señalar una irregularidad en la carretera cercana a mi residencia.",
|
|
||||||
"Quiero presentar una queja sobre un socavón en la vía que conduce a mi residencia.",
|
|
||||||
"Estoy interesado en denunciar un inconveniente en la carretera próxima a mi casa.",
|
|
||||||
"Necesito informar sobre un deterioro en la carretera cerca de donde vivo.",
|
|
||||||
"Quiero expresar mi preocupación acerca de un bache en la calle que está cerca de mi domicilio.",
|
|
||||||
"Estoy solicitando la atención de las autoridades para solucionar un problema vial en las inmediaciones de mi vivienda.",
|
|
||||||
"Necesito poner en conocimiento de las autoridades competentes un bache en la vía cercana a mi residencia."
|
|
||||||
],
|
|
||||||
"formas_de_preguntar_agenda_cultural_puebla": [
|
|
||||||
"¿Me podrías proporcionar información sobre los eventos culturales en Puebla?",
|
|
||||||
"Quiero estar al tanto de lo que está pasando en la escena cultural de Puebla.",
|
|
||||||
"¿Dónde puedo encontrar detalles sobre las actividades culturales en Puebla?",
|
|
||||||
"Estoy interesado en saber qué eventos culturales hay en Puebla.",
|
|
||||||
"Me gustaría conocer la programación cultural de Puebla.",
|
|
||||||
"¿Puedes decirme cuáles son los eventos culturales próximos en Puebla?",
|
|
||||||
"Estoy buscando información sobre la oferta cultural en Puebla.",
|
|
||||||
"¿Dónde puedo obtener información sobre la vida cultural de Puebla?",
|
|
||||||
"Estoy buscando recomendaciones sobre eventos culturales en Puebla.",
|
|
||||||
"¿Qué está pasando en el ámbito cultural en Puebla?",
|
|
||||||
"Me gustaría estar al tanto de los eventos culturales en Puebla.",
|
|
||||||
"¿Puedes proporcionarme la agenda de la cultura en Puebla?",
|
|
||||||
"Quiero saber cuáles son las propuestas culturales en Puebla.",
|
|
||||||
"¿Cuáles son los eventos culturales destacados en Puebla?",
|
|
||||||
"Estoy interesado en la escena cultural de Puebla, ¿dónde puedo encontrar información?",
|
|
||||||
"¿Dónde puedo consultar los eventos culturales que se celebrarán en Puebla?",
|
|
||||||
"Necesito saber qué actividades culturales puedo disfrutar en Puebla.",
|
|
||||||
"¿Me puedes indicar los acontecimientos culturales en Puebla?",
|
|
||||||
"Quiero informarme acerca de la oferta cultural de Puebla.",
|
|
||||||
"¿Dónde puedo obtener un listado de los eventos culturales en Puebla?",
|
|
||||||
"Estoy buscando información sobre la vida artística en Puebla.",
|
|
||||||
"¿Qué opciones culturales hay disponibles en Puebla en estos momentos?",
|
|
||||||
"Me gustaría conocer los eventos culturales previstos en Puebla.",
|
|
||||||
"¿Puedes recomendarme actividades culturales en Puebla?",
|
|
||||||
"Quiero enterarme de las novedades culturales de Puebla.",
|
|
||||||
"¿Cuál es la agenda de eventos culturales en Puebla?",
|
|
||||||
"Estoy interesado en asistir a eventos culturales en Puebla, ¿dónde puedo encontrar información?",
|
|
||||||
"¿Dónde puedo consultar la programación cultural actual de Puebla?",
|
|
||||||
"Necesito saber cuáles son las propuestas culturales más recientes en Puebla.",
|
|
||||||
"¿Me puedes decir qué eventos culturales están en marcha en Puebla?",
|
|
||||||
"Estoy buscando opciones para disfrutar de la cultura en Puebla.",
|
|
||||||
"¿Qué actividades culturales se ofrecen en Puebla en este momento?",
|
|
||||||
"Me gustaría estar al tanto de los espectáculos culturales en Puebla.",
|
|
||||||
"¿Puedes proporcionarme información sobre los eventos culturales próximos en Puebla?",
|
|
||||||
"Quiero saber qué está pasando en la escena cultural de Puebla.",
|
|
||||||
"¿Cuál es la oferta cultural actual en Puebla?",
|
|
||||||
"Estoy interesado en conocer los eventos culturales destacados de Puebla.",
|
|
||||||
"¿Dónde puedo encontrar la programación cultural más completa de Puebla?",
|
|
||||||
"Necesito detalles sobre la agenda cultural de Puebla.",
|
|
||||||
"¿Me podrías decir cuáles son las opciones culturales en Puebla en estos días?",
|
|
||||||
"Quiero informarme sobre los eventos culturales que no me puedo perder en Puebla.",
|
|
||||||
"¿Puedes recomendarme eventos culturales en Puebla?",
|
|
||||||
"Estoy buscando información sobre la agenda cultural y artística de Puebla."
|
|
||||||
],
|
|
||||||
"formas_de_solicitar_informacion_musica": [
|
|
||||||
"Estoy interesado en obtener datos sobre talleres de música.",
|
|
||||||
"Necesito información acerca de cursos de música.",
|
|
||||||
"Quiero conocer más sobre talleres de formación musical.",
|
|
||||||
"¿Puede proporcionarme detalles sobre programas de música?",
|
|
||||||
"Me gustaría recibir información sobre clases de música.",
|
|
||||||
"Estoy buscando datos acerca de talleres para aprender música.",
|
|
||||||
"¿Puede darme detalles sobre cursos de instrucción musical?",
|
|
||||||
"Quiero saber más sobre oportunidades de aprendizaje musical.",
|
|
||||||
"Estoy interesado en talleres para desarrollar habilidades musicales.",
|
|
||||||
"Necesito información sobre clases prácticas de música.",
|
|
||||||
"¿Puede brindarme datos sobre programas de formación musical?",
|
|
||||||
"Me gustaría conocer opciones para aprender música.",
|
|
||||||
"Estoy en busca de talleres musicales, ¿puede ayudarme?",
|
|
||||||
"Quiero obtener detalles sobre cursos de música disponibles.",
|
|
||||||
"Necesito información sobre talleres de instrucción musical.",
|
|
||||||
"¿Puede proporcionarme datos sobre clases para músicos?",
|
|
||||||
"Me gustaría saber más sobre oportunidades de formación musical.",
|
|
||||||
"Estoy interesado en aprender música, ¿puede orientarme?",
|
|
||||||
"Quiero conocer más sobre talleres para mejorar en música.",
|
|
||||||
"Necesito información sobre programas de capacitación musical.",
|
|
||||||
"¿Puede darme detalles sobre cursos de formación en música?",
|
|
||||||
"Estoy buscando opciones para aprender a tocar instrumentos.",
|
|
||||||
"Me gustaría recibir información sobre clases de educación musical.",
|
|
||||||
"Estoy interesado en talleres de música, ¿puede asesorarme?",
|
|
||||||
"Quiero obtener datos sobre oportunidades de estudio musical.",
|
|
||||||
"Necesito información sobre talleres de música en mi área.",
|
|
||||||
"¿Puede proporcionarme detalles sobre cursos de música locales?",
|
|
||||||
"Me gustaría saber más sobre clases de música para principiantes.",
|
|
||||||
"Estoy en busca de talleres de formación musical asequibles.",
|
|
||||||
"Quiero conocer opciones para mejorar mis habilidades musicales.",
|
|
||||||
"Estoy interesado en aprender música de manera profesional.",
|
|
||||||
"Necesito información sobre talleres de música para niños.",
|
|
||||||
"¿Puede darme datos sobre cursos de música para adultos?",
|
|
||||||
"Me gustaría recibir información sobre clases de canto.",
|
|
||||||
"Estoy buscando oportunidades de instrucción musical avanzada.",
|
|
||||||
"Quiero obtener detalles sobre talleres de producción musical.",
|
|
||||||
"Necesito información sobre programas de educación musical en línea.",
|
|
||||||
"¿Puede proporcionarme detalles sobre cursos de música en vivo?",
|
|
||||||
"Me gustaría saber más sobre clases de composición musical.",
|
|
||||||
"Estoy interesado en talleres de música clásica.",
|
|
||||||
"Quiero conocer opciones para estudiar teoría musical.",
|
|
||||||
"Necesito información sobre talleres de música contemporánea.",
|
|
||||||
"¿Puede darme datos sobre cursos de improvisación musical?",
|
|
||||||
"Me gustaría recibir información sobre clases de jazz.",
|
|
||||||
"Estoy buscando oportunidades de formación en música electrónica.",
|
|
||||||
"Quiero obtener detalles sobre talleres de guitarra.",
|
|
||||||
"Necesito información sobre programas de educación musical para la infancia.",
|
|
||||||
"¿Puede proporcionarme detalles sobre cursos de producción de música electrónica?",
|
|
||||||
"Me gustaría saber más sobre clases de música para adultos mayores.",
|
|
||||||
"Estoy interesado en talleres de música étnica y world music."
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
copies_text=["Saber agenda cultural de Puebla",
|
|
||||||
"Información de talleres de musica",
|
|
||||||
"Informacion de talleres de danza urbana",
|
|
||||||
"Obtener uso de suelo",
|
|
||||||
"Reportar un bacheo.",
|
|
||||||
"Informacion general de parquimetros",
|
|
||||||
"Informacion Parque Benito Juárez"
|
|
||||||
]
|
|
||||||
|
|
||||||
def plotVioin(Sal,Listqueries):
|
def plotVioin(Sal,Listqueries):
|
||||||
NewData=pd.DataFrame.from_dict(Sal)
|
NewData=pd.DataFrame.from_dict(Sal)
|
||||||
|
@ -395,8 +183,8 @@ def plotVioin(Sal,Listqueries):
|
||||||
|
|
||||||
fig=plt.get_figure()
|
fig=plt.get_figure()
|
||||||
fig.set_size_inches(17.7, 12.27)
|
fig.set_size_inches(17.7, 12.27)
|
||||||
fig.savefig('sns_violin_plot%s.png'%(Listqueries), dpi=300)
|
fig.savefig('./%s/%s/Sta/sns_violin_plot%s.png'%(nameModel,baseModel,Listqueries), dpi=300)
|
||||||
NewData.to_csv("NewData%s.csv"%(Listqueries))
|
NewData.to_csv("./%s/%s/Sta/NewData%s.csv"%(nameModel,baseModel,Listqueries))
|
||||||
def plotViointime(Sal,Listqueries):
|
def plotViointime(Sal,Listqueries):
|
||||||
NewData=pd.DataFrame.from_dict(Sal)
|
NewData=pd.DataFrame.from_dict(Sal)
|
||||||
|
|
||||||
|
@ -406,8 +194,8 @@ def plotViointime(Sal,Listqueries):
|
||||||
|
|
||||||
fig=plt.get_figure()
|
fig=plt.get_figure()
|
||||||
fig.set_size_inches(17.7, 12.27)
|
fig.set_size_inches(17.7, 12.27)
|
||||||
fig.savefig('sns_violin_plot_time%s.png'%(Listqueries), dpi=300)
|
fig.savefig('./%s/%s/Sta/sns_violin_plot_time%s.png'%(nameModel,baseModel,Listqueries), dpi=300)
|
||||||
NewData.to_csv("NewData%s.csv"%(Listqueries))
|
NewData.to_csv("./%s/%s/Sta/NewData%s.csv"%(nameModel,baseModel,Listqueries))
|
||||||
def queries_CatPlot(Listqueries):
|
def queries_CatPlot(Listqueries):
|
||||||
Sal=[]
|
Sal=[]
|
||||||
queries=queries_Categoricos[Listqueries]
|
queries=queries_Categoricos[Listqueries]
|
||||||
|
@ -432,9 +220,162 @@ def queries_CatPlot(Listqueries):
|
||||||
if args.distance=="time":
|
if args.distance=="time":
|
||||||
plotViointime(Sal,Listqueries)
|
plotViointime(Sal,Listqueries)
|
||||||
|
|
||||||
|
def queries_CatSta():
|
||||||
|
Sal=[]
|
||||||
|
for model in models:
|
||||||
|
for copy_text in copies_text:
|
||||||
|
global emb
|
||||||
|
#print(2222,model)
|
||||||
|
emb=loadmodelEmb(model_name = model+"/model")
|
||||||
|
emb2=CustomEmbedding()
|
||||||
|
emb2.embed_query("test 123321")
|
||||||
|
Sal=[]
|
||||||
|
for query in queries_Categoricos[copy_text]:
|
||||||
|
t=time.time()
|
||||||
|
A={"model":model,
|
||||||
|
"query":query,
|
||||||
|
"type":"insider",
|
||||||
|
"copy_test":copy_text,
|
||||||
|
"distance":distance.cosine(emb2.embed_query(query),emb2.embed_query(copy_text)),
|
||||||
|
"time":time.time()-t
|
||||||
|
}
|
||||||
|
Sal.append(A)
|
||||||
|
outdata=set(queries_Categoricos.keys())
|
||||||
|
outdata.remove(copy_text)
|
||||||
|
for query in outdata:
|
||||||
|
t=time.time()
|
||||||
|
A={"model":model,
|
||||||
|
"query":query,
|
||||||
|
"type":"outsider_n1",
|
||||||
|
"copy_test":copy_text,
|
||||||
|
"distance":distance.cosine(emb2.embed_query(query),emb2.embed_query(copy_text)),
|
||||||
|
"time":time.time()-t
|
||||||
|
}
|
||||||
|
Sal.append(A)
|
||||||
|
outdata2=queries_Categoricos[query]
|
||||||
|
for query2 in outdata2:
|
||||||
|
t=time.time()
|
||||||
|
A={"model":model,
|
||||||
|
"query":query2,
|
||||||
|
"type":"outsider_n2",
|
||||||
|
"copy_test":copy_text,
|
||||||
|
"distance":distance.cosine(emb2.embed_query(query2),emb2.embed_query(copy_text)),
|
||||||
|
"time":time.time()-t
|
||||||
|
}
|
||||||
|
Sal.append(A)
|
||||||
|
df=pd.DataFrame(Sal)
|
||||||
|
df.to_csv("./%s/Sta/NewData%s.csv"%(path_model,copy_text[0:50]))
|
||||||
|
return Sal
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def queries_CatSta_in(queries_Categoricos,model="embeddings/all-mpnet-base-v2"):
|
||||||
|
global emb
|
||||||
|
emb=loadmodelEmb(model_name = model)
|
||||||
|
emb2=CustomEmbedding()
|
||||||
|
emb2.embed_query("test 123321")
|
||||||
|
Sal=[]
|
||||||
|
for objetive in queries_Categoricos.keys():
|
||||||
|
for query in queries_Categoricos[objetive]:
|
||||||
|
t=time.time()
|
||||||
|
A={"model":model,
|
||||||
|
"query":query,
|
||||||
|
"type":"insider",
|
||||||
|
"objetive":objetive,
|
||||||
|
"distance":distance.cosine(emb2.embed_query(query),emb2.embed_query(objetive)),
|
||||||
|
"time":time.time()-t
|
||||||
|
}
|
||||||
|
Sal.append(A)
|
||||||
|
return Sal
|
||||||
|
|
||||||
|
def queries_CatSta_out(queries_Categoricos,model="embeddings/all-mpnet-base-v2"):
|
||||||
|
global emb
|
||||||
|
emb=loadmodelEmb(model_name = model)
|
||||||
|
emb2=CustomEmbedding()
|
||||||
|
emb2.embed_query("test 123321")
|
||||||
|
Sal=[]
|
||||||
|
for objetive in queries_Categoricos.keys():
|
||||||
|
outdata=set(queries_Categoricos.keys())
|
||||||
|
outdata.remove(objetive)
|
||||||
|
for outdataObj in list(outdata):
|
||||||
|
for query in queries_Categoricos[outdataObj]:
|
||||||
|
t=time.time()
|
||||||
|
A={"model":model,
|
||||||
|
"query":query,
|
||||||
|
"type":"outsider",
|
||||||
|
"objetive":objetive,
|
||||||
|
"distance":distance.cosine(emb2.embed_query(query),emb2.embed_query(objetive)),
|
||||||
|
"time":time.time()-t
|
||||||
|
}
|
||||||
|
Sal.append(A)
|
||||||
|
return Sal
|
||||||
|
|
||||||
|
queries_CatSta()
|
||||||
|
|
||||||
|
def evalDb(text,dbs):
|
||||||
|
AllData=FinderDbs(text,dbs,filtred=5)
|
||||||
|
print(AllData)
|
||||||
|
if AllData:
|
||||||
|
AllData = list(AllData)
|
||||||
|
dis=[]
|
||||||
|
id=[]
|
||||||
|
for k,i in enumerate(AllData[0].items()):
|
||||||
|
dis.append(str(i[1]['d']))
|
||||||
|
id.append(i[0])
|
||||||
|
return dis,id
|
||||||
|
|
||||||
|
def EvalClass(dbs):
|
||||||
|
valid_path = Path(extractConfig(dataOut="valid_dataset_Class"))
|
||||||
|
with open(valid_path, 'r', encoding='utf-8') as file:
|
||||||
|
queries_Categoricos = json.load(file)
|
||||||
|
Sal = []
|
||||||
|
for i in queries_Categoricos.keys():
|
||||||
|
for j in queries_Categoricos[i]:
|
||||||
|
i=unidecode(i).strip().lower()
|
||||||
|
j=unidecode(j).strip().lower()
|
||||||
|
score = 1.0
|
||||||
|
dis,id=evalDb(j,dbs)
|
||||||
|
|
||||||
|
try:
|
||||||
|
pass
|
||||||
|
#print(j,i,id, dis[0])
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
#print(j,i,id)
|
||||||
|
Top8=0
|
||||||
|
Top1=0
|
||||||
|
Distancia=99
|
||||||
|
if int(i) in id:
|
||||||
|
Top8=1
|
||||||
|
try:
|
||||||
|
if int(i)==id[0]:
|
||||||
|
Top1=1
|
||||||
|
Distancia=dis[0]
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
Sal.append([j,i,Top8,Top1,Distancia])
|
||||||
|
df=pd.DataFrame(Sal,columns=['query', 'IdDb', 'Top8',"Top1","dist"])
|
||||||
|
df.to_csv("./%s/Sta/EvalClass.csv"%(path_model))
|
||||||
|
|
||||||
|
#queries_CatPlot(copies_text)
|
||||||
|
nltk.download('stopwords')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#llm,emb=loadModels()
|
||||||
|
model=models[0]
|
||||||
|
#print(model)
|
||||||
|
documents,documents2=loadCopysAndData()
|
||||||
|
emb=loadmodelEmb(model_name = model+"/model")
|
||||||
|
emb2=CustomEmbedding()
|
||||||
|
db=makeFaissdb(documents,"Copies3",emb2)
|
||||||
|
db2=makeFaissdb(documents2,"Intentionality3",emb2)
|
||||||
|
EvalClass([db,db2])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
queries_CatPlot(args.file)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
from pydal import DAL, Field
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
|
||||||
|
dbcopies = DAL('sqlite://storage.sqlite',
|
||||||
|
pool_size=10,
|
||||||
|
migrate_enabled=False,
|
||||||
|
folder='data/raw/databases'
|
||||||
|
)
|
||||||
|
dbvotes = DAL('sqlite://storage.db',
|
||||||
|
pool_size=10,
|
||||||
|
migrate_enabled=False,
|
||||||
|
folder='data/raw/databases'
|
||||||
|
)
|
||||||
|
dbvotes.define_table('votes',
|
||||||
|
Field("id"),
|
||||||
|
Field("message"),
|
||||||
|
Field("copy_id"),
|
||||||
|
Field("vote"))
|
||||||
|
|
||||||
|
dbvotes.define_table('messages',
|
||||||
|
Field("id"),
|
||||||
|
Field("message"))
|
||||||
|
|
||||||
|
|
||||||
|
dbcopies.define_table('copies',
|
||||||
|
Field("id"),
|
||||||
|
Field("name"),
|
||||||
|
Field("copy_message"),
|
||||||
|
Field("copy_help"),
|
||||||
|
Field("display_name"),
|
||||||
|
Field("intentionality"),
|
||||||
|
Field("context"),
|
||||||
|
Field("more_info"))
|
Loading…
Reference in New Issue