File size: 1,533 Bytes
3c63390
d7215ca
116a19e
43e821a
 
d7215ca
 
 
 
116a19e
 
3c63390
116a19e
43e821a
 
116a19e
 
 
 
 
43e821a
ff3fe58
116a19e
 
 
 
 
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
import streamlit as st
from transformers import pipeline, AutoModelForQuestionAnswering, AutoTokenizer

@st.cache(allow_output_mutation=True)
def load_qa_model():
    model_name = "mrm8488/mobilebert-uncased-finetuned-squadv2"
    model = AutoModelForQuestionAnswering.from_pretrained(model_name)
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    qa = pipeline("question-answering", model=model, tokenizer=tokenizer)
    text_generator = pipeline("text-generation")
    return qa, text_generator

qa, text_generator = load_qa_model()
st.title("Ask Questions about your Text")
sentence = st.text_area('Please paste your article :', height=30)
num_questions = st.number_input("Number of questions to generate:", min_value=1, max_value=10, value=3, step=1)
num_answers = st.number_input("Number of answers per question:", min_value=1, max_value=5, value=1, step=1)
button = st.button("Generate Questions and Answers")

with st.spinner("Generating Questions and Answers.."):
    if button and sentence:
        generated_questions = text_generator(sentence, max_length=100, num_return_sequences=num_questions)
        for question_index, question_output in enumerate(generated_questions):
            st.subheader(f"Question {question_index + 1}: {question_output['generated_text']}")
            answers = qa(question=question_output['generated_text'], context=sentence, topk=num_answers)
            for answer_index, answer in enumerate(answers):
                st.write(f"Answer {answer_index + 1}: {answer['answer']}")