From 1245cb22fe769de69a18616e4211c68215146ca0 Mon Sep 17 00:00:00 2001 From: marioggil Date: Fri, 6 Oct 2023 00:42:06 -0500 Subject: [PATCH] With intencionality --- FindinDB.py | 116 +++++++++++++----- loadModelinlocal.py | 293 +++++++++++++++++++++++++++++++++++++++++++- retrainEmbbeding.py | 62 ++++++++++ 3 files changed, 432 insertions(+), 39 deletions(-) diff --git a/FindinDB.py b/FindinDB.py index 8464d78..466b619 100644 --- a/FindinDB.py +++ b/FindinDB.py @@ -1,8 +1,7 @@ import gradio as gr from faiss import write_index, read_index - -from langchain import PromptTemplate -from langchain.chains import LLMChain +from typing import List +#from langchain import PromptTemplate from langchain.document_loaders import TextLoader from langchain.text_splitter import CharacterTextSplitter from langchain.vectorstores import FAISS @@ -11,28 +10,85 @@ from langchain.document_loaders import UnstructuredFileLoader from langchain.document_loaders.recursive_url_loader import RecursiveUrlLoader from langchain.document_loaders import UnstructuredURLLoader from langchain.document_loaders.csv_loader import CSVLoader -from langchain import LLMChain -from langchain.llms import GPT4All -from langchain.embeddings import GPT4AllEmbeddings -from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler -from langchain.callbacks.base import BaseCallbackManager +#from langchain import LLMChain +from langchain.pydantic_v1 import BaseModel +from langchain.schema.embeddings import Embeddings from langchain.document_loaders import DataFrameLoader from langchain.embeddings import HuggingFaceEmbeddings import pandas as pd import sqlite3 from sentence_transformers import SentenceTransformer from fastapi import FastAPI +from unidecode import unidecode +from nltk.corpus import stopwords #from cleantext import clean import re -model_name = 'hiiamsid/sentence_similarity_spanish_es' -model_kwargs = {'device': 'cpu'} -encode_kwargs = {'normalize_embeddings': True} -hf = HuggingFaceEmbeddings( - model_name=model_name, - model_kwargs=model_kwargs, - encode_kwargs=encode_kwargs -) +def loadmodelEmb(model_name = "embeddings/all-mpnet-base-v2",model_kwargs = {'device': 'cpu'}): + hf = HuggingFaceEmbeddings( + model_name=model_name, + model_kwargs=model_kwargs + ) + return hf + +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): + + # 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) + # remove emoji's + document = remove_emoji(document) + # remove punctuation + for sig in [".",",","!","¿","?","=","(",")"]: + document=document.replace(sig," ") + #document = re.sub("[^0-9A-Za-z ]", "" , document) + # remove double spaces + #print(document) + document=unidecode(document) + words=document.split(" ") + + if stopOk: + 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() + + +class CustomEmbedding(Embeddings, BaseModel): + """embedding model with preprocessing""" + size=20 + def _get_embedding(self,text) -> List[float]: + #print(text,"text") + text=remove_unwanted(text) + Sal=emb.embed_query(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) + +emb=loadmodelEmb() CUSTOM_PATH = "/angela" app = FastAPI() @@ -40,24 +96,15 @@ app = FastAPI() def read_main(): return {"message": "This is your main app"} - - -def loadModels(): - #model = GPT4All("orca-mini-3b.ggmlv3.q4_0.bin") - callback_manager = BaseCallbackManager([StreamingStdOutCallbackHandler()]) - llm = GPT4All(model="orca-mini-3b.ggmlv3.q4_0.bin",temp=0.1,streaming=True)#callback_manager=callback_manager, verbose=True,repeat_last_n=0 - embeddings = GPT4AllEmbeddings() - return llm, embeddings - - def loadCopysAndData(pathsqlite="motor.sqlite"): con = sqlite3.connect(pathsqlite) copies_df = pd.read_sql_query("SELECT * from copies", con) copiesT = copies_df[copies_df.copy_start =="T"] - copiesT=copiesT[["copy_message","id","name"]] + copiesT=copiesT[["copy_message","id","name","intencionality"]] data = copiesT + print(data) B=DataFrameLoader(data,page_content_column="copy_message") - B2=DataFrameLoader(data,page_content_column="name") + B2=DataFrameLoader(data,page_content_column="intencionality") documents=B.load() documents2=B2.load() return documents,documents2 @@ -71,17 +118,20 @@ def makeFaissdb(documents,folder_path,embedding): FAISS.save_local(db,folder_path=folder_path) return db -llm,emb=loadModels() +#llm,emb=loadModels() +model="embeddings/all-mpnet-base-v2" documents,documents2=loadCopysAndData() - -db=makeFaissdb(documents,"Copies",emb) -db2=makeFaissdb(documents2,"names",emb) -db3=makeFaissdb(documents2,"nameshf",hf) +emb=loadmodelEmb(model_name = model) +emb2=CustomEmbedding() +db=makeFaissdb(documents,"Copies3",emb2) +db2=makeFaissdb(documents2,"Intencionality3",emb2) +#db3=makeFaissdb(documents2,"nameshf",hf) def FinderDbs(query,dbs,filtred=False,th=1.2): AllData={} for dbt in dbs: Sal = dbt.similarity_search_with_score(query,4) + print(Sal) for output in Sal: 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]) diff --git a/loadModelinlocal.py b/loadModelinlocal.py index 3572aae..776a7cf 100644 --- a/loadModelinlocal.py +++ b/loadModelinlocal.py @@ -1,9 +1,290 @@ +from langchain.document_loaders import DataFrameLoader from langchain.embeddings import HuggingFaceEmbeddings -df=HuggingFaceEmbeddings( - model_name="embeddings/all-MiniLM-L6-v2" -) -text = "This is a test document." +from langchain.vectorstores import FAISS +from langchain.pydantic_v1 import BaseModel +from langchain.schema.embeddings import Embeddings +from scipy.spatial import distance +from typing import List +import sqlite3 +import pandas as pd +import shutil +import re +import numpy as np +import inspect +import time +from unidecode import unidecode +from nltk.corpus import stopwords +class CustomEmbedding(Embeddings, BaseModel): + """embedding model with preprocessing""" + size=20 + def _get_embedding(self,text) -> List[float]: + #print(text,"text") + text=remove_unwanted(text) + Sal=emb.embed_query(text) + return Sal + def embed_documents(self, texts: List[str]) -> List[List[float]]: + Sal=[] + for text in texts: + Sal.append(self._get_embedding(text)) -query_result = df.embed_query(text) -print(query_result) \ No newline at end of file + return Sal + def embed_query(self, text: str) -> List[float]: + return self._get_embedding(text) + +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): + + # 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) + # remove emoji's + document = remove_emoji(document) + # remove punctuation + for sig in [".",",","!","¿","?","=","(",")"]: + document=document.replace(sig," ") + #document = re.sub("[^0-9A-Za-z ]", "" , document) + # remove double spaces + #print(document) + document=unidecode(document) + words=document.split(" ") + + if stopOk: + 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() + +def loadmodelEmb(model_name = "embeddings/all-MiniLM-L6-v2",model_kwargs = {'device': 'cpu'}): + hf = HuggingFaceEmbeddings( + model_name=model_name, + model_kwargs=model_kwargs + ) + return hf + + +def loadCopysAndData(pathsqlite="motor.sqlite"): + con = sqlite3.connect(pathsqlite) + copies_df = pd.read_sql_query("SELECT * from copies", con) + copiesT = copies_df[copies_df.copy_start =="T"] + copiesT=copiesT[["copy_message","id","name"]] + data = copiesT + B=DataFrameLoader(data,page_content_column="copy_message") + B2=DataFrameLoader(data,page_content_column="name") + documents=B.load() + documents2=B2.load() + return documents,documents2 +def makeFaissdb(documents,folder_path,embedding): + try: + shutil.rmtree(folder_path) + except: + pass + db = FAISS.from_documents(documents, embedding) + FAISS.save_local(db,folder_path=folder_path) + return [db,folder_path] + +def FinderDbs(query,dbs,filtred=False,th=1.2): + AllData={} + for dbt in dbs: + Sal = dbt.similarity_search_with_score(query,4) + for output in Sal: + 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]) + else: + AllData[output[0].metadata["id"]]={"d":output[1],"page_content":output[0].page_content} + #for item in AllData.items(): + # print(item) + + if filtred: + filtredData={} + for row in AllData.keys(): + if AllData[row]["d"]<1.2: + filtredData[row]=AllData[row] + filtredData=dict(sorted(filtredData.items(), key=lambda item: item[1]["d"])) + return filtredData,filtredData.keys() + + + else: + AllData=dict(sorted(AllData.items(), key=lambda item: item[1]["d"])) + return AllData,AllData.keys() + +models=["all-MiniLM-L12-v2","paraphrase-MiniLM-L3-v2" , "all-MiniLM-L6-v2","all-mpnet-base-v2","multi-qa-mpnet-base-dot-v1"] + +queries=["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: +# point=0 +# AllData=FinderDbs(query,[Fdb[0]]) +# print(model) +# print(Fdb[1]) +# if 32 in AllData[1]: +# point+=1 +# if 32 == list(AllData[1])[0]: +# point+=9 +# print(AllData[1],point) + + + +copies_text=["Saber sobre actividades culturales.", +"Saber sobre talleres.", +"Información sobre talleres de literatura.", +"Información sobre talleres de formación artistica.", +"Obtener la certificación de uso de suelos.", +"Reportar un bacheo.", +"Saber dónde pago un parquímetro.", +] +for model in models: + print(model) + print(""" + + + """) + t=time.time() + for copy_text in copies_text: + emb=loadmodelEmb(model_name = model) + emb2=CustomEmbedding() + sal=[] + for query in queries: + sal.append(distance.cosine(emb2.embed_query(query),emb2.embed_query(copy_text))) + print(model,",",copy_text,",",np.mean(sal),",",np.std(sal),",",(time.time()-t)/len(queries)) + + + + + + +{ + "formas_de_reportar_bache": [ + "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." + ] +} \ No newline at end of file diff --git a/retrainEmbbeding.py b/retrainEmbbeding.py index 197b1fe..232a9ef 100644 --- a/retrainEmbbeding.py +++ b/retrainEmbbeding.py @@ -11,3 +11,65 @@ for model in models: # Save the model modelST.save(save_path) + +# all-MiniLM-L12-v2 + + + + +# all-MiniLM-L12-v2 Saber sobre actividades culturales. 0.6535751457769086 0.05863175772626888 0.12278595510518776 +# all-MiniLM-L12-v2 Saber sobre talleres. 0.751629503845477 0.05310761464124975 0.1831973003891279 +# all-MiniLM-L12-v2 Información sobre talleres de literatura. 0.7224854452006415 0.05215076573219591 0.2247900827875677 +# all-MiniLM-L12-v2 Información sobre talleres de formación artistica. 0.7008979606232822 0.03950918605037314 0.2588270430294973 +# all-MiniLM-L12-v2 Obtener la certificación de uso de suelos. 0.6363654116990891 0.06126748264989437 0.2990496653430867 +# all-MiniLM-L12-v2 Reportar un bacheo. 0.5974184966305134 0.14056650047761457 0.33133007445425355 +# all-MiniLM-L12-v2 Saber dónde pago un parquímetro. 0.7286070458224445 0.04967551271473011 0.36476032688932597 +# paraphrase-MiniLM-L3-v2 + + + + +# paraphrase-MiniLM-L3-v2 Saber sobre actividades culturales. 0.7366279968758482 0.08893400433814432 0.011976916834993183 +# paraphrase-MiniLM-L3-v2 Saber sobre talleres. 0.8040920436803051 0.07181478379134668 0.02360300747853405 +# paraphrase-MiniLM-L3-v2 Información sobre talleres de literatura. 0.7437334052301269 0.04553266191552214 0.036959598649222894 +# paraphrase-MiniLM-L3-v2 Información sobre talleres de formación artistica. 0.743870036748493 0.06526662723048463 0.05061841460893739 +# paraphrase-MiniLM-L3-v2 Obtener la certificación de uso de suelos. 0.7717547355774438 0.06484008413761407 0.062440363865978316 +# paraphrase-MiniLM-L3-v2 Reportar un bacheo. 0.6655234266285941 0.12495720849140243 0.0751793069659539 +# paraphrase-MiniLM-L3-v2 Saber dónde pago un parquímetro. 0.7348896817507707 0.04065274263873351 0.09146604897840968 +# all-MiniLM-L6-v2 + + + + +# all-MiniLM-L6-v2 Saber sobre actividades culturales. 0.5873976949286881 0.054536409831093556 0.02166009399126161 +# all-MiniLM-L6-v2 Saber sobre talleres. 0.705393021384429 0.06415187629245482 0.040732748103591634 +# all-MiniLM-L6-v2 Información sobre talleres de literatura. 0.602608386747181 0.054022995767296696 0.06001406345727309 +# all-MiniLM-L6-v2 Información sobre talleres de formación artistica. 0.6445745034623189 0.05229467148751577 0.07957683869127957 +# all-MiniLM-L6-v2 Obtener la certificación de uso de suelos. 0.5708618561256799 0.0394827821548067 0.09872836436865465 +# all-MiniLM-L6-v2 Reportar un bacheo. 0.5741872079555271 0.13503311454160494 0.11794944529263478 +# all-MiniLM-L6-v2 Saber dónde pago un parquímetro. 0.6594361733956011 0.056983523732601314 0.13696542775855874 +# all-mpnet-base-v2 + + + + +# all-mpnet-base-v2 Saber sobre actividades culturales. 0.5534035540829121 0.06890411125329764 0.08799683372929411 +# all-mpnet-base-v2 Saber sobre talleres. 0.6346356305674484 0.05816374415416716 0.2692093669243579 +# all-mpnet-base-v2 Información sobre talleres de literatura. 0.733400957902919 0.062002638662933096 0.4069641581121481 +# all-mpnet-base-v2 Información sobre talleres de formación artistica. 0.7403190712146518 0.06573001180535122 0.5049155163315108 +# all-mpnet-base-v2 Obtener la certificación de uso de suelos. 0.5057200806006308 0.040962860644441684 0.5848623266759908 +# all-mpnet-base-v2 Reportar un bacheo. 0.4282261685120943 0.1256224113877856 0.6733528038240829 +# all-mpnet-base-v2 Saber dónde pago un parquímetro. 0.5096540066521769 0.06542826690229307 0.7576164344571671 +# multi-qa-mpnet-base-dot-v1 + + + + +# multi-qa-mpnet-base-dot-v1 Saber sobre actividades culturales. 0.5412514848207511 0.049426306929690425 0.08471853328201007 +# multi-qa-mpnet-base-dot-v1 Saber sobre talleres. 0.6004619942650676 0.04068730180147856 0.19998745198519724 +# multi-qa-mpnet-base-dot-v1 Información sobre talleres de literatura. 0.5422846411740877 0.035149354259768846 0.3127848022388962 +# multi-qa-mpnet-base-dot-v1 Información sobre talleres de formación artistica. 0.5810213727598411 0.033041479673933366 0.3915549134308437 +# multi-qa-mpnet-base-dot-v1 Obtener la certificación de uso de suelos. 0.5171735715348054 0.029578046799246076 0.4764851579126322 +# multi-qa-mpnet-base-dot-v1 Reportar un bacheo. 0.4249011819077356 0.12119208621320086 0.559126246650264 +# multi-qa-mpnet-base-dot-v1 Saber dónde pago un parquímetro. 0.49335939772807463 0.047415340138656205 0.65184190138331 +