brian-challenge / app.py
Christian Koch
load nltk punkt
479b050
raw
history blame
No virus
4.6 kB
import streamlit as st
from transformers import pipeline, PegasusForConditionalGeneration, PegasusTokenizer, AutoTokenizer, AutoModelForSeq2SeqLM
import nltk
from fill_in_summary import FillInSummary
from paraphrase import PegasusParaphraser
import question_generator as q
nltk.download('punkt')
tokenizer = AutoTokenizer.from_pretrained("google/mt5-small")
model = AutoModelForSeq2SeqLM.from_pretrained("google/mt5-small")
st.set_page_config(layout="centered")
st.title('Question Generator by Eddevs')
select = st.selectbox('Type', ['Question Generator', 'Paraphrasing', 'Summarization', 'Fill in the blank'])
if select == "Question Generator":
with st.form("question_gen"):
# left_column, right_column = st.columns(2)
# left_column.selectbox('Type', ['Question Generator', 'Paraphrasing'])
#st.selectbox('Model', ['T5', 'GPT Neo-X'])
text_input = st.text_area("Input Text")
submitted = st.form_submit_button("Generate")
split = st.checkbox('Split into sentences', value=True)
if split:
# Split into sentences
sent_tokenized = nltk.sent_tokenize(text_input)
res = {}
with st.spinner('Please wait while the inputs are being processed...'):
# Iterate over sentences
for sentence in sent_tokenized:
predictions = model.multitask([sentence], max_length=512)
questions, answers, answers_bis = predictions['questions'], predictions['answers'], predictions[
'answers_bis']
# Build answer dict
content = {}
for question, answer, answer_bis in zip(questions[0], answers[0], answers_bis[0]):
content[question] = {'answer (extracted)': answer, 'answer (generated)': answer_bis}
res[sentence] = content
# Answer area
st.write(res)
else:
with st.spinner('Please wait while the inputs are being processed...'):
# Prediction
predictions = model.multitask([text_input], max_length=512)
questions, answers, answers_bis = predictions['questions'], predictions['answers'], predictions[
'answers_bis']
# Answer area
zip = zip(questions[0], answers[0], answers_bis[0])
content = {}
for question, answer, answer_bis in zip:
content[question] = {'answer (extracted)': answer, 'answer (generated)': answer_bis}
st.write(content)
if submitted:
with st.spinner('Wait for it...'):
result = FillInSummary().summarize(text_input)
st.write(text_input)
elif select == "Summarization":
with st.form("summarization"):
# left_column, right_column = st.columns(2)
# left_column.selectbox('Type', ['Question Generator', 'Paraphrasing'])
#st.selectbox('Model', ['T5', 'GPT Neo-X'])
text_input = st.text_area("Input Text")
submitted = st.form_submit_button("Generate")
if submitted:
with st.spinner('Wait for it...'):
result = FillInSummary().summarize(text_input)
st.write(text_input)
elif select == "Fill in the blank":
with st.form("fill_in_the_blank"):
text_input = st.text_area("Input Text")
submitted = st.form_submit_button("Generate")
if submitted:
with st.spinner('Wait for it...'):
fill = FillInSummary()
result = fill.summarize(text_input)
result = fill.blank_ne_out(result)
st.write(result)
elif select == "Paraphrasing":
with st.form("paraphrasing"):
# st.selectbox('Model', ['T5', 'GPT Neo-X'])
left_column, right_column = st.columns(2)
count = left_column.slider('Count', 0, 10, 3)
temperature = right_column.slider('Temperature', 0.0, 10.0, 1.5)
text_input = st.text_area("Input Text")
submitted = st.form_submit_button("Generate")
if submitted:
with st.spinner('Wait for it...'):
paraphrase_model = PegasusParaphraser(num_return_sequences=count,temperature=temperature)
result = paraphrase_model.paraphrase(text_input)
st.write(result)
#if st.button('Generate'):
# st.write(input)
#st.success("We have generated 105 Questions for you")
# st.snow()
##else:
##nothing here