import torch import pandas as pd from sentence_transformers import SentenceTransformer # ملفات CSV_DATA = "dataset_2026.csv" EMB_FILE = "embeddings_questions.pt" # ✅ موديل مستقر يدعم العربية/الفرنسية/الإنجليزية model = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2") print("📥 Chargement du dataset...") # ✅ مهم: sep=";" لأن ملفك مفصول بـ ; df = pd.read_csv(CSV_DATA, encoding="utf-8", sep=";", on_bad_lines="skip") # 🔍 عرض الأعمدة للتأكد print("📊 Colonnes détectées :", df.columns) # ✅ التحقق من وجود العمود if "Question" not in df.columns: raise ValueError(f"❌ Column 'Question' not found. Found: {df.columns}") # ✅ استخراج الأسئلة questions = df["Question"].astype(str).tolist() print(f"✅ {len(questions)} questions chargées") print("🧠 Calcul des embeddings...") # ✅ batching لتفادي مشاكل الذاكرة وتسريع العملية embeddings = model.encode( questions, batch_size=32, # تقدر تنقصها إذا كان RAM ضعيف show_progress_bar=True, convert_to_tensor=True, normalize_embeddings=True ) print("💾 Sauvegarde des embeddings...") # ✅ حفظ embeddings torch.save(embeddings, EMB_FILE) print("✅ Terminé :", embeddings.shape)