|
|
|
|
|
import gradio as gr |
|
import requests |
|
import argparse |
|
|
|
args_dict = dict( |
|
EX_LIST = [["This is wonderful!"], |
|
["Nice car"], |
|
["La France est la meilleure รฉquipe du monde"], |
|
["Visca Barca"], |
|
["Hala Madrid"], |
|
["Buongiorno"], |
|
|
|
["Tempo soleggiato in Italia"], |
|
["Bonjour"], |
|
["ุตุจุงุญ ุงูุฎูุฑ"], |
|
["ุงูู ุฒูุฌุชู ุฌู
ูู"], |
|
], |
|
|
|
description = 'Real-time Emoji Prediction', |
|
article = '<head><style>@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,700italic,800italic,400,600,700,800)<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css"> <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/bootstrap-table.min.css">\ |
|
.table-responsive{-sm|-md|-lg|-xl} body{ background-color: #f5f5f5; padding: 120px 0; font-family: \'Open Sans\', sans-serif; } img{ max-width:100%; } .div_table_{ position:relative; width: max-content; margin:0 auto; } .profile-card{ position:relative; width:280px; margin:0 auto; padding:40px 30px 30px; background:#fff; border: 5px solid rgba(255,255,255,.7); text-align:center; border-radius:40px; transition: all 200ms ease; } .profile-card_2{ position:relative; width:60%; // margin:0 auto; padding:40px 30px 30px; background:#fff; border: 5px solid rgba(255,255,255,.7); text-align:center; border-radius:40px; transition: all 200ms ease; } .mask-shadow{ z-index:-1 !important; width:95%; height:12px; background:#000; bottom:0; left:0; right:0; margin:0 auto; position:absolute; border-radius:4px; opacity:0; transition: all 400ms ease-in; } .mask-shadow_2{ z-index:-1 !important; width:95%; height:12px; background:#000; bottom:0; left:0; right:0; margin:0 auto; position:absolute; border-radius:4px; opacity:0; transition: all 400ms ease-in; } .profile-card:hover{ box-shadow: 0px 30px 60px -5px rgba(55,55,71,0.3); transform: translate3d(0,-5px,0); .mask-shadow{ opacity:1; box-shadow: 0px 30px 60px -5px rgba(55,55,71,0.3); position:absolute; } } .profile-card_2:hover{ box-shadow: 0px 30px 60px -5px rgba(55,55,71,0.3); transform: translate3d(0,-5px,0); .mask-shadow{ opacity:1; box-shadow: 0px 30px 60px -5px rgba(55,55,71,0.3); position:absolute; } } .profile-card header{ display:block; margin-bottom:10px; } .profile-card_2 header{ display:block; margin-bottom:10px; } .profile-card header a{ width:150px; height:150px; display:block; border-radius:100%; margin:-120px auto 0; box-shadow: 0 0 0 5px #82b541; } .profile-card_2 header a{ width:85%; height:85%; display:block; border-radius:10%; margin:-120px auto 0; box-shadow: 0 0 0 5px #82b541; } .profile-card header a img{ border-radius: 50%; width:150px; height:150px; } .profile-card_2 header a img{ border-radius: 10%; width:100%; height:100%; } .profile-card:hover header a, .profile-card header a:hover{ animation: bounceOut .4s linear; -webkit-animation: bounceOut .4s linear; } .profile-card_2:hover header a, .profile-card header a:hover{ animation: bounceOut .4s linear; -webkit-animation: bounceOut .4s linear; } .profile-card header h1{ font-size:20px; padding:20px; color:#444; text-transform:uppercase; margin-bottom:5px; } .profile-card_2 header h1{ font-size:20px; padding:20px; color:#444; text-transform:uppercase; margin-bottom:5px; } .profile-card header h2{ font-size:14px; color:#acacac; text-transform:uppercase; margin:0; } .profile-card_2 header h2{ font-size:14px; color:#acacac; text-transform:uppercase; margin:0; } /*content*/ .profile-bio{ font-size:14px; color:#a5a5a5; line-height:1.7; font-style: italic; margin-bottom:30px; } /*link social*/ .profile-social-links{ margin:0; padding:0; list-style:none; } .profile-social-links li{ display: inline-block; margin: 0 10px; } .profile-social-links li a{ width: 55px; height:55px; display:block; background:#f1f1f1; border-radius:50%; -webkit-transition: all 2.75s cubic-bezier(0,.83,.17,1); -moz-transition: all 2.75s cubic-bezier(0,.83,.17,1); -o-transition: all 2.75s cubic-bezier(0,.83,.17,1); transition: all 2.75s cubic-bezier(0,.83,.17,1); transform-style: preserve-3d; } .profile-social-links li a img{ width:35px; height:35px; margin:10px auto 0; } .profile-social-links li a:hover{ background:#ddd; transform: scale(1.2); -webkit-transform: scale(1.2); } /*animation hover effect*/ @-webkit-keyframes bounceOut { 0% { box-shadow: 0 0 0 4px #82b541; opacity: 1; } 25% { box-shadow: 0 0 0 1px #82b541; opacity: 1; } 50% { box-shadow: 0 0 0 7px #82b541; opacity: 1; } 75% { box-shadow: 0 0 0 4px #82b541; opacity: 1; } 100% { box-shadow: 0 0 0 5px #82b541; opacity: 1; } } @keyframes bounceOut { 0% { box-shadow: 0 0 0 6px #82b541; opacity: 1; } 25% { box-shadow: 0 0 0 2px #82b541; opacity: 1; } 50% { box-shadow: 0 0 0 9px #82b541; opacity: 1; } 75% { box-shadow: 0 0 0 3px #82b541; opacity: 1; } 100% { box-shadow: 0 0 0 5px #82b541; opacity: 1; } }</style></head>', |
|
|
|
|
|
) |
|
|
|
config = argparse.Namespace(**args_dict) |
|
|
|
|
|
|
|
|
|
list_interface = [] |
|
list_title = [] |
|
|
|
|
|
def preprocess(text): |
|
text = text.lower() |
|
new_text = [] |
|
for t in text.split(" "): |
|
t = '@user' if t.startswith('@') and len(t) > 1 else t |
|
t = '' if t.startswith('http') else t |
|
new_text.append(t) |
|
|
|
return " ".join(new_text) |
|
|
|
|
|
|
|
API_URL_MMiniLM = "https://api-inference.huggingface.co/models/Karim-Gamal/MMiniLM-L12-finetuned-emojis-IID-Fed" |
|
headers_MMiniLM = {"Authorization": "Bearer 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"} |
|
|
|
|
|
def query_MMiniLM(payload): |
|
response = requests.post(API_URL_MMiniLM, headers=headers_MMiniLM, json=payload) |
|
return response.json() |
|
|
|
query_MMiniLM({ "inputs": 'test',}) |
|
|
|
|
|
def _method(text): |
|
text = preprocess(text) |
|
output_temp = query_MMiniLM({ |
|
"inputs": text, |
|
}) |
|
|
|
|
|
|
|
if output_temp: |
|
try: |
|
output_dict = {d['label']: d['score'] for d in output_temp[0]} |
|
except: |
|
pass |
|
else: |
|
|
|
output_dict = {} |
|
|
|
input_list = list(output_dict.items())[:3] |
|
|
|
output_dict = {key: value for key, value in input_list} |
|
|
|
return output_dict |
|
|
|
|
|
|
|
|
|
interface = gr.Interface( |
|
|
|
fn = _method, |
|
|
|
inputs=gr.Textbox(placeholder="Enter sentence here..."), |
|
outputs="label", |
|
examples=config.EX_LIST, |
|
live = True, |
|
|
|
|
|
title = 'MiniLM Multilingual', |
|
|
|
description=config.description, |
|
article = '', |
|
|
|
) |
|
list_interface.append(interface) |
|
list_title.append('MiniLM Multilingual') |
|
|
|
|
|
|
|
|
|
API_URL_XLM = "https://api-inference.huggingface.co/models/Karim-Gamal/XLM-Roberta-finetuned-emojis-IID-Fed" |
|
headers_XLM = {"Authorization": "Bearer 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"} |
|
|
|
|
|
def query_XLM(payload): |
|
response = requests.post(API_URL_XLM, headers=headers_XLM, json=payload) |
|
return response.json() |
|
|
|
query_XLM({ "inputs": 'test',}) |
|
|
|
|
|
|
|
def _method(text): |
|
text = preprocess(text) |
|
output_temp = query_XLM({ |
|
"inputs": text, |
|
}) |
|
|
|
|
|
|
|
if output_temp: |
|
output_dict = {d['label']: d['score'] for d in output_temp[0]} |
|
else: |
|
output_dict = {} |
|
|
|
try: |
|
input_list = list(output_dict.items())[:3] |
|
|
|
except: |
|
pass |
|
|
|
output_dict = {key: value for key, value in input_list} |
|
|
|
return output_dict |
|
|
|
|
|
|
|
|
|
interface = gr.Interface( |
|
|
|
fn = _method, |
|
|
|
inputs=gr.Textbox(placeholder="Enter sentence here..."), |
|
outputs="label", |
|
examples=config.EX_LIST, |
|
live = True, |
|
|
|
|
|
title = 'XLM Roberta Multilingual', |
|
|
|
description=config.description, |
|
article = '', |
|
|
|
) |
|
list_interface.append(interface) |
|
list_title.append('XLM Roberta Multilingual') |
|
|
|
|
|
|
|
|
|
|
|
API_URL_BERT = "https://api-inference.huggingface.co/models/Karim-Gamal/BERT-base-finetuned-emojis-IID-Fed" |
|
headers_BERT = {"Authorization": "Bearer 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"} |
|
|
|
|
|
def query_BERT(payload): |
|
response = requests.post(API_URL_BERT, headers=headers_BERT, json=payload) |
|
return response.json() |
|
|
|
query_BERT({ "inputs": 'test',}) |
|
|
|
|
|
|
|
|
|
def _method(text): |
|
text = preprocess(text) |
|
output_temp = query_BERT({ |
|
"inputs": text, |
|
}) |
|
|
|
|
|
|
|
if output_temp: |
|
try: |
|
|
|
output_dict = {d['label']: d['score'] for d in output_temp[0]} |
|
except: |
|
pass |
|
else: |
|
|
|
output_dict = {} |
|
|
|
try: |
|
input_list = list(output_dict.items())[:3] |
|
|
|
except: |
|
pass |
|
|
|
output_dict = {key: value for key, value in input_list} |
|
|
|
return output_dict |
|
|
|
|
|
|
|
|
|
interface = gr.Interface( |
|
|
|
fn = _method, |
|
|
|
inputs=gr.Textbox(placeholder="Enter sentence here..."), |
|
outputs="label", |
|
examples=config.EX_LIST, |
|
live = True, |
|
|
|
|
|
title = 'BERT Multilingual', |
|
|
|
description=config.description, |
|
article = '', |
|
|
|
) |
|
list_interface.append(interface) |
|
list_title.append('BERT Multilingual') |
|
|
|
|
|
|
|
|
|
|
|
API_URL_Switch = "https://api-inference.huggingface.co/models/Karim-Gamal/switch-base-8-finetuned-SemEval-2018-emojis-IID-Fed" |
|
headers_Switch = {"Authorization": "Bearer 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"} |
|
|
|
|
|
def query_Switch(payload): |
|
response = requests.post(API_URL_Switch, headers=headers_Switch, json=payload) |
|
return response.json() |
|
|
|
query_Switch({ "inputs": 'test',}) |
|
|
|
|
|
|
|
|
|
def _method(text): |
|
text = preprocess(text) |
|
output_temp = query_Switch({ |
|
"inputs": text, |
|
}) |
|
|
|
text_to_emoji = {'red' : 'โค', 'face': '๐', 'joy':'๐', 'love':'๐', 'fire':'๐ฅ', 'smile':'๐', 'sunglasses':'๐', 'sparkle':'โจ', 'blue':'๐', 'kiss':'๐', 'camera':'๐ท', 'USA':'๐บ๐ธ', 'sun':'โ' , 'purple':'๐', 'blink':'๐', 'hundred':'๐ฏ', 'beam':'๐', 'tree':'๐', 'flash':'๐ธ', 'tongue':'๐'} |
|
|
|
|
|
try: |
|
d = output_temp[0] |
|
|
|
except: |
|
pass |
|
|
|
|
|
|
|
text = d['generated_text'] |
|
|
|
|
|
|
|
return text_to_emoji[text.split(' ')[0]] |
|
|
|
|
|
|
|
|
|
interface = gr.Interface( |
|
|
|
fn = _method, |
|
|
|
inputs=gr.Textbox(placeholder="Enter sentence here..."), |
|
outputs="text", |
|
examples=config.EX_LIST, |
|
live = True, |
|
|
|
|
|
title = 'Switch-Base-8', |
|
|
|
description=config.description, |
|
article = '', |
|
|
|
) |
|
list_interface.append(interface) |
|
list_title.append('Switch-Base-8') |
|
|
|
|
|
|
|
import time |
|
|
|
time.sleep(40) |
|
|
|
|
|
def _method(input_rating): |
|
|
|
|
|
|
|
|
|
if input_rating <=2: |
|
return {'๐ฅ': 0.6, 'โจ': 0.3, '๐ฏ': 0.1} |
|
|
|
elif input_rating <= 4 and input_rating >2: |
|
return {'โจ': 0.6, '๐': 0.3, '๐ฏ': 0.1} |
|
|
|
elif input_rating >4: |
|
return {'๐': 0.6, '๐ฏ': 0.3, '๐': 0.1} |
|
|
|
|
|
|
|
|
|
|
|
interface = gr.Interface( |
|
|
|
fn = _method, |
|
|
|
inputs=gr.Slider(1, 5, value=4), |
|
outputs="label", |
|
|
|
live = True, |
|
|
|
|
|
title = 'About us', |
|
|
|
description='We don\'t have sad emoji so our rating will always be great. ๐', |
|
|
|
|
|
|
|
article = config.article + '<!-- this is the markup. you can change the details (your own name, your own avatar etc.) but donโt change the basic structure! --> <div class="div_table_"> <table class="table"> <tr> <td><aside class="profile-card"> <div class="mask-shadow"></div> <header> <!-- hereโs the avatar --> <a href="https://www.linkedin.com/in/hossam-amer-23b9329b/"> <img src="https://drive.google.com/uc?export=view&id=1-C_UIimeqbofJC_lldC7IQzIOX_OYRSn"> </a> <!-- the username --> <h1 style = " font-size:20px; padding:20px; color:#444; margin-bottom:5px; " >Dr. Hossam Amer</h1> <!-- and role or location --> <h2 style = " font-size:14px; color:#acacac; text- margin:0; " >Research Scientist at Microsoft</h2> </header> </aside></td> </tr> </table> </div> <div class="div_table_"> <table class="table"> <tr> <td><aside class="profile-card"> <div class="mask-shadow"></div> <header> <!-- hereโs the avatar --> <a href="https://www.linkedin.com/in/ahmed-mohamed-gaber-143b25175/"> <img src="https://drive.google.com/uc?export=view&id=1OiGZwhL23PYhIJzQexYvPDFRrgUIprMj"> </a> <!-- the username --> <h1 style = " font-size:20px; padding:20px; color:#444; margin-bottom:5px; ">Ahmed Gaber</h1> <!-- and role or location --> <h2 style = " font-size:14px; color:#acacac; text- margin:0; " >Master\'s student at Queen\'s University</h2> </header> </aside></td> <td><aside class="profile-card"> <div class="mask-shadow"></div> <header> <!-- hereโs the avatar --> <a href="https://www.linkedin.com/in/karim-gamal-mahmoud/"> <img src="https://drive.google.com/uc?export=view&id=1Lg2RzimITL9y__X2hycBTX10rJ4o87Ax"> </a> <!-- the username --> <h1 style=" font-size:20px; padding:20px; color:#444; margin-bottom:5px; ">Karim Gamal</h1> <!-- and role or location --> <h2 style = " font-size:14px; color:#acacac; text- margin:0; " >Master\'s student at Queen\'s University</h2> </header> </aside></td> </tr> </table> </div>', |
|
) |
|
list_interface.append(interface) |
|
list_title.append('About us') |
|
|
|
|
|
|
|
|
|
demo = gr.TabbedInterface( |
|
list_interface, |
|
list_title, |
|
title='Federated-Learning-Based-Multilingual-Emoji-Prediction', |
|
css='.gradio-container {color : orange}',) |
|
|
|
demo.launch() |