import gradio as gr import requests import random import time import pandas as pd from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline from game1 import read1, func1, interpre1, func1_written from game2 import func2 from game3 import read3, func3, interpre3, func3_written def ret_en(): return 'en' def ret_nl(): return 'nl' def reset_scores(): data = pd.DataFrame( { "Role": ["AI 🤖", "HUMAN 👨👩"], "Scores": [0, 0], } ) tot_scores = ''' ###
Machine ''' + str(int(0)) + ''' VS ''' + str(int(0)) + ''' Human
''' # scroe_human = ''' # Human: ''' + str(int(0)) # scroe_robot = ''' # Robot: ''' + str(int(0)) # tooltip=["Role", "Scores"], return 0, 0, tot_scores def reset_modules(): res_empty = {"original": "", "interpretation": []} return res_empty, 0, 0, [], "" with gr.Blocks(theme=gr.themes.Default(text_size=gr.themes.sizes.text_md)) as demo: pre_load_1 = pipeline("sentiment-analysis", model="nlptown/bert-base-multilingual-uncased-sentiment") pre_load_2 = pipeline("text-classification", model='DTAI-KULeuven/robbert-v2-dutch-sentiment') pre_load_3 = pipeline("text-classification", model='distilbert-base-uncased-finetuned-sst-2-english') with gr.Row(): num1 = gr.Number(value=0, container=False, show_label=False, visible=False) num2 = gr.Number(value=0, container=False, show_label=False, visible=False) placeholder = gr.Markdown( ''' ## Welcome to the Language Model Explanation Challenge! Language Models (LMs) are powerful AI tools to understand and generate human language.Machine ''' + str(int(0)) + ''' VS ''' + str(int(0)) + ''' Human
''' ) with gr.Tab("Like or Dislike"): text_en = gr.Textbox(label="", value="en", visible=False) text_nl = gr.Textbox(label="", value="nl", visible=False) lang_selected = gr.Textbox(label="", value="", visible=False) num_selected_1 = gr.Number(value=0, container=False, show_label=False, visible=False) with gr.Row(): with gr.Column(): with gr.Row(): sample_button_en = gr.Button("Click to get a review in English.", size='sm') # gr.Markdown('''or
''') sample_button_nl = gr.Button("Click to get a review in Dutch.", size='sm') input_text = gr.Textbox(label="Review:", value="HELLO! Hallo!", visible=False, container=False) interpretation1 = gr.components.Interpretation(input_text) slider_1_1 = gr.Slider(label="Human: Dislike ——> Like", container=True, min_width=200, height=80, show_label=True, interactive=True) user_important = gr.Textbox(label="Which words are the guesses based on?", placeholder="Enter words that you think are important.") gr.Markdown( ''' ## Like or Dislike You're given a short review of a movie, book or restaurant. The goal of this game is to guess how *positive* the review is, from 0 (=extremely bad) to 100 (=fantastic). * Step 1. Get an English or Dutch review and guess the corresponding score. * Step 2. Check the score guessed by AI. Who gets the most correct answer wins. * Step 3. Check the word highlighting to understand how AI made its decision. ''' ) with gr.Row(): with gr.Column(): chat_button_1 = gr.Button("Click to see AI's answer.", size='sm') slider_1_2 = gr.Slider(label="AI: Dislike ——> Like", container=True, min_width=200, height=80, show_label=True, interactive=True) interpre_button = gr.Button("See how AI gets the answer.", size='sm') placeholder_text = gr.Textbox(label="Review:", value="HELLO! Hallo!", visible=False) interpretation2 = gr.components.Interpretation(placeholder_text) chatbot1 = gr.Chatbot(height=200, min_width=50, container=False) # height=300 #################################################################################################### gr.Markdown(''' *** ''') gr.Markdown( ''' # Now try your own reviews! ''' ) with gr.Row(): with gr.Column(): text_written = gr.Textbox(label="Review: ", placeholder="Enter your own review about a movie/restaurant/book.", visible=True) # image_1_3 = gr.Image('icon_user.png', height=80, width=80, min_width=80, show_label=False, show_share_button=False, interactive=False) slider_1_3 = gr.Slider(label="Human: Dislike ——> Like", container=True, min_width=200, height=80, show_label=True, interactive=True) lang_written = gr.Radio(["English", "Dutch"], label="Language:", info="In which language is the review written?") chat_button_2 = gr.Button("Click to see AI's answer.", size='sm') placeholder_written_text = gr.Textbox(label="Review: ", value="HELLO! Hallo!", visible=False) interpretation4 = gr.components.Interpretation(placeholder_written_text) slider_1_4 = gr.Slider(label="AI: Dislike ——> Like", container=True, min_width=200, height=80, show_label=True, interactive=True) chatbot2 = gr.Chatbot(height=350, min_width=50, container=False) # height=300 sample_button_en.click(read1, inputs=[text_en, num_selected_1], outputs=[interpretation1, lang_selected, num_selected_1]) sample_button_nl.click(read1, inputs=[text_nl, num_selected_1], outputs=[interpretation1, lang_selected, num_selected_1]) num_selected_1.change(reset_modules, outputs=[interpretation2, slider_1_1, slider_1_2, chatbot1, user_important]) chat_button_1.click(func1, inputs=[lang_selected, num_selected_1, slider_1_1, num1, num2, user_important], outputs=[slider_1_2, chatbot1, num1, num2, tot_scores]) interpre_button.click(interpre1, inputs=[lang_selected, num_selected_1], outputs=[interpretation2]) chat_button_2.click(func1_written, inputs=[text_written, slider_1_3, lang_written], outputs=[interpretation4, slider_1_4, chatbot2]) with gr.Tab("Human or Machine"): with gr.Row(): text_input_2 = gr.Textbox() text_output_2 = gr.Label() text_button_2 = gr.Button("Check") with gr.Tab("Male or Female"): num_selected_3 = gr.Number(value=0, container=False, show_label=False, visible=False) with gr.Row(): with gr.Column(): with gr.Row(): # gr.Markdown('''or
''') sample_button_en_3 = gr.Button("Click to get a sentence.", size='sm') input_text_mf = gr.Textbox(label="Sentence:", value="HELLO! Hallo!", visible=False, container=False) interpretation_mf_1 = gr.components.Interpretation(input_text_mf) slider_3_1 = gr.Slider(label="Human: Male ——> Female", container=True, min_width=200, height=80, show_label=True, interactive=True) user_important_mf = gr.Textbox(label="Which words are the guesses based on?", placeholder="Enter words that you think are important.") gr.Markdown( ''' ## Male or Female You're given a sentence spoken by a speaker. The goal of this game is to guess the gender of the speaker, from 0 (=Male) to 100 (=Female). * Step 1. Get a sentence and guess the gender of the speaker. * Step 2. Check the gender guessed by AI. Who gets the most correct answer wins. * Step 3. Check the word highlighting to understand how AI made its decision. ''' ) with gr.Row(): with gr.Column(): chat_button_mf = gr.Button("Click to see AI's answer.", size='sm') slider_3_2 = gr.Slider(label="AI: Male ——> Female", container=True, min_width=200, height=80, show_label=True, interactive=True) interpre_button_mf = gr.Button("See how AI gets the answer.", size='sm') placeholder_text_mf = gr.Textbox(label="Sentence:", value="HELLO! Hallo!", visible=False) interpretation_mf_2 = gr.components.Interpretation(placeholder_text) chatbot_mf_1 = gr.Chatbot(height=200, min_width=50, container=False) # height=300 #################################################################################################### gr.Markdown(''' *** ''') gr.Markdown( ''' # Now try your own sentence! ''' ) with gr.Row(): with gr.Column(): text_written_mf = gr.Textbox(label="Sentence: ", placeholder="Enter your sentence.", visible=True) slider_3_3 = gr.Slider(label="Human: Male ——> Female", container=True, min_width=200, height=80, show_label=True, interactive=True) chat_button_mf_2 = gr.Button("Click to see AI's answer.", size='sm') placeholder_written_text_mf = gr.Textbox(label="Sentence: ", value="HELLO! Hallo!", visible=False) interpretation_mf_4 = gr.components.Interpretation(placeholder_written_text) slider_3_4 = gr.Slider(label="AI: Male ——> Female", container=True, min_width=200, height=80, show_label=True, interactive=True) chatbot_mf_2 = gr.Chatbot(height=350, min_width=50, container=False) # height=300 sample_button_en_3.click(read3, inputs=[num_selected_3], outputs=[interpretation_mf_1, num_selected_3]) num_selected_3.change(reset_modules, outputs=[interpretation_mf_2, slider_3_1, slider_3_2, chatbot_mf_1, user_important_mf]) chat_button_mf.click(func3, inputs=[num_selected_3, slider_3_1, num1, num2, user_important_mf], outputs=[slider_3_2, chatbot_mf_1, num1, num2, tot_scores]) interpre_button_mf.click(interpre3, inputs=[num_selected_3], outputs=[interpretation_mf_2]) chat_button_mf_2.click(func3_written, inputs=[text_written, slider_3_3], outputs=[interpretation_mf_4, slider_3_4, chatbot_mf_2]) if __name__ == "__main__": demo.launch()