import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, classification_report import pickle from sentence_transformers import SentenceTransformer file_name = "data/sms_process_data_main.xlsx" sheet = "Sheet1" df = pd.read_excel(file_name, sheet_name=sheet) X_train, X_test, y_train, y_test = train_test_split(df['MessageText'], df['label'], test_size=0.2, random_state=42) model = SentenceTransformer('Alibaba-NLP/gte-base-en-v1.5', trust_remote_code=True) X_train_embeddings = model.encode(X_train.tolist()) X_test_embeddings = model.encode(X_test.tolist()) logistic_model = LogisticRegression(max_iter=100) logistic_model.fit(X_train_embeddings, y_train) # Evaluate Model y_pred = logistic_model.predict(X_test_embeddings) accuracy = accuracy_score(y_test, y_pred) print(f"Model Accuracy: {accuracy}") print(classification_report(y_test, y_pred)) # Save Model and Sentence Transformer print("Saving model and embeddings...") with open('models/logistic_regression_model.pkl', 'wb') as f: pickle.dump(logistic_model, f) model.save('models/sentence_transformer') print("Model training and saving complete.")