Spaces:
Sleeping
Sleeping
import streamlit as st | |
from transformers import BertTokenizer, BertForSequenceClassification | |
import torch | |
# Load the model and tokenizer from Hugging Face | |
def load_model(): | |
model_name = "pritamdeb68/BERTAIDetector" | |
model = BertForSequenceClassification.from_pretrained(model_name) | |
tokenizer = BertTokenizer.from_pretrained(model_name) | |
return model, tokenizer | |
# Load the model and tokenizer | |
model, tokenizer = load_model() | |
# Create a Streamlit app | |
st.title("AI Text Detector") | |
# Get user input | |
user_input = st.text_area("Enter your text:", height=300, placeholder="Enter your text here (10-100 words). Example: 'This is a sample text for analysis.'") | |
# Make predictions | |
if st.button("Detect"): | |
# Process user input | |
if len(user_input.split()) < 10: | |
st.error("Please enter at least 10 words.") | |
elif len(user_input.split()) > 100: | |
user_input = ' '.join(user_input.split()[:100]) | |
st.warning("Text truncated to 100 words.") | |
inputs = tokenizer(user_input, return_tensors="pt") | |
with torch.no_grad(): | |
logits = model(**inputs).logits | |
predicted_class = torch.argmax(logits).item() | |
confidence = torch.nn.functional.softmax(logits, dim=1) | |
max_confidence = confidence.max().item() | |
# Update predictions based on confidence levels | |
if max_confidence > 0.50 and predicted_class == 0: | |
st.write("This text is likely **Human-written** content.") | |
elif max_confidence < 0.90: | |
st.write("This text is likely a mix of **AI-generated** and **Human-written** content.") | |
elif predicted_class == 1: | |
st.write("This text is likely **AI-generated**.") | |
else: | |
st.write("This text is likely **Human Written**.") | |