Spaces:
Running
Running
File size: 3,445 Bytes
b0503ee 9079e3b 84669bc b0503ee 7feda08 7fc55d1 9079e3b 96ac1ff 8e09e8c 9079e3b b0503ee 7fc55d1 6ba2176 b0503ee 6ba2176 9079e3b 6ba2176 7feda08 96ac1ff 9079e3b 96ac1ff b0503ee 5065a5b b0503ee 9079e3b 96ac1ff aed9390 96ac1ff b0503ee |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
import os
import subprocess
import sys
import gradio as gr
from transformers import pipeline
import spacy
import nltk
from nltk.corpus import wordnet
# Function to install GECToR
def install_gector():
if not os.path.exists('gector'):
print("Cloning GECToR repository...")
subprocess.run(["git", "clone", "https://github.com/grammarly/gector.git"], check=True)
# Install dependencies from GECToR requirements
subprocess.run([sys.executable, "-m", "pip", "install", "-r", "gector/requirements.txt"], check=True)
# Manually add GECToR to the Python path
sys.path.append(os.path.abspath('gector'))
# Install and import GECToR
install_gector()
# Ensure the gector module path is added correctly
sys.path.insert(0, os.path.abspath('./gector'))
# Import GECToR after installation
from gector.gec_model import GecBERTModel
# Initialize GECToR model for grammar correction
gector_model = GecBERTModel(vocab_path='gector/data/output_vocabulary',
model_paths=['https://grammarly-nlp-data.s3.amazonaws.com/gector/roberta_1_gector.th'],
is_ensemble=False)
# Initialize the English text classification pipeline for AI detection
pipeline_en = pipeline(task="text-classification", model="Hello-SimpleAI/chatgpt-detector-roberta")
# Function to predict the label and score for English text (AI Detection)
def predict_en(text):
res = pipeline_en(text)[0]
return res['label'], res['score']
# Ensure necessary NLTK data is downloaded for Humanifier
nltk.download('wordnet')
nltk.download('omw-1.4')
# Ensure the SpaCy model is installed for Humanifier
try:
nlp = spacy.load("en_core_web_sm")
except OSError:
subprocess.run([sys.executable, "-m", "spacy", "download", "en_core_web_sm"])
nlp = spacy.load("en_core_web_sm")
# Function to correct grammar using GECToR
def correct_grammar_with_gector(text):
corrected_sentences = []
sentences = [text]
for sentence in sentences:
preds = gector_model.handle_batch([sentence])
corrected_sentences.append(preds[0])
return ' '.join(corrected_sentences)
# Gradio app setup with three tabs
with gr.Blocks() as demo:
with gr.Tab("AI Detection"):
t1 = gr.Textbox(lines=5, label='Text')
button1 = gr.Button("🤖 Predict!")
label1 = gr.Textbox(lines=1, label='Predicted Label 🎃')
score1 = gr.Textbox(lines=1, label='Prob')
# Connect the prediction function to the button
button1.click(predict_en, inputs=[t1], outputs=[label1, score1], api_name='predict_en')
with gr.Tab("Humanifier"):
text_input = gr.Textbox(lines=5, label="Input Text")
paraphrase_button = gr.Button("Paraphrase & Correct")
output_text = gr.Textbox(label="Paraphrased Text")
# Connect the paraphrasing function to the button
paraphrase_button.click(correct_grammar_with_gector, inputs=text_input, outputs=output_text)
with gr.Tab("Grammar Correction"):
grammar_input = gr.Textbox(lines=5, label="Input Text")
grammar_button = gr.Button("Correct Grammar")
grammar_output = gr.Textbox(label="Corrected Text")
# Connect the GECToR grammar correction function to the button
grammar_button.click(correct_grammar_with_gector, inputs=grammar_input, outputs=grammar_output)
# Launch the app with all functionalities
demo.launch()
|