from transformers import BertTokenizerFast,TFBertForSequenceClassification,TextClassificationPipeline import numpy as np import tensorflow as tf import gradio as gr import openai import os # Sentiment Analysis Pre-Trained Model model_path = "leadingbridge/sentiment-analysis" tokenizer = BertTokenizerFast.from_pretrained(model_path) model = TFBertForSequenceClassification.from_pretrained(model_path, id2label={0: 'negative', 1: 'positive'} ) def sentiment_analysis(text): pipe = TextClassificationPipeline(model=model, tokenizer=tokenizer) result = pipe(text) return result # Open AI Chatbot Model openai.api_key = "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" start_sequence = "\nAI:" restart_sequence = "\nHuman: " prompt = "You can discuss any topic with the Chinese Chatbot assistant by typing Chinese in here" def openai_create(prompt): response = openai.Completion.create( model="text-davinci-003", prompt=prompt, temperature=0.9, max_tokens=1024, top_p=1, frequency_penalty=0, presence_penalty=0.6, stop=[" Human:", " AI:"] ) return response.choices[0].text def chatgpt_clone(input, history): history = history or [] s = list(sum(history, ())) s.append(input) inp = ' '.join(s) output = openai_create(inp) history.append((input, output)) return history, history # Open AI Chinese Translation Model def translate_to_chinese(text_to_translate): response = openai.Completion.create( model="text-davinci-003", prompt=f"Translate this short English sentence into Chinese:\n\n{text_to_translate}\n\n1.", temperature=0.3, max_tokens=1024, top_p=1.0, frequency_penalty=0.0, presence_penalty=0.0 ) return response.choices[0].text.strip() # Open AI English Translation Model def translate_to_english(text_to_translate): response = openai.Completion.create( model="text-davinci-003", prompt=f"Translate this short Chinese sentence into English:\n\n{text_to_translate}\n\n1.", temperature=0.3, max_tokens=1024, top_p=1.0, frequency_penalty=0.0, presence_penalty=0.0 ) return response.choices[0].text.strip() # Gradio Output Model with gr.Blocks() as demo: gr.Markdown("Choose the Chinese NLP model you want to use from the tabs") with gr.Tab("OpenAI Chatbot"): chatbot = gr.Chatbot() message = gr.Textbox(placeholder=prompt) state = gr.State() submit = gr.Button("SEND") submit.click(chatgpt_clone, inputs=[message, state], outputs=[chatbot, state]) with gr.Tab("Sentiment Analysis"): inputs = gr.Textbox(placeholder="Enter a Chinese positive or negative sentence here") outputs = gr.Textbox(label="Sentiment Analysis") proceed_button = gr.Button("proceed") proceed_button.click(fn=sentiment_analysis, inputs=inputs, outputs=outputs) with gr.Tab("Translation to Chinese"): inputs = gr.Textbox(placeholder="Enter a short English sentence to translate to Chinese here.") outputs = gr.Textbox(label="Translation Result") proceed_button = gr.Button("Translate") proceed_button.click(fn=translate_to_chinese, inputs=inputs, outputs=outputs) with gr.Tab("Translation to English"): inputs = gr.Textbox(placeholder="Enter a short Chinese sentence to translate to English here.") outputs = gr.Textbox(label="Translation Result") proceed_button = gr.Button("Translate") proceed_button.click(fn=translate_to_english, inputs=inputs, outputs=outputs) demo.launch(inline=False)