Spaces:
Running
Running
import gradio as gr | |
from transformers import pipeline | |
import re | |
# Load the pre-trained AI text classification model | |
detector = pipeline("text-classification", model="roberta-base-openai-detector") | |
# Count words in the input text | |
def count_words(text): | |
return len(re.findall(r'\b\w+\b', text)) | |
# Count characters (excluding spaces) | |
def count_characters(text): | |
return len(text.replace(" ", "")) | |
# Detect if the text is AI-generated or human-written | |
def detect_text(text): | |
if not text.strip(): | |
return "No text entered." | |
result = detector(text)[0] | |
label = result['label'] | |
score = round(result['score'] * 100, 2) | |
return f"Prediction: {label} ({score}%)" | |
# Perform full analysis | |
def full_analysis(text): | |
prediction = detect_text(text) | |
words = count_words(text) | |
chars = count_characters(text) | |
return f"{prediction}\n\nWord Count: {words}\nCharacter Count: {chars}" | |
description = """ | |
Detect whether a given text is AI-generated or human-written. | |
Also view word and character count for basic analysis. | |
""" | |
examples = [ | |
["The sun sets beautifully behind the hills every evening."], | |
["As an AI language model developed by OpenAI, I am capable of many tasks."], | |
["She opened the book and smiled as the story unfolded."] | |
] | |
with gr.Blocks(title="Text AI Detector") as interface: | |
gr.Markdown("# Text AI Detector") | |
gr.Markdown(description) | |
with gr.Tab("Detector"): | |
text_input = gr.Textbox(label="Input Text", lines=8, placeholder="Type or paste your text here...") | |
analyze_btn = gr.Button("Analyze") | |
output = gr.Textbox(label="Result", lines=6) | |
analyze_btn.click(fn=full_analysis, inputs=text_input, outputs=output) | |
with gr.Tab("Examples"): | |
gr.Examples(examples=examples, inputs=[text_input], outputs=[output], fn=full_analysis) | |
gr.Markdown("---") | |
gr.Markdown("Final Year Project | Built with Hugging Face + Gradio") | |
if __name__ == "__main__": | |
interface.launch(share=True) | |