File size: 2,974 Bytes
d717ae5
119f851
 
 
 
 
c86e9f2
119f851
 
 
 
b064d79
119f851
 
 
 
 
 
 
 
420df50
 
119f851
24a2a89
d3c4401
c694b62
d3c4401
d717ae5
119f851
93baf69
 
6cdcca2
93baf69
 
b064d79
8f74626
 
 
 
b064d79
8f74626
 
 
 
 
 
 
5e6b73c
8f74626
 
 
 
d3c4401
00b3a22
b0d7588
d3c4401
b0d7588
8f74626
47896a5
119f851
ffbde4f
8f74626
 
f5387c6
8f74626
47896a5
8f74626
 
ffbde4f
d717ae5
8f74626
d717ae5
8f74626
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119f851
 
420df50
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
import re
import gradio as gr
from huggingface_hub import InferenceClient

client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")

system_instructions = """<s> [INST] You will be provided with text, and your task is to translate it into emojis. DO NOT USE ANY REGULAR TEXT. Do your best with emojis only. Translate this text: """


def generate_translation(prompt):
    generate_kwargs = dict(
        temperature=0.5,
        max_new_tokens=1024,
        top_p=0.95,
        repetition_penalty=1.0,
        do_sample=True,
        seed=42,
    )

    formatted_prompt = system_instructions + prompt + "[/INST]"
    stream = client.text_generation(
        formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
    output = ""

    for response in stream:
        output += response.token.text

    emoji_pattern = r"[^\u0021-\u007E\u00A0-\uD7FF\uE000-\uFDCF\uFF00-\uFFEF\u10000-\u10FFFF\u0300-\u036F\u1F00-\u1F1F\u1F20-\u1F7F\u2600-\u26FF\u2700-\u27BF]+?"

    filtered_output = re.findall(emoji_pattern, output)

    return ''.join(filtered_output).replace(" ", "").replace("\n", "")


system_instructions_emoji_input = """<s> [INST] You will be provided with emojis, and your task is to create a short story from it. DO NOT USE ANY EMOJIS. Do your best with text only. Translate this emojis: """


def generate_emoji_translation(prompt):
    generate_kwargs = dict(
        temperature=0.5,
        max_new_tokens=1024,
        top_p=0.95,
        repetition_penalty=1.0,
        do_sample=True,
        seed=42,
    )

    formatted_prompt = system_instructions_emoji_input + prompt + "[/INST]"
    stream = client.text_generation(
        formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
    output = ""

    for response in stream:
        output += response.token.text
    yield output.rsplit("<", 1)[0]

    return output.rsplit("<", 1)[0]


with gr.Blocks() as demo:
    gr.HTML("""
<center><h1>Emoji Translator πŸ€—πŸ˜»</h1>
<h3>Translate any text into emojis, and vice versa!</h3>
</center>
""")

    gr.Markdown("""
# Text to Emoji πŸ“–βž‘οΈπŸ˜»
""")
    with gr.Row():
        text_uesr_input = gr.Textbox(label="Enter text πŸ“š")
        output = gr.Textbox(label="Translation")
    with gr.Row():
        translate_btn = gr.Button("Translate πŸš€")
        translate_btn.click(fn=generate_translation, inputs=text_uesr_input,
                            outputs=output, api_name="translate_text")

    gr.Markdown("""
# Emoji to Text πŸ˜»βž‘οΈπŸ“–
""")
    with gr.Row():
        emoji_user_input = gr.Textbox(label="Enter emojis πŸ€—")
        output = gr.Textbox(label="Translation")
    with gr.Row():
        translate_btn = gr.Button("Translate πŸš€")
        translate_btn.click(fn=generate_emoji_translation, inputs=emoji_user_input,
                            outputs=output, api_name="translate_emojis")

if __name__ == "__main__":
    demo.launch(show_api=False)