import joblib
import csv
import sys
from pathlib import Path
import numpy as np
from scipy.sparse import hstack
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.svm import LinearSVC
sys.path.append(str(Path(__file__).resolve().parent.parent))
from common.features import handcrafted_feature_matrix # noqa: E402
XSS_KEYWORDS = [
"",
"search term: comfortable running shoes",
"
",
"notes: please call before 5pm",
]
Xd_tfidf = vectorizer.transform(samples)
Xd_hand = handcrafted_feature_matrix(samples, XSS_KEYWORDS)
Xd = hstack([Xd_tfidf, Xd_hand])
preds = clf.predict(Xd)
for text, label in zip(samples, preds):
verdict = "MALICIOUS" if label == 1 else "benign"
print(f"[{verdict}] {text}")
if __name__ == "__main__":
joblib.dump(vectorizer, "xss_vectorizer.joblib")
joblib.dump(clf, "xss_classifier.joblib")
print("\nSaved model artifacts. Run: python test_model.py")
main()