facebook/tart-full-flan-t5-xl

facebook
Clasificación de texto

facebook/tart-full-flan-t5-xl es un modelo multi-tarea de cruce entrenado mediante ajuste de instrucciones en aproximadamente 40 tareas de recuperación, que se inicia con google/flan-t5-xl. TART-full es un modelo de cruce de 1.5 mil millones y puede reordenar documentos principales dada una consulta y una instrucción en lenguaje natural (por ejemplo, encontrar un párrafo de Wikipedia que responda a esta pregunta). Los resultados experimentales en BEIR, LOTTE y nuestra nueva evaluación, X^2-Retrieval muestran que TART-full supera a los métodos anteriores de última generación aprovechando las instrucciones en lenguaje natural. Más detalles sobre el modelado y el entrenamiento están en nuestro artículo: Recuperación Consciente de Tareas con Instrucciones.

Como usar

El modelo TART-full se puede cargar a través de nuestro modelo personalizado EncT5.

from src.modeling_enc_t5 import EncT5ForSequenceClassification
from src.tokenization_enc_t5 import EncT5Tokenizer
import torch
import torch.nn.functional as F
import numpy as np

# cargar TART full y tokenizador
model = EncT5ForSequenceClassification.from_pretrained("facebook/tart-full-flan-t5-xl")
tokenizer = EncT5Tokenizer.from_pretrained("facebook/tart-full-flan-t5-xl")
model.eval()

q = "¿Cuál es la población de Tokio?"
in_answer = "recuperar un pasaje que responda a esta pregunta de Wikipedia"

p_1 = "La población de la capital de Japón, Tokio, disminuyó en unas 48,600 personas a poco menos de 14 millones a comienzos de 2022, el primer descenso desde 1996, informó el lunes el gobierno metropolitano."
p_2 = "Tokio, oficialmente la Metrópolis de Tokio (東京都, Tōkyō-to), es la capital y la ciudad más grande de Japón."

# 1. TART-full puede identificar el párrafo más relevante.
features = tokenizer(['{0} [SEP] {1}'.format(in_answer, q), '{0} [SEP] {1}'.format(in_answer, q)], [p_1, p_2], padding=True, truncation=True, return_tensors="pt")
with torch.no_grad():
scores = model(**features).logits
normalized_scores = [float(score[1]) for score in F.softmax(scores, dim=1)]

print([p_1, p_2][np.argmax(normalized_scores)]) # "La población de la capital de Japón, Tokio, disminuyó en unas 48,600 personas..."

# 2. TART-full puede identificar el documento más relevante Y que sigue las instrucciones.
in_sim = "Necesitas encontrar preguntas duplicadas en el foro Wiki. ¿Podrías encontrar una pregunta similar a esta pregunta?"
q_1 = "¿Cuántas personas viven en Tokio?"
features = tokenizer(['{0} [SEP] {1}'.format(in_sim, q), '{0} [SEP] {1}'.format(in_sim, q)], [p_1, q_1], padding=True, truncation=True, return_tensors="pt")
with torch.no_grad():
scores = model(**features).logits
normalized_scores = [float(score[1]) for score in F.softmax(scores, dim=1)]

print([p_1, q_1][np.argmax(normalized_scores)]) # "¿Cuántas personas viven en Tokio?"

Funcionalidades

Modelo multi-tarea de cruce
Entrenado mediante ajuste de instrucciones
Capaz de reordenar documentos principales
Utiliza instrucciones en lenguaje natural
Supera los métodos anteriores de última generación
AutoTrain Compatible
Compatible con puntos de inferencia

Casos de uso

Reordenar documentos principales dada una consulta
Recuperar párrafos relevantes en Wikipedia
Identificar documentos que sigan instrucciones específicas
Encontrar preguntas duplicadas en foros