AI-Rephraser / app.py
imseldrith's picture
Update app.py
97d70c2
raw
history blame
2.29 kB
from flask import Flask, render_template, request
from textblob import TextBlob
import re
import nltk
from nltk.translate.bleu_score import sentence_bleu
from nltk.corpus import wordnet
from nltk.corpus import sentiwordnet as swn
from nltk.sentiment import SentimentIntensityAnalyzer
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/paraphrase', methods=['POST'])
def paraphrase():
input_text = request.form['input_text']
input_text = re.sub(r'[^\w\s]', '', input_text) # remove special characters
# Correct grammar using TextBlob
input_text = str(TextBlob(input_text).correct())
# Summarize the text using TextBlob
summarized_text = str(TextBlob(input_text).summarize())
# Paraphrase the text
paraphrased_text = generate_paraphrase(input_text)
# Emotion detection
emotion = detect_emotion(input_text)
# Named Entity Recognition
entities = nltk.ne_chunk(nltk.pos_tag(nltk.word_tokenize(input_text)))
# Part-of-Speech Tagging
pos_tags = nltk.pos_tag(nltk.word_tokenize(input_text))
# Sentiment Analysis
sentiment = SentimentIntensityAnalyzer().polarity_scores(input_text)
return render_template('index.html', input_text=input_text, summarized_text=summarized_text, paraphrased_text=paraphrased_text, entities=entities, pos_tags=pos_tags, sentiment=sentiment, emotion=emotion)
def generate_paraphrase(text):
# Use TextBlob to generate paraphrased text
paraphrased_text = str(TextBlob(text).words)
# Custom synonyms
custom_synonyms = [('happy', 'joyful'), ('sad', 'unhappy')]
for syn in custom_synonyms:
paraphrased_text = paraphrased_text.replace(syn[0], syn[1])
return paraphrased_text
def detect_emotion(text):
# Use SentiWordNet to detect emotion in text
emotions = []
words = nltk.word_tokenize(text)
for word in words:
synset = swn.senti_synsets(word)
if len(synset) > 0:
emotions.append(synset[0].pos_score() - synset[0].neg_score())
if emotions:
emotion = max(emotions)
else:
emotion = 0
return 'positive' if emotion > 0 else 'negative' if emotion < 0 else 'neutral'
if __name__ == '__main__':
app.run(host="0.0.0.0",port=7860,debug=True)