File size: 2,361 Bytes
cbab219
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10861ba
cbab219
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3742d38
 
cbab219
 
3742d38
cbab219
 
 
 
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
import gradio as gr
import os

from huggingface_hub import hf_hub_download
import joblib

from utils import encode, decode


REPO_ID = "sayanbanerjee32/bengali_tokenizer"
data_file = "bengali_tokenizer.pkl"

data_dict = joblib.load(
    hf_hub_download(repo_id=REPO_ID, filename=data_file)
)
vocab = data_dict['vocab']
merges = data_dict['merges']
regex_pat = data_dict['regex_pat']



def encode_decode(text):    
    ids = encode(text, regex_pat, merges)
    return ', '.join([str(i) for i in ids]), decode(ids, vocab), [(str(i),decode([i], vocab)) for i in ids]


with gr.Blocks() as demo:
    gr.HTML("<h1 align = 'center'> Bengali BPE Tokenizer </h1>")
    gr.HTML("<h4 align = 'center'> Tokenizes bengali text using Byte Pair Encoding algorithm</h4>")
    
    content = gr.Textbox(label = "Enter the Bengali text for tokenization")
    inputs = [
            content,
            ]
    gr.Examples(["বাইরে এতই গরম যে আমি পুরোদিন আমার শীততাপ নিয়ন্ত্রিত বাড়িতে থাকতে চাই।",
                "খুব ভালোভাবেই নিজের দায়িত্ব পালন করেছেন তিনি।",
                "আয়কর উঠে যাচ্ছে অনেকটা।",
                "যদি কোনো ব্যক্তি এ ব্যাপারে দোষী সাব্যস্ত হয় তা হলে ব্যবস্থা নেওয়া হবে।",
                "বছরের বারোটা মাস হলো জানুয়ারি, ফেব্রুয়ারি, মার্চ, এপ্রিল, মে, জুন জুলাই, আগস্ট, সেপ্টেম্বর, অক্টোবর, নভেম্বর আর ডিসেম্বর।"], 
                inputs = inputs)

    generate_btn = gr.Button(value = 'Tokenize')
    with gr.Row():
        encoded = gr.Textbox(label = "Tokens")
        decoded = gr.Textbox(label = "Regenerated text")
    explain = gr.HighlightedText(label = "Mapping tokens to text")
    outputs  = [encoded, decoded, explain]
    generate_btn.click(fn = encode_decode, inputs= inputs, outputs = outputs)

# # for collab
# demo.launch(debug=True) 

if __name__ == '__main__':
    demo.launch()