prithivida/miniDense_arabic_v1
prithivida
Similitud de oraciones
MiniDense es una serie de modelos multilingües de baja huella para tareas de búsqueda y recuperación de información (IR). Esta versión está diseñada para manejar tareas en árabe, ofreciendo embeddings de texto de alta calidad que se pueden implementar fácilmente y con un coste de almacenamiento reducido. Utiliza transformers y sentence-transformers, y puede ser implementado con PyTorch y ONNX.
Como usar
from sentence_transformers import SentenceTransformer
import scipy.spatial
model = SentenceTransformer('prithivida/miniDense_arabic_v1')
corpus = [
'أرق يمكن أن يحدث الأرق بشكل مستقل أو نتيجة لمشكلة أخرى. وتشمل الظروف التي يمكن أن تؤدي إلى الأرق : توتر، ألم مزمن، قصور القلب، فرط الدرقية، حرقة الفؤاد، متلازمة تململ الساقين، سن اليأس وبعض الأدوية، مثل كافيين، نيكوتين، و الكحول. وتشمل عوامل الخطر الأخرى العمل ليلا وانقطاع النفس النومي. ويستند التشخيص على عادات النوم للبحث عن الأسباب الكامنة. كما يمكن إجراء دراسة على النوم للبحث عن اضطرابات النوم الكامنة. ويتم هذا الإجراء بسؤالين: "هل تواجه صعوبة في النوم؟" و "هل لديك صعوبة في الدخول في النوم أو البقاء نائما؟', 'أرق في كثير من الحالات، يشترك الأرق مع مرض آخر، كما يمكن حدوثه بسبب الآثار الجانبية من الأدوية، أو المشاكل النفسية. ما يقرب من نصف الأشخاص المصابين بالأرق يرتبطون باضطرابات نفسية. بينما في الاكتئاب "ينبغي اعتبار الأرق حالة مرضية، بدلا من أن تكون حالة ثانوية؛" والأرق عادة ما يسبق الأعراض النفسية. " فمن الممكن أن يشكل الأرق خطرا كبيرا لتطوير اضطراب نفسي لاحق". يحدث الأرق في ما بين 60٪ و 80٪ من الأشخاص الذين يعانون من الاكتئاب. وقد يرجع ذلك جزئيا إلى العلاج المستخدم لعلاج الاكتئاب.', ...
]
queries = [ 'هل عدم القيام بجهد جسماني ممكن ان يسبب الأرق؟', 'ما هي المسألة الشرقية ؟']
corpus_embeddings = model.encode(corpus)
query_embeddings = model.encode(queries)
# Encontrar las 3 frases más cercanas del corpus para cada pregunta basada en la similitud del coseno
closest_n = 3
for query, query_embedding in zip(queries, query_embeddings): distances = scipy.spatial.distance.cdist([query_embedding], corpus_embeddings, "cosine")[0]
results = zip(range(len(distances)), distances)
results = sorted(results, key=lambda x: x[1])
print("\n======================\n")
print("Consulta:", query)
print("\nLas 3 frases más similares en el corpus:\n")
for idx, distance in results[0:closest_n]:
print(corpus[idx].strip(), "(Score: %.4f)" % (1-distance))
Funcionalidades
- Es un modelo tipo BERT
- Tokenizador de XLM-Roberta
- Vocabulario de 250K palabras
- Basado en transformers
- Soporta la extracción de características
- Utiliza distilación del conocimiento
- Optimizaciones para la búsqueda de pasajes
- Entrenamiento interno (middle-training)
- Optimizado para la similitud de oraciones
Casos de uso
- Recuperación de pasajes de texto
- Búsqueda y recuperación de información (IR)
- Similitud de oraciones
- Extracción de características de texto
- Reducción de costos de almacenamiento de vectores
- Mejorar la precisión de búsqueda híbrida combinando con BM25