|
import time |
|
from io import StringIO |
|
import streamlit as st |
|
import joblib |
|
from transformers import pipeline |
|
from lmqg import TransformersQG |
|
|
|
|
|
|
|
def break_paragraph_into_parts(paragraph, max_length): |
|
sentences = paragraph.split(". ") |
|
temp_parts = [] |
|
part = '' |
|
for sentence in sentences: |
|
if len(part) + len(sentence) <= max_length: |
|
part += sentence + ". " |
|
else: |
|
temp_parts.append(part) |
|
part = sentence + ". " |
|
temp_parts.append(part) |
|
|
|
parts = [part.strip() for part in temp_parts] |
|
|
|
return parts |
|
|
|
|
|
def util(NumQues,Input): |
|
|
|
context = break_paragraph_into_parts(Input,512) |
|
context = context[:NumQues] |
|
|
|
|
|
generatedQuestions = [] |
|
Question_Generator=joblib.load("Qgenerator.sav") |
|
|
|
for part in context: |
|
question = Question_Generator.generate_q(list_context=part, list_answer="") |
|
generatedQuestions.append(question) |
|
|
|
|
|
|
|
load_pipeline=joblib.load('Agenerator.sav') |
|
|
|
generatedAnswers=[] |
|
for Q in generatedQuestions: |
|
print(Q,'\n') |
|
gen_answer=load_pipeline(question=Q, context=Input) |
|
generatedAnswers.append(gen_answer['answer']) |
|
|
|
for i in range(len(generatedAnswers)): |
|
code = f'Ques: "{generatedQuestions[i]}"\nAns: "{generatedAnswers[i]}"' |
|
st.code(code, language='python') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
st.title('Question Answer Pair Generation from Documents') |
|
|
|
tab1, tab2 = st.tabs(["Enter Text", "Choose Document"]) |
|
|
|
flag='None' |
|
|
|
with st.sidebar: |
|
st.image('Pic.png') |
|
st.title("Final Year Project") |
|
st.divider() |
|
code = '''Team Members CSE(20-37): |
|
\nPrateek Niket BT20CSE211 \nSmriti Singh BT20CSE156 \nAmbuj Raj BT20CSE054 \nSrishti Pandey BT20CSE068''' |
|
st.code(code, language='JAVA') |
|
code = '''Mentored By: \nDr. Amol Bhopale''' |
|
st.code(code, language='JAVA') |
|
|
|
|
|
with tab1: |
|
txt = st.text_area( |
|
"Enter Text to Generate Question-Answer" |
|
) |
|
flag='text' |
|
|
|
with tab2: |
|
uploaded_file = st.file_uploader("Choose a file", type=['txt'], accept_multiple_files=False) |
|
if uploaded_file is not None: |
|
|
|
stringio = StringIO(uploaded_file.getvalue().decode("utf-8")) |
|
txt = stringio.read() |
|
flag='file' |
|
|
|
NumQues = st.slider('No. of Questions to Generate: ', 1, 5, 1) |
|
|
|
|
|
if st.button('Generate',type="primary"): |
|
with st.spinner('Question Answer pair Generation in Progress....'): |
|
util(NumQues,txt) |
|
st.success('Question Answer pair Generated Successfully!') |
|
|
|
|
|
|
|
|