hkunlp/instructor-xl
Presentamos Instructor👨🏫, un modelo de incrustación de texto ajustado por instrucciones que puede generar incrustaciones de texto adaptadas a cualquier tarea (por ejemplo, clasificación, recuperación, agrupamiento, evaluación de texto, etc.) y dominios (por ejemplo, ciencia, finanzas, etc.) simplemente proporcionando la instrucción de la tarea, sin necesidad de ningún ajuste fino. Instructor👨🏫 logra el estado del arte en 70 tareas de incrustación diversas. El modelo es fácil de usar con nuestra biblioteca personalizada de sentence-transformers. Para más detalles, consulta nuestro artículo y página del proyecto.
Como usar
A continuación se muestra cómo usar el modelo para calcular incrustaciones personalizadas y realizar diversas tareas.
pip install InstructorEmbedding
Luego puedes usar el modelo de esta manera para calcular incrustaciones específicas de dominio y tarea:
from InstructorEmbedding import INSTRUCTOR
model = INSTRUCTOR('hkunlp/instructor-xl')
sentence = "3D ActionSLAM: wearable person tracking in multi-floor environments"
instruction = "Represent the Science title:"
embeddings = model.encode([[instruction,sentence]])
print(embeddings)
Uso adicional:
Calcular incrustaciones para tus textos personalizados
Si deseas calcular incrustaciones personalizadas para oraciones específicas, puedes seguir la plantilla unificada para escribir instrucciones:
Represent the domain text_type for task_objective:
Donde:
domain es opcional y especifica el dominio del texto, por ejemplo, ciencia, finanzas, medicina, etc.
text_type es obligatorio y especifica la unidad de codificación, por ejemplo, oración, documento, párrafo, etc.
task_objective es opcional y especifica el objetivo de la incrustación, por ejemplo, recuperar un documento, clasificar la oración, etc.
Calcular similitud de oraciones
from sklearn.metrics.pairwise import cosine_similarity
sentences_a = [['Represent the Science sentence: ','Parton energy loss in QCD matter'],
['Represent the Financial statement: ','The Federal Reserve on Wednesday raised its benchmark interest rate.']]
sentences_b = [['Represent the Science sentence: ','The Chiral Phase Transition in Dissipative Dynamics'],
['Represent the Financial statement: ','The funds rose less than 0.5 per cent on Friday']]
embeddings_a = model.encode(sentences_a)
embeddings_b = model.encode(sentences_b)
similarities = cosine_similarity(embeddings_a,embeddings_b)
print(similarities)
Recuperación de información
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
query = [['Represent the Wikipedia question for retrieving supporting documents: ','where is the food stored in a yam plant']]
corpus = [['Represent the Wikipedia document for retrieval: ','Capitalism has been dominant in the Western world since the end of feudalism, but most feel[who?] that the term "mixed economies" more precisely describes most contemporary economies, due to their containing both private-owned and state-owned enterprises. In capitalism, prices determine the demand-supply scale. For example, higher demand for certain goods and services lead to higher prices and lower demand for certain goods lead to lower prices.'],
['Represent the Wikipedia document for retrieval: ','The disparate impact theory is especially controversial under the Fair Housing Act because the Act regulates many activities relating to housing, insurance, and mortgage loans—and some scholars have argued that the theory's use under the Fair Housing Act, combined with extensions of the Community Reinvestment Act, contributed to rise of sub-prime lending and the crash of the U.S. housing market and ensuing global economic recession'],
['Represent the Wikipedia document for retrieval: ','Disparate impact in United States labor law refers to practices in employment, housing, and other areas that adversely affect one group of people of a protected characteristic more than another, even though rules applied by employers or landlords are formally neutral. Although the protected classes vary by statute, most federal civil rights laws protect based on race, color, religion, national origin, and sex as protected traits, and some laws include disability status and other traits as well.']]
query_embeddings = model.encode(query)
corpus_embeddings = model.encode(corpus)
similarities = cosine_similarity(query_embeddings,corpus_embeddings)
retrieved_doc_id = np.argmax(similarities)
print(retrieved_doc_id)
Agrupamiento
import sklearn.cluster
sentences = [['Represent the Medicine sentence for clustering: ','Dynamical Scalar Degree of Freedom in Horava-Lifshitz Gravity'],
['Represent the Medicine sentence for clustering: ','Comparison of Atmospheric Neutrino Flux Calculations at Low Energies'],
['Represent the Medicine sentence for clustering: ','Fermion Bags in the Massive Gross-Neveu Model'],
['Represent the Medicine sentence for clustering: '"QCD corrections to Associated t-tbar-H production at the Tevatron",''],
['Represent the Medicine sentence for clustering: ','A New Analysis of the R Measurements: Resonance Parameters of the Higher, Vector States of Charmonium']]
embeddings = model.encode(sentences)
clustering_model = sklearn.cluster.MiniBatchKMeans(n_clusters=2)
clustering_model.fit(embeddings)
cluster_assignment = clustering_model.labels_
print(cluster_assignment)
Funcionalidades
- Clasificación
- Recuperación de información
- Agrupamiento
- Evaluación de texto
- Incrustaciones de texto adaptadas a tareas específicas
- Instrucción para incrustaciones de texto sin ajuste fino adicional
Casos de uso
- Calcular incrustaciones para textos personalizados
- Calcular similitudes entre grupos de oraciones
- Recuperación de información basada en incrustaciones personalizadas
- Agrupamiento de textos en grupos específicos