Mary12's picture
Update app.py
33b63e4
raw
history blame
3.2 kB
import gradio as gr
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
import torch
import transformers
from transformers import pipeline
import re
# import HTML
from pypdf import PdfReader
def remove_references(text):
text = re.sub(r'\[\d+\]', '', text) ##[ref]
text = re.sub(r'\[https?://[^\[\]]+\s[^\[\]]+\]', '', text) ##hyperlink with text
text = re.sub(r'\[https?://[^\[\]]+\]', '', text) ##just the hyperlink
# text = html.unescape(text)
text = re.sub(r'\s+', ' ', text).strip() ##clear out the white spaces
return text
def extract_text_from_pdf(file_path):
reader = PdfReader(file_path)
text = ""
for page in reader.pages[2:]:
text += page.extract_text() + "\n"
return text
def model(model_name):
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForQuestionAnswering.from_pretrained(model_name,return_dict = False)
model_pipeline = pipeline(
"question-answering",
model = model,
tokenizer = tokenizer
)
return model_pipeline
def qa_result(context, question, file_path):
model_name = "timpal0l/mdeberta-v3-base-squad2"
pipe = model(model_name)
if file_path is not None:
context = extract_text_from_pdf(file_path)
result = pipe(question=question, context=context)
answered = result['answer']
text = remove_references(answered)
elif len(context) == 0 and len(question) == 0:
text = "Որպեսզի ես կարողանամ քեզ օգնել, ինձ պիտի տրամադրես համապատասխան տեքստն ու հարցերը։"
elif len(context) == 0:
text = "Ես չեմ կարողանամ քեզ օգնել եթե ինձ չտրամադրես տեքստը"
elif len(question) == 0:
text = "Ես չեմ կարողանամ քեզ օգնել եթե ինձ չտաս հարցդ"
else:
# if file_path is not None:
# # File was uploaded, extract text from the file
# context = extract_text_from_pdf(file_path)
# else: No file uploaded, use the provided context as is
result = pipe(question=question, context=context)
answered = result['answer']
text = remove_references(answered)
text = text.replace('(', '', 1)
text = text.replace(',', '', len(text)-1)
return text.capitalize()
theme = gr.themes.Soft().set(
body_background_fill='*background_fill_secondary',
body_text_color_subdued='*body_text_color',
body_text_color_subdued_dark='*chatbot_code_background_color'
)
def add_file(history, file):
history = history + [((file.name,), None)]
return history
app = gr.Interface(
fn=qa_result,
btn=gr.UploadButton("📁", file_types=[".pdf", ".csv", ".doc"], ),
inputs=['textbox', 'text', 'file'],
outputs='textbox',
title='Ողջու՛յն։ Ես քո արհեստական բանականությամբ օգնականն եմ',
theme=theme,
description='Տու՛ր ինձ տեքստ, ու տեքստին վերաբերող հարցեր, ու ես կօգնեմ քեզ պատասխանել հարցերին'
)
app.launch(inline=False)