CoolFace
Apppublic

SerialGuy/ai-vs-human

sourceHugging Faceupdated 1y agoView on Hugging Face
4likes
predictor.py49 linesDownload Raw Back to root
1import numpy as np2import pandas as pd3import textstat4import joblib5 6# Load model and vectorizer7model = joblib.load("Models/ai_detector_model.pkl")8vectorizer = joblib.load("Models/vectorizer.pkl")9 10def calculate_readability(text):11    """Calculate readability score for the text"""12    return textstat.flesch_reading_ease(text)13 14def lexical_diversity(text):15    """Compute lexical diversity = unique words / total words"""16    words = text.split()17    return len(set(words)) / len(words) if words else 018 19def sentence_length(text):20    """Compute average sentence length"""21    sentences = text.split('.')22    return sum(len(s.split()) for s in sentences) / len(sentences) if sentences else 023 24def preprocess_text(text):25    """Convert text to feature vectors (TF-IDF + readability metrics)"""26    27    # Convert input text into a DataFrame28    df_sample = pd.DataFrame({'text': [text]})29 30    # Extract additional features31    df_sample['readability'] = df_sample['text'].apply(calculate_readability)32    df_sample['lexical_diversity'] = df_sample['text'].apply(lexical_diversity)33    df_sample['sentence_length'] = df_sample['text'].apply(sentence_length)34 35    # Convert text to TF-IDF vector36    X_tfidf = vectorizer.transform(df_sample['text'])37 38    # Combine TF-IDF features with extracted features39    X_sample = np.hstack((X_tfidf.toarray(), 40                          df_sample[['readability', 'lexical_diversity', 'sentence_length']].values))41 42    return X_sample43 44def predict_text(text):45    X_sample = preprocess_text(text)46    prediction = model.predict(X_sample)[0]47    confidence = model.predict_proba(X_sample)[:,1][0] 48    return prediction, confidence49