Spaces:
Running
Running
from flask import Flask, render_template, request | |
from nltk.corpus import wordnet | |
from nltk.tokenize import word_tokenize | |
from nltk.corpus import stopwords | |
from nltk.stem import WordNetLemmatizer | |
from summa.summarizer import summarize | |
from textblob import TextBlob | |
import spacy | |
app = Flask(__name__) | |
def index(): | |
return render_template("index.html") | |
def paraphrase(): | |
input_text = request.form["input_text"] | |
# Option to correct grammar using TextBlob | |
corrected_text = str(TextBlob(input_text).correct()) | |
# Option to remove special characters | |
clean_text = ''.join(e for e in corrected_text if e.isalnum() or e.isspace()) | |
# Perform text summarization | |
summary = summarize(clean_text) | |
# Perform word tokenization and remove stopwords | |
stop_words = set(stopwords.words("english")) | |
words = word_tokenize(summary) | |
words = [word for word in words if word.lower() not in stop_words] | |
# Perform lemmatization on the words | |
lemmatizer = WordNetLemmatizer() | |
lemmatized_words = [lemmatizer.lemmatize(word, pos=get_wordnet_pos(word)) for word in words] | |
# Load spaCy's NER model | |
nlp = spacy.load("en_core_web_sm") | |
# Use spaCy's NER to identify named entities in the input text | |
doc = nlp(summary) | |
entities = [] | |
for ent in doc.ents: | |
entities.append((ent.text, ent.label_)) | |
# Use spaCy's POS tagging on the input text | |
pos_tags = [] | |
for token in doc: | |
pos_tags.append((token.text, token.pos_)) | |
# Use TextBlob to perform sentiment analysis on the input text | |
sentiment = TextBlob(summary).sentiment.polarity | |
return render_template("paraphrase.html", input_text=input_text, output_text=' '.join(lemmatized_words), entities=entities, pos_tags=pos_tags, sentiment=sentiment) | |
def get_wordnet_pos(word): | |
"""Map POS tag to first character used by WordNetLemmatizer""" | |
tag = nltk.pos_tag([word])[0][1] | |
tag = tag[0].upper() | |
tag_dict = {"J": wordnet.ADJ, | |
"N": wordnet.NOUN, | |
"V": wordnet.VERB, | |
"R": wordnet.ADV} | |
return tag_dict.get(tag, wordnet.NOUN) | |
if __name__ == "__main__": | |
app.run(host="0.0.0.0",port=7860,debug=True) |