Spaces:
Runtime error
Runtime error
File size: 4,275 Bytes
64c0a70 163cb0f 7885b8a 8dd5245 163cb0f 1844fcc 163cb0f cd60fbf ce8e249 cd07ca3 cd60fbf cd07ca3 a332ad5 622bf47 1844fcc 622bf47 1844fcc 64c0a70 1844fcc cd60fbf 64c0a70 d7777dc 5686e63 622bf47 38e8419 5411bee 622bf47 3ef1c4c 622bf47 3ef1c4c 565f1e3 cde1476 565f1e3 1844fcc 6db4296 1844fcc 6db4296 1844fcc 5686e63 1844fcc 64c0a70 f330131 cde1476 cb7ece1 f330131 536b8f8 |
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 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
import gradio as gr
import re
from pypdf import PdfReader
from transformers import AutoTokenizer, AutoModelForQuestionAnswering, pipeline
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):
# text = ""
# pdf_reader = PdfReader(file_path)
# for page in pdf_reader.pages:
# text += page.extract_text() + "\n"
# return text
import fitz # PyMuPDF
def extract_text_from_pdf(file_path):
text = ""
pdf_document = fitz.open(file_path)
for page_num in range(pdf_document.page_count):
page = pdf_document[page_num]
text += page.get_text("text") + "\n"
pdf_document.close()
return text
def extract_text_from_txt(file_path):
text = ""
with open(file_path, "r", encoding='utf-8') as txt_file:
text = txt_file.read()
return text
def extract_text_from_doc(file_path):
text - ""
doc = docx.Document(file_path)
for texts in doc.paragraphs:
text+= texts.text + "\n"
return texts
def model(model_name):
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForQuestionAnswering.from_pretrained(model_name,return_dict = False)
model_pipeline = pipeline4
"question-answering",
model = model,
tokenizer = tokenizer
)
return model_pipeline
model_name = "timpal0l/mdeberta-v3-base-squad2"
pipe = model(model_name)
def qa_result( context, question, file, pipe = pipe):
if file is not None:
allowed_types = [".pdf", ".txt", ".doc"]
extension = "." + file.name.split(".")[-1].lower()
if not extension in allowed_types:
text = "Խնդրում եմ ներբեռնել .pdf, .txt, կամ .doc տիպի ֆայլեր։"
else:
if extension is allowed_types[0]:
context = extract_text_from_pdf(file.name)
elif extension is allowed_types[1]:
context = extract_text_from_txt(file.name)
else:
context = extract_text_from_doc(file.name)
result = pipe(question=question, context=context)
answered = result['answer']
text = remove_references(answered)
elif file is None and len(context) == 0 and len(question) == 0:
text = "Որպեսզի ես կարողանամ քեզ օգնել, ինձ պիտի տրամադրես համապատասխան տեքստն կամ ֆայլն ու հարցերը։"
else:
if len(context) == 0 and len(question) == 0:
text = "Որպեսզի ես կարողանամ քեզ օգնել, ինձ պիտի տրամադրես համապատասխան տեքստն ու հարցերը։"
elif len(context) == 0:
text = "Ես չեմ կարողանա քեզ օգնել եթե ինձ չտրամադրես տեքստը"
elif len(context) == 0:
text = "Ես չեմ կարողանա քեզ օգնել եթե ինձ չտաս հարցդ"
else:
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'
)
app = gr.Interface(
fn=qa_result,
btn=gr.UploadButton("📁"),
inputs=['textbox', 'text', gr.inputs.File()],
outputs='textbox',
title='Ողջու՛յն։ Ես քո արհեստական բանականությամբ օգնականն եմ',
theme=theme,
description='Տու՛ր ինձ տեքստ, ու տեքստին վերաբերող հարցեր, ու ես կօգնեմ քեզ պատասխանել հարցերին'
)
app.launch(inline=False) |