import transformers import gradio as gr import git import os os.system("pip install --upgrade pip") #Load arabert preprocessor import git git.Git("arabert").clone("https://github.com/aub-mind/arabert") from arabert.preprocess import ArabertPreprocessor arabert_prep = ArabertPreprocessor(model_name="bert-base-arabert", keep_emojis=False) #Load Model from transformers import EncoderDecoderModel, AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("tareknaous/bert2bert-empathetic-response-msa") model = EncoderDecoderModel.from_pretrained("tareknaous/bert2bert-empathetic-response-msa") model.eval() def generate_response(text, minimum_length, p, temperature): text_clean = arabert_prep.preprocess(text) inputs = tokenizer.encode_plus(text_clean,return_tensors='pt') outputs = model.generate(input_ids = inputs.input_ids, attention_mask = inputs.attention_mask, do_sample = True, min_length=minimum_length, top_p = p, temperature = temperature) preds = tokenizer.batch_decode(outputs) response = str(preds) response = response.replace("\'", '') response = response.replace("[[CLS]", '') response = response.replace("[SEP]]", '') response = str(arabert_prep.desegment(response)) return response # title = 'Empathetic Response Generation in Arabic' # description = 'This demo is for a BERT2BERT model trained for single-turn open-domain empathetic dialogue response generation in Modern Standard Arabic' css = """ .rtlClass {direction:rtl !important} """ with gr.Blocks(css=css) as demo: with gr.Column(): gr.Markdown("Empathetic Response Generation in Arabic") chatbot = gr.Chatbot(elem_classes="rtlClass").style(height=400) msg = gr.Textbox(placeholder="ارسل رسالة",show_label=False,elem_classes="rtlClass").style(container=False) with gr.Column(): output_slider=gr.Slider(5, 20, step=1, label='Minimum Output Length') top_p_slider=gr.Slider(0.7, 1, step=0.1, label='Top-P') temperature_slider=gr.Slider(1, 3, step=0.1, label='Temperature') clear = gr.Button("Clear Chat") def respond(message,chat_history,output_slider,top_p_slider,temperature_slider): bot_message = generate_response(message,output_slider,top_p_slider,temperature_slider) chat_history.append((message, bot_message)) return "", chat_history msg.submit(respond, [msg, chatbot,output_slider,top_p_slider,temperature_slider], [msg, chatbot]) clear.click(lambda: None, None, chatbot, queue=False) demo.launch()