whaleloops/phrase-bert
Este es el repositorio oficial para el artículo largo de EMNLP 2021 Phrase-BERT: Improved Phrase Embeddings from BERT with an Application to Corpus Exploration. Proveemos código para entrenar y evaluar Phrase-BERT además de los conjuntos de datos utilizados en el artículo.
Como usar
Uso (Sentence-Transformers)
Usar este modelo se vuelve fácil cuando tienes instalados los sentence-transformers:
pip install -U sentence-transformers
Nuestro modelo ha sido probado en pytorch=1.9.0, transformers=4.8.1, sentence-transformers = 2.1.0
Entonces puedes usar el modelo de la siguiente manera:
from sentence_transformers import SentenceTransformer
phrase_list = ['jugar un papel activo', 'participar activamente', 'estilo de vida activo']
model = SentenceTransformer('whaleloops/phrase-bert')
phrase_embs = model.encode(phrase_list)
[p1, p2, p3] = phrase_embs
Como en sentence-BERT, la salida predeterminada es una lista de matrices numpy:
for phrase, embedding in zip(phrase_list, phrase_embs):
print("Phrase:", phrase)
print("Embedding:", embedding)
print("")
Ejemplo de cálculo del producto punto de las incrustaciones de frases:
import numpy as np
print(f'El producto punto entre la frase 1 y 2 es: {np.dot(p1, p2)}')
print(f'El producto punto entre la frase 1 y 3 es: {np.dot(p1, p3)}')
print(f'El producto punto entre la frase 2 y 3 es: {np.dot(p2, p3)}')
Ejemplo de cálculo de la similitud coseno de las incrustaciones de frases:
import torch
from torch import nn
cos_sim = nn.CosineSimilarity(dim=0)
print(f'La similitud coseno entre la frase 1 y 2 es: {cos_sim(torch.tensor(p1), torch.tensor(p2))}')
print(f'La similitud coseno entre la frase 1 y 3 es: {cos_sim(torch.tensor(p1), torch.tensor(p3))}')
print(f'La similitud coseno entre la frase 2 y 3 es: {cos_sim(torch.tensor(p2), torch.tensor(p3))}')
El resultado debería parecerse a:
El producto punto entre la frase 1 y 2 es: 218.43600463867188
El producto punto entre la frase 1 y 3 es: 165.48483276367188
El producto punto entre la frase 2 y 3 es: 160.51708984375
La similitud coseno entre la frase 1 y 2 es: 0.8142536282539368
La similitud coseno entre la frase 1 y 3 es: 0.6130303144454956
La similitud coseno entre la frase 2 y 3 es: 0.584893524646759
Evaluación
Dada la falta de un benchmark unificado de evaluación de incrustaciones de frases, recopilamos las siguientes cinco tareas de evaluación de semántica de frases, que se describen más a fondo en nuestro artículo:
- Turney [Descargar]
- BiRD [Descargar]
- PPDB [Descargar]
- PPDB-filtrado [Descargar]
- PAWS-corto [Descargar Train-split] [Descargar Dev-split] [Descargar Test-split]
Cambia config/model_path.py con la ruta del modelo de acuerdo a tus directorios y
Para la evaluación en Turney, ejecuta python eval_turney.py
Para la evaluación en BiRD, ejecuta python eval_bird.py
Para la evaluación en PPDB / PPDB-filtrado / PAWS-corto, ejecuta eval_ppdb_paws.py con:
nohup python -u eval_ppdb_paws.py \
--full_run_mode \
--task \
--data_dir \
--result_dir \
>./output.txt 2>&1 &
Funcionalidades
- Similitud de frases
- Transformadores de frases
- PyTorch
- Transformadores
- Extracción de características
- Inferencia de incrustaciones de texto
- Puntos finales de inferencia
Casos de uso
- Exploración de corpus
- Búsqueda y comparación de frases