# Building a Question and Answering Application using HuggingFace models # And the Streamlit library # Imports import torch import wikipedia import transformers import streamlit as st from transformers import pipeline, Pipeline # Helper Functions # Loads Summary of Topic From WikiPedia def load_wiki_summary(query:str) -> str: results = wikipedia.search(query) summary = wikipedia.summary(results[0], sentences=10) return summary # Load Question and Answering Bert Pipeline def load_qa_pipeline() -> Pipeline: qa_pipeline = pipeline("question-answering", model="distilbert-base-uncased-distilled-squad") return qa_pipeline # Answer the question given the pipeline input def answer_question(pipeline:Pipeline, question:str, paragraph:str) -> dict: input = { "question":question, "context":paragraph } output = pipeline(input) return output # Main app if __name__ == "__main__": # Display title and description st.title("Wikipedia Question Answering") st.write("Search a topic, Ask a Questions, and Get Answers!!") # Display Topic input slot topic = st.text_input("SEARCH TOPIC", "") # Display article paragraph article_paragraph = st.empty() # Display questino input slot question = st.text_input("QUESTON", "") if topic: # load wikipedia summary of topic summary = load_wiki_summary(topic) # Display article_paragraph.markdown(summary) # Perform Question Answering if question != "": # Load Question Answering Pipeline qa_pipeline = load_qa_pipeline() # Answer Query Question using article Summary result = answer_question(qa_pipeline, question, summary) answer = result["answer"] # display answer st.write(answer)