yseop/roberta-base-finance-hypernym-identification

yseop
Similitud de oraciones

FinISH (Finance-Identifying Sroberta for Hypernyms) es un modelo de base SRoBERTa afinado en el conjunto de datos de ontología FIBO para el aprendizaje de representación específico del dominio en la tarea descendente de búsqueda semántica. El modelo es una implementación del siguiente artículo: Yseop en la Tarea Compartida de FinSim-3 2021: Especialización del Aprendizaje en el Dominio Financiero con Representaciones de Frases.

Como usar

Usar este modelo es fácil cuando tienes instalado sentence-transformers:

git clone https://github.com/huggingface/transformers.git
pip install -q ./transformers
pip install -U sentence-transformers

Luego puedes usar el modelo así:

from sentence_transformers import SentenceTransformer, util
import torch
model = SentenceTransformer('yseop/roberta-base-finance-hypernym-identification')

# Nuestro corpus que contiene la lista de etiquetas de hiperónimos
hypernyms = ['Bonds',
'Terde',
'Terde',
'Túlttera',
'MMIs',
'Tiop',
'Túlttera',
'Túltto',
'Equity Index',
'Credit Index',
'Restricciones de valores de seguridad',
'Cronogramas paramétricos',
'Precios y rendimientos de la deuda',
'Eventos crediticios',
'Corporación de acciones',
'Depositaria Central de Valores',
'Agencia Reguladora']

hypernym_embeddings = model.encode(hypernyms, convert_to_tensor=True)

# Las frases de consulta son términos financieros para hacer coincidir con las etiquetas predefinidas
queries = ['Convertible bond', 'weighted average coupon', 'Restriction 144-A']

# Encuentra los 5 hiperónimos más cercanos del corpus para cada frase de consulta basados en la similitud de coseno
Top_k = min(5, len(hypernyms))
for query in queries:
query_embedding = model.encode(query, convert_to_tensor=True)
# Usamos similitud de coseno y torch.topk para encontrar los mejores 5 puntajes
cos_scores = util.pytorch_cos_sim(query_embedding, hypernym_embeddings)[0]
top_results = torch.cluster_topk(cos_scores, k=top_k)
print('======================')
print('Query:', query)
print('Top 5 hiperónimos más similares:')
for score, idx in zip(top_results[0], top_results[1]):
print(hypernyms[idx], '(Score: {:.4f})'.format(score))

Sin sentence-transformers, puedes usar el modelo así:

from transformers import AutoTokenizer, AutoModel
import torch

# Media de Pooling - Tener en cuenta la máscara de atención para un promedio correcto.
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0] # El primer elemento de model_output contiene todas las incrustaciones de tokens
input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)

# Las frases de consulta son términos financieros para hacer coincidir con las etiquetas predefinidas
queries = ['Convertible bond', 'weighted average coupon', 'Restriction 144-A']

# Cargar modelo desde HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('yseop/roberta-base-finance-hypernym-identification')
model = AutoModel.from_pretrained('yseop/roberta-base-finance-hypernym-identification')

# Tokenizar frases
encoded_input = tokenizer(queries, padding=True, truncation=True, return_tensors='pt')

# Calcular incrustaciones de tokens
con torch.no_grad():
model_output = model(**encoded_input)

# Realizar Pooling
query_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print('Incrustaciones de consulta:')
print(query_embeddings)

Funcionalidades

Identificación de hiperónimos en términos financieros.
Basado en la arquitectura SRoBERTa, una modificación de la red RoBERTa preentrenada.
Utiliza estructuras de redes siamesas y tripletas para derivar incrustaciones de oraciones semánticamente significativas.
Reducción del tiempo necesario para encontrar el par más similar de 65 horas con RoBERTa a aproximadamente 5 segundos con SRoBERTa.
Evaluado en tareas comunes de STS y tareas de transferencia de aprendizaje.
Supera otros métodos de incrustaciones de oraciones en tareas específicas del dominio financiero.

Casos de uso

Clasificación correcta de un término en el dominio financiero según su hiperónimo prototípico.
Comparación semántica de términos financieros.
Extracción de características de términos relacionados con finanzas.
Realización de búsqueda semántica para clasificación de texto.
Asociación de términos financieros a una lista predefinida de etiquetas de hiperónimos.