File size: 2,804 Bytes
4d05807
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6ae9cee
4d05807
 
 
 
 
 
 
6ae9cee
4d05807
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
618042c
4d05807
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
618042c
4d05807
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import time
from io import StringIO
import streamlit as st
import joblib
from transformers import pipeline
from lmqg import TransformersQG

#util func starts here

def break_paragraph_into_parts(paragraph, max_length):
    sentences = paragraph.split(". ")  # Assuming that the sentences end with a period and a space
    temp_parts = []
    part = ''
    for sentence in sentences:
        if len(part) + len(sentence) <= max_length:
            part += sentence + ". "  # Add the sentence and the period back
        else:
            temp_parts.append(part)
            part = sentence + ". "  # Start a new part with the remaining sentence
    temp_parts.append(part)  # Add the last part

    parts = [part.strip() for part in temp_parts]  # Remove any leading/trailing spaces

    return parts


def util(NumQues,Input):

    context = break_paragraph_into_parts(Input,512)
    context = context[:NumQues]

    #Question generation
    generatedQuestions = []
    Question_Generator=joblib.load("Qgenerator.sav")

    for part in context:
        question = Question_Generator.generate_q(list_context=part, list_answer="")
        generatedQuestions.append(question)


    #Answer Generation
    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')

#util func ends here






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:
        # To convert to a string based IO:
        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!')