import argparse import pandas as pd from text_analysis import show_text_analysis from binoculars_utils import initialize_binoculars, compute_scores from model_utils import load_model, classify_text def main(): parser = argparse.ArgumentParser(description='Text classifier demonstration (Human vs AI)') parser.add_argument('--text', type=str, help='Text for classification') parser.add_argument('--file', type=str, help='Path to file with text') parser.add_argument('--analysis', action='store_true', help='Show detailed text analysis') parser.add_argument('--compute-scores', action='store_true', help='Compute score_chat and score_coder') args = parser.parse_args() bino_chat = None bino_coder = None if args.compute_scores: bino_chat, bino_coder = initialize_binoculars() print("Loading binary classifier model...") model, scaler, label_encoder, imputer = load_model() if args.text: text = args.text elif args.file: with open(args.file, 'r', encoding='utf-8') as f: text = f.read() else: text = input("Enter text for classification: ") scores = None if args.compute_scores: scores = compute_scores(text, bino_chat, bino_coder) print(f"\nAnalyzing text...") result = classify_text(text, model, scaler, label_encoder, imputer=imputer, scores=scores) print("\n" + "="*50) print("CLASSIFICATION RESULTS") print("="*50) print(f"Predicted class: {result['predicted_class']}") print("Class probabilities:") for cls, prob in result['probabilities'].items(): print(f" - {cls}: {prob:.4f}") if scores: print("\nComputed scores:") if 'score_chat' in scores: print(f" - Score Chat: {scores['score_chat']:.4f}") if 'score_coder' in scores: print(f" - Score Coder: {scores['score_coder']:.4f}") if args.analysis: show_text_analysis(result['text_analysis']) if args.compute_scores: if bino_chat: bino_chat.free_memory() if bino_coder: bino_coder.free_memory() if __name__ == "__main__": main()