HimankJ commited on
Commit
2f82199
·
verified ·
1 Parent(s): af5cdb8

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +104 -0
app.py ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import pickle
3
+
4
+ with open('merges.pkl','rb') as merges_file:
5
+ merges = pickle.load(merges_file)
6
+
7
+ with open('vocab.pkl', 'rb') as vocab_file:
8
+ vocab = pickle.load(vocab_file)
9
+
10
+ def decode(ids):
11
+ tokens = b"".join(vocab[idx] for idx in ids)
12
+ text = tokens.decode("utf-8", errors="replace")
13
+ return text
14
+
15
+ def encode(text):
16
+ tokens = list(text.encode("utf-8"))
17
+ while len(tokens) >= 2:
18
+ stats = get_stats(tokens)
19
+ pair = min(stats, key=lambda p: merges.get(p, float("inf")))
20
+ if pair not in merges:
21
+ break
22
+ idx = merges[pair]
23
+ tokens = merge(tokens, pair, idx)
24
+ return tokens
25
+
26
+ def get_stats(ids):
27
+ counts = {}
28
+ for pair in zip(ids, ids[1:]):
29
+ counts[pair] = counts.get(pair, 0) + 1
30
+ return counts
31
+
32
+ def merge(ids, pair, idx):
33
+ i = 0
34
+ newids = []
35
+ while i < len(ids):
36
+ if i < len(ids) - 1 and ids[i] == pair[0] and ids[i+1] == pair[1]:
37
+ newids.append(idx)
38
+ i += 2
39
+ else:
40
+ newids.append(ids[i])
41
+ i += 1
42
+
43
+ return newids
44
+
45
+ def getTokens(inputText):
46
+ tokens = list(inputText.encode("utf-8"))
47
+ while len(tokens) >= 2:
48
+ stats = get_stats(tokens)
49
+ pair = min(stats, key=lambda p: merges.get(p, float("inf")))
50
+ if pair not in merges:
51
+ break
52
+ idx = merges[pair]
53
+ tokens = merge(tokens, pair, idx)
54
+ strTokens = []
55
+ for token in tokens:
56
+ strTokens.append(decode([token]))
57
+ return tokens, strTokens
58
+
59
+ color_list = ['rgb(139, 162, 253)', 'rgb(254, 225, 190)', 'rgb(252, 175, 166)', 'rgb(219, 254, 210)', 'rgb(235, 233, 229)', 'rgb(211, 247, 187)', 'rgb(200, 251, 254)', 'rgb(159, 249, 191)', 'rgb(212, 212, 212)', 'rgb(167 243 208)', 'rgb(251 207 232)', 'rgb(243, 165, 240)', 'rgb(239 68 68)', 'rgb(254 205 211)', 'rgb(139, 152, 254)', 'rgb(241 245 249)']
60
+ def getColoredText(inputText, tokens, strTokens):
61
+ i = 0
62
+ txtLen = len(inputText)
63
+ numTokens = len(strTokens)
64
+ outputString = """<html><head><style>h2 { font-size: 40px;} sub { vertical-align: sub; font-size: 4px;} span { font-size:16px;}</style></head><body><div><h2>Text length (in chars): """
65
+ outputString = outputString + str(txtLen) + """</h2><h2>Token count: """
66
+ outputString = outputString + str(numTokens) + """</h2><p> """
67
+ for strToken in strTokens:
68
+ colorNum = i % len(color_list)
69
+ chosencolor = color_list[colorNum]
70
+ outputString = outputString + "<span style='background-color:" + chosencolor + ";'> " + strToken + "<sub>" + str(tokens[i]) + "</sub></span>"
71
+ i = i + 1
72
+ outputString = outputString + """</p></body>"""
73
+ return outputString
74
+
75
+ def tokenizeText(inputText):
76
+ tokens, strTokens = getTokens(inputText)
77
+ return(getColoredText(inputText, tokens, strTokens))
78
+
79
+ title = "Tokenizer for Hindi language from Scratch"
80
+ description = "Created Hindi Tokenizer from Scratch"
81
+ examples = [["काफिले में शमिल कोंटा विधायक कवासी लखमा के पीएसओ को भी गोली लगने की जानकारी सामने आ रही है।"], ["Test sentence."],
82
+ ["आप लोकसभा में नेता प्रतिपक्ष और राज्यसभा में नेता प्रतिपक्ष के खिलाफ अपने द्वारा लगाए गए आरोपों के सम्बंध में कोई पर्याप्त कारण नहीं पेश कर पाए।"],
83
+ ["इस वाक्य का अनुवाद गूगल100 ट्रांसलेट द्वारा किया जा रहा है।😅"],
84
+ ["अमेरिका इस्लामाबाद पर अफगानिस्तान में इस्तेमाल होने वाले पाकिस्तान निर्मित आईआईडी के मुद्दे के समाधान का जोर डाल रहा है जो दोनों देशों के बीच अलगाव का एक प्रमुख कारण बना हुआ है। अमेरिका के रक्षा मंत्री लियोन पेनेटा ने सांसदों से कल कहा कि यह आईईडी अफगानिस्तान में अमेरिकी सैनिकों के हताहत होने का एक प्रमुख कारण हैं तथा इन विस्फोटकों को पाकिस्तान में बनाया जाता है। सीनेट की सैन्य सेवा समिति के समक्ष पेनेटा ने कहा कि आईईडी की पाकिस्तान से आपूर्ति लगातार जारी है और यह वह मामला है जिसे रोकने के लि�� कार्रवाई की जरूरत है।टिप्पणियां उन्होंने कहा, ‘हमने उन्हें (पाकिस्तान को) स्पष्ट कह दिया है, जहां यह तैयार होते हैं हमने उन जगहों की पहचान की है। हमने उन्हें विशेष क्षेत्रों के बारे में बता दिया है। हमने उनसे कदम उठाने (इस दिशा में) की अपील की है।’ पेनेटा ने कहा कि कुछ मामलों में आईईडी से संबंधित मुद्दा सुरक्षित स्थान के विस्तार से जुड़ा हुआ है। ज्वाइंट चीफ ऑफ स्टॉफ के अध्यक्ष जनरल मार्टिन डेंप्सी ने कहा कि पाकिस्तान के साथ अमेरिका के संबंध चुनौती बने हुए हैं। अमेरिका के रक्षा मंत्री लियोन पेनेटा ने सांसदों से कल कहा कि यह आईईडी अफगानिस्तान में अमेरिकी सैनिकों के हताहत होने का एक प्रमुख कारण हैं तथा इन विस्फोटकों को पाकिस्तान में बनाया जाता है। सीनेट की सैन्य सेवा समिति के समक्ष पेनेटा ने कहा कि आईईडी की पाकिस्तान से आपूर्ति लगातार जारी है और यह वह मामला है जिसे रोकने के लिए कार्रवाई की जरूरत है।टिप्पणियां उन्होंने कहा, ‘हमने उन्हें (पाकिस्तान को) स्पष्ट कह दिया है, जहां यह तैयार होते हैं हमने उन जगहों की पहचान की है। हमने उन्हें विशेष क्षेत्रों के बारे में बता दिया है। हमने उनसे कदम उठाने (इस दिशा में) की अपील की है।’ पेनेटा ने कहा कि कुछ मामलों में आईईडी से संबंधित मुद्दा सुरक्षित स्थान के विस्तार से जुड़ा हुआ है। ज्वाइंट चीफ ऑफ स्टॉफ के अध्यक्ष जनरल मार्टिन डेंप्सी ने कहा कि पाकिस्तान के साथ अमेरिका के संबंध चुनौती बने हुए हैं। सीनेट की सैन्य सेवा समिति के समक्ष पेनेटा ने कहा कि आईईडी की पाकिस्तान से आपूर्ति लगातार जारी है और यह वह मामला है जिसे रोकने के लिए कार्रवाई की जरूरत है।टिप्पणियां उन्होंने कहा, ‘हमने उन्हें (पाकिस्तान को) स्पष्ट कह दिया है, जहां यह तैयार होते हैं हमने उन जगहों की पहचान की है। हमने उन्हें विशेष क्षेत्रों के बारे में बता दिया है। हमने उनसे कदम उठाने (इस दिशा में) की अपील की है।’ पेनेटा ने कहा कि कुछ मामलों में आईईडी से संबंधित मुद्दा सुरक्षित स्थान के विस्तार से जुड़ा हुआ है। ज्वाइंट चीफ ऑफ स्टॉफ के अध्यक्ष जनरल मार्टिन डेंप्सी ने कहा कि पाकिस्तान के साथ अमेरिका के संबंध चुनौती बने हुए हैं। उन्होंने कहा, ‘हमने उन्हें (पाकिस्तान को) स्पष्ट कह दिया है, जहां यह तैयार होते हैं हमने उन जगहों की पहचान की है। हमने उन्ह��ं विशेष क्षेत्रों के बारे में बता दिया है। हमने उनसे कदम उठाने (इस दिशा में) की अपील की है।’ पेनेटा ने कहा कि कुछ मामलों में आईईडी से संबंधित मुद्दा सुरक्षित स्थान के विस्तार से जुड़ा हुआ है। ज्वाइंट चीफ ऑफ स्टॉफ के अध्यक्ष जनरल मार्टिन डेंप्सी ने कहा कि पाकिस्तान के साथ अमेरिका के संबंध चुनौती बने हुए हैं। ज्वाइंट चीफ ऑफ स्टॉफ के अध्यक्ष जनरल मार्टिन डेंप्सी ने कहा कि पाकिस्तान के साथ अमेरिका के संबंध चुनौती बने हुए हैं।"],
85
+ ["Stuck in a lift.. surprisingly getting 3G!! Is that even possible in Mumbai??! #TestTweet Yess i am fine.. dont worry..my manager is tryin to get me out.. just restless n hungry now.. :( https://t.co/kssmYVlcYl Ok i am out guys!! Finally! This took tooooooo long! But nothin to worry!! Thank you for the amazing and much needed time-pass getting into a meeting for which i am an hour late now"],
86
+ ["ऋतिक रोशन (Hritik Roshan) की अपकमिंग फिल्म 'सुपर 30' (Super 30) में दर्शक अब उदित नारायण (Udit Narayan) की आवाज का भी लुत्फ उठा सकेंगे. हिंदी के मशहूर गायकार उदित नारायण (Udit Narayan) ने 'सुपर 30' (Super 30) के लिए 'जुगरफिया' गीत गाया है. इस गीत में मशहूर प्लेबैक सिंगर श्रेया घोषाल (Shreya Ghoshal) ने भी उदित नारायण का साथ दिया है. बताया जा रहा है कि फिल्म सुपर 30 का यह गाना एक रोमांटिक गाना है, जिसमें सिंगर उदित नारायण (Udit Narayan) श्रेया घोषाल की आवाज का जादू बिखेरा गया है."],
87
+ ["अभिनेत्री पूजा डडवाल की मदद के लिए आगे आये @ravikishannpic.twitter.com/gP2bET2c2X"],
88
+ ["Batla House Box Office Collection Day 6: बॉलीवुड एक्टर जॉन अब्राहम (John Abraham) की फिल्म 'बाटला हाउस (Batla House)' सिनेमाघरों में लगातार शानदार प्रदर्शन कर रही है. स्वतंत्रता दिवस के मौके पर रिलीज हुई जॉन अब्राहम (John Abraham) की फिल्म 'बाटला हाउस (Batla House)' 'मिशन मंगल' को भी खूब टक्कर दे रही है."]
89
+ ]
90
+
91
+ demo = gr.Interface(
92
+ tokenizeText,
93
+ inputs = [
94
+ gr.Textbox(),
95
+ ],
96
+ outputs = [
97
+ gr.HTML(),
98
+ ],
99
+ title = title,
100
+ description = description,
101
+ examples = examples,
102
+ cache_examples=False
103
+ )
104
+ demo.launch()