inkoziev/sbert_synonymy
Esta es una modelo de sentence-transformers, destinada a determinar la sinonimia de dos textos cortos, principalmente de una sola oración con una longitud de hasta 10-15 palabras. Parte del conjunto de datos de entrenamiento está disponible en el repositorio inkoziev/paraphrases. El modelo calcula vectores de tamaño 312 para el texto y la pregunta. El coseno del ángulo entre estos vectores da una estimación de cuán cercanos son en significado. En el proyecto de sistema de diálogo se utiliza para determinar parafraseos de declaraciones y hechos. El modelo se basa en cointegrated/rubert-tiny2. Tiene un tamaño muy pequeño y realiza inferencias rápidamente incluso en una CPU.
Como usar
Uso con la biblioteca Sentence-Transformers
Para facilitar la instalación de sentence-transformers:
pip install -U sentence-transformers
Para determinar la sinonimia de pares de oraciones, se puede usar el siguiente código:
import sentence_transformers
sentences = ["Одна голова - хорошо, а две - лучше",
"пара голов имеет преимущество перед единственной",
"Потерявши голову, по волосам не плачут",]
model = sentence_transformers.SentenceTransformer('inkoziev/sbert_synonymy')
embeddings = model.encode(sentences)
s1 = sentences[0]
v1 = embeddings[0]
for i2 in range(1, 3):
s = sentence_transformers.util.cos_sim(a=v1, b=embeddings[i2]).item()
print('text1={} text2={} cossim={}'.format(s1, sentences[i2], s))
El resultado será aproximadamente así:
text1=Одна голова - хорошо, а две - лучше text2=пара голов имеет преимущество перед единственной cossim=0.8603419065475464
text1=Одна голова - хорошо, а две - лучше text2=Потерявши голову, по волосам не плачут cossim=0.013120125979185104
Funcionalidades
- Detección de sinonimia de frases
- Modelo basado en sentence-transformers
- Cálculo de vectores dimensionales
- Evaluación del significado a través del coseno del ángulo
Casos de uso
- Determinación de parafraseos de declaraciones
- Evaluación del significado similar de oraciones cortas