Spaces:
Build error
Build error
| import streamlit as st | |
| from time import sleep | |
| from stqdm import stqdm | |
| import pandas as pd | |
| from transformers import pipeline | |
| import json | |
| from transformers import AutoModelForSeq2SeqLM, AutoTokenizer | |
| def draw_all( | |
| key, | |
| plot=False, | |
| ): | |
| st.write( | |
| """ | |
| # NLP Web App | |
| This Natural Language Processing Based Web App can do anything u can imagine with Text. 😱 | |
| This App is built using pretrained transformers which are capable of doing wonders with the Textual data. | |
| ```python | |
| # Key Features of this App. | |
| 1. Advanced Text Summarizer | |
| 2. Key Word Extractor | |
| 3. Question Answering | |
| 4. Question Generation | |
| ``` | |
| """ | |
| ) | |
| with st.sidebar: | |
| draw_all("sidebar") | |
| #main function that holds all the options | |
| def main(): | |
| st.title("NLP IE Web App") | |
| menu = ["--Select--","Summarizer", | |
| "Keyword Extractor","Question Answering","Question Generation"] | |
| choice = st.sidebar.selectbox("What task would you like to do?", menu) | |
| if choice=="--Select--": | |
| st.write(""" | |
| Welcome to the the Web App of Data Dynamos. As an IE student of the Master of Business Analyitics and Big Data you have the opportunity to | |
| do anything with your lectures you like | |
| """) | |
| st.write(""" | |
| Never heard of NLP? No way! Natural Language Processing (NLP) is a computational technique | |
| to process human language in all of it's complexity | |
| """) | |
| st.write(""" | |
| NLP is an vital discipline in Artificial Intelligence and keeps growing | |
| """) | |
| st.image('banner_image.jpg') | |
| elif choice=="Summarizer": | |
| st.subheader("Text Summarization") | |
| st.write(" Enter the Text you want to summarize !") | |
| raw_text = st.text_area("Your Text","Enter Your Text Here") | |
| num_words = st.number_input("Enter Number of Words in Summary") | |
| if raw_text!="" and num_words is not None: | |
| num_words = int(num_words) | |
| summarizer = pipeline('summarization') | |
| summary = summarizer(raw_text, min_length=num_words,max_length=50) | |
| s1 = json.dumps(summary[0]) | |
| d2 = json.loads(s1) | |
| result_summary = d2['summary_text'] | |
| result_summary = '. '.join(list(map(lambda x: x.strip().capitalize(), result_summary.split('.')))) | |
| st.write(f"Here's your Summary : {result_summary}") | |
| elif choice=="Keyword Extractor": | |
| st.subheader("Keyword Extraction") | |
| #loading the pipeline | |
| model_name = "yanekyuk/bert-uncased-keyword-extractor" | |
| keyword_extractor = pipeline("text2text-generation", model=model_name, tokenizer=model_name) | |
| input_text = st.text_area("Enter some text:") | |
| if st.button("Extract Keywords"): | |
| # Extract keywords using the model | |
| keywords = keyword_extractor(input_text, max_length=20, do_sample=False)[0]["generated_text"] | |
| # Display the extracted keywords | |
| st.write("Keywords:", keywords) | |
| elif choice=="Question Answering": | |
| st.subheader("Question Answering") | |
| st.write(" Enter the Context and ask the Question to find out the Answer !") | |
| question_answering = pipeline("question-answering", model = "distilbert-base-cased-distilled-squad") | |
| context = st.text_area("Context","Enter the Context Here") | |
| #This is the text box for the question | |
| question = st.text_area("Your Question","Enter your Question Here") | |
| if context !="Enter Text Here" and question!="Enter your Question Here": | |
| #we are passing question and the context | |
| result = question_answering(question=question, context=context) | |
| #dump the result in json and load it again | |
| s1 = json.dumps(result) | |
| d2 = json.loads(s1) | |
| generated_text = d2['answer'] | |
| #joining and capalizing by dot | |
| generated_text = '. '.join(list(map(lambda x: x.strip().capitalize(), generated_text.split('.')))) | |
| st.write(f" Here's your Answer :\n {generated_text}") | |
| elif choice=="Question Generation": | |
| st.subheader("Question Generation") | |
| st.write(" Enter the text to get questions generated !") | |
| # Load the T5 model and tokenizer | |
| model = AutoModelForSeq2SeqLM.from_pretrained("mrm8488/t5-base-finetuned-question-generation-ap") | |
| tokenizer = AutoTokenizer.from_pretrained("mrm8488/t5-base-finetuned-question-generation-ap") | |
| text_input2 = st.text_area("Your Text","Enter the Text to complete") | |
| # Create a button to generate questions | |
| if st.button("Generate Questions"): | |
| #Encode the input text using the tokenizer | |
| input_ids = tokenizer.encode("generate questions: " + text_input2, return_tensors="pt") | |
| # Use the T5 model to generate questions | |
| question_ids = model.generate(input_ids) | |
| # Decode the questions from the output ids using the tokenizer | |
| questions = tokenizer.decode(question_ids[0], skip_special_tokens=True) | |
| # Display the questions to the user | |
| st.write(questions) | |
| #main function to run | |
| if __name__ == '__main__': | |
| main() | |