RU_AI_Detector / main.py
CoffeBank's picture
update
8db7949
raw
history blame contribute delete
2.27 kB
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()