Spaces:
Sleeping
Sleeping
| import torch | |
| from sklearn.svm import LinearSVC | |
| from sklearn.pipeline import make_pipeline | |
| from sklearn.feature_extraction.text import TfidfVectorizer | |
| import joblib | |
| from anchors import HINGLISH_EMOJI_ANCHORS | |
| import json | |
| import re | |
| def preprocess(text): | |
| text = text.lower() | |
| text = re.sub(r'[^a-z\s]', '', text) | |
| return text | |
| def train_classifier(): | |
| X = [] | |
| y = [] | |
| print("Extracting training data...") | |
| for emoji, phrases in HINGLISH_EMOJI_ANCHORS.items(): | |
| for phrase in phrases: | |
| X.append(preprocess(phrase)) | |
| y.append(emoji) | |
| print(f"Extracted {len(X)} samples. Training TF-IDF + Linear SVC...") | |
| clf = make_pipeline( | |
| TfidfVectorizer(ngram_range=(1, 5), analyzer='char_wb', min_df=1, max_df=0.9), | |
| LinearSVC(C=0.5, class_weight='balanced', max_iter=3000, random_state=42) | |
| ) | |
| clf.fit(X, y) | |
| print(f"Training accuracy on anchor phrases: {clf.score(X, y) * 100:.2f}%") | |
| joblib.dump(clf, "classifier.joblib") | |
| print("Classifier saved to classifier.joblib") | |
| if __name__ == "__main__": | |
| train_classifier() | |