Monimoy commited on
Commit
bab184a
·
verified ·
1 Parent(s): 7771594

Bengali Tokenizer app

Browse files
Files changed (3) hide show
  1. app.py +110 -0
  2. bengali_bpe_tokenizer.json +1696 -0
  3. bengali_bpe_tokenizer.py +183 -0
app.py ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import json
3
+ from bengali_bpe_tokenizer import BengaliBPETokenizer
4
+ import random
5
+ import colorsys
6
+
7
+
8
+ def generate_distinct_colors(n):
9
+ """Generate n visually distinct colors"""
10
+ colors = []
11
+ for i in range(n):
12
+ hue = i / n
13
+ saturation = 0.7
14
+ value = 0.9
15
+ rgb = colorsys.hsv_to_rgb(hue, saturation, value)
16
+ hex_color = "#{:02x}{:02x}{:02x}".format(
17
+ int(rgb[0] * 255), int(rgb[1] * 255), int(rgb[2] * 255)
18
+ )
19
+ colors.append(hex_color)
20
+ return colors
21
+
22
+
23
+ def load_tokenizer():
24
+ try:
25
+ return BengaliBPETokenizer.load("bengali_bpe_tokenizer.json")
26
+ except:
27
+ # If no saved tokenizer found, create a new one
28
+ return BengaliBPETokenizer(vocab_size=5000)
29
+
30
+
31
+ def tokenize_text(text):
32
+ tokenizer = load_tokenizer()
33
+
34
+ # Get token IDs and their corresponding text
35
+ token_ids = tokenizer.encode(text)
36
+ tokens = []
37
+ current_pos = 0
38
+
39
+ # Process text to get token spans
40
+ words = [list(text)]
41
+ for pair, merged in tokenizer.merges.items():
42
+ words = tokenizer._merge_vocab(words, pair)
43
+
44
+ # Extract final tokens
45
+ final_tokens = []
46
+ for word in words:
47
+ final_tokens.extend(word)
48
+
49
+ # Generate colors for tokens
50
+ colors = generate_distinct_colors(len(tokenizer.vocab))
51
+ color_map = {
52
+ token_id: color for token_id, color in zip(tokenizer.vocab.values(), colors)
53
+ }
54
+
55
+ # Create highlighted HTML
56
+ html_parts = []
57
+ token_list = []
58
+
59
+ for i, token in enumerate(final_tokens):
60
+ token_id = tokenizer.vocab.get(token, tokenizer.special_tokens["<UNK>"])
61
+ color = color_map[token_id]
62
+ html_parts.append(f'<span style="background-color: {color}">{token}</span>')
63
+ token_list.append(f"{token} ({token_id})")
64
+
65
+ highlighted_text = "".join(html_parts)
66
+
67
+ # Calculate compression ratio
68
+ compression_ratio = len(text) / len(token_ids) if len(token_ids) > 0 else 0
69
+
70
+ return (
71
+ len(token_ids), # Token count
72
+ compression_ratio, # Compression ratio
73
+ highlighted_text, # Highlighted text
74
+ "\n".join(token_list), # Token list
75
+ )
76
+
77
+
78
+ custom_css = """
79
+ .token-highlight {
80
+ border-radius: 3px;
81
+ margin: 0 1px;
82
+ }
83
+ .container {
84
+ max-width: 1200px;
85
+ margin: 0 auto;
86
+ }
87
+ """
88
+
89
+ with gr.Blocks(css=custom_css) as demo:
90
+ gr.Markdown("# Bengali BPE Tokenizer")
91
+
92
+ with gr.Row():
93
+ with gr.Column(scale=1):
94
+ input_text = gr.Textbox(
95
+ label="Input Text", placeholder="Enter Bengali text here...", lines=10
96
+ )
97
+
98
+ with gr.Column(scale=1):
99
+ token_count = gr.Number(label="Token Count")
100
+ compression_ratio = gr.Number(label="Compression Ratio")
101
+ highlighted_output = gr.HTML(label="Tokenized Text")
102
+ token_list = gr.Textbox(label="Token List", lines=10)
103
+
104
+ input_text.change(
105
+ fn=tokenize_text,
106
+ inputs=[input_text],
107
+ outputs=[token_count, compression_ratio, highlighted_output, token_list],
108
+ )
109
+
110
+ demo.launch()
bengali_bpe_tokenizer.json ADDED
@@ -0,0 +1,1696 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "vocab": {
3
+ "<PAD>": 0,
4
+ "<UNK>": 1,
5
+ "<BOS>": 2,
6
+ "<EOS>": 3,
7
+ "\t": 4,
8
+ "\n": 5,
9
+ " ": 6,
10
+ " অ": 7,
11
+ " অক": 8,
12
+ " অকৃত": 9,
13
+ " অকৃত্র": 10,
14
+ " অকৃত্রিম": 11,
15
+ " অগ": 12,
16
+ " অঙ্গ": 13,
17
+ " অজ": 14,
18
+ " অজিত": 15,
19
+ " অজিতক": 16,
20
+ " অজিতকুম": 17,
21
+ " অজিতকুমার": 18,
22
+ " অত": 19,
23
+ " অতি": 20,
24
+ " অতিথ": 21,
25
+ " অতিথি": 22,
26
+ " অধ": 23,
27
+ " অধিকার": 24,
28
+ " অধ্যা": 25,
29
+ " অধ্যাপনার": 26,
30
+ " অন": 27,
31
+ " অনু": 28,
32
+ " অনে": 29,
33
+ " অনেক": 30,
34
+ " অব": 31,
35
+ " অবকাশ": 32,
36
+ " অভ": 33,
37
+ " অভাব": 34,
38
+ " অর্": 35,
39
+ " অল্প": 36,
40
+ " অস": 37,
41
+ " অসা": 38,
42
+ " আ": 39,
43
+ " আত": 40,
44
+ " আত্ম": 41,
45
+ " আত্মদান": 42,
46
+ " আদর্শ": 43,
47
+ " আদর্শের": 44,
48
+ " আন": 45,
49
+ " আনন্দের": 46,
50
+ " আপ": 47,
51
+ " আপন": 48,
52
+ " আপনাকে": 49,
53
+ " আপনার": 50,
54
+ " আম": 51,
55
+ " আমা": 52,
56
+ " আমাকে": 53,
57
+ " আমাদের": 54,
58
+ " আমার": 55,
59
+ " আমি": 56,
60
+ " আর": 57,
61
+ " আরম্ভ": 58,
62
+ " আর্": 59,
63
+ " আর্থ": 60,
64
+ " আর্থিক": 61,
65
+ " আশ্রম": 62,
66
+ " আশ্রমের": 63,
67
+ " আস": 64,
68
+ " আস্ব": 65,
69
+ " আস্বাদ": 66,
70
+ " আহ": 67,
71
+ " আহার": 68,
72
+ " ই": 69,
73
+ " ইং": 70,
74
+ " ইংরে": 71,
75
+ " ইংরেজ": 72,
76
+ " ইংরেজি": 73,
77
+ " উ": 74,
78
+ " উচ": 75,
79
+ " উচ্চ": 76,
80
+ " উত্ত": 77,
81
+ " উত্তর": 78,
82
+ " উপ": 79,
83
+ " উপরে": 80,
84
+ " উপল": 81,
85
+ " উপলক্ষে": 82,
86
+ " উপা": 83,
87
+ " উপায়ে": 84,
88
+ " এ": 85,
89
+ " এই": 86,
90
+ " এক": 87,
91
+ " একজন": 88,
92
+ " একটা": 89,
93
+ " একটি": 90,
94
+ " একত": 91,
95
+ " এব": 92,
96
+ " এবং": 93,
97
+ " এম": 94,
98
+ " এমন": 95,
99
+ " এসে": 96,
100
+ " এসেছিলেন": 97,
101
+ " ও": 98,
102
+ " ক": 99,
103
+ " কখন": 100,
104
+ " কখনো": 101,
105
+ " কথা": 102,
106
+ " কদ": 103,
107
+ " কর": 104,
108
+ " করত": 105,
109
+ " করতুম": 106,
110
+ " করতে": 107,
111
+ " করবার": 108,
112
+ " করা": 109,
113
+ " করে": 110,
114
+ " করেছিলেন": 111,
115
+ " কর্ম": 112,
116
+ " কা": 113,
117
+ " কাছ": 114,
118
+ " কাছে": 115,
119
+ " কাজ": 116,
120
+ " কাজে": 117,
121
+ " কার": 118,
122
+ " কারণ": 119,
123
+ " কালের": 120,
124
+ " কিন্ত": 121,
125
+ " কিন্তু": 122,
126
+ " কৃপণতা": 123,
127
+ " কে": 124,
128
+ " কেব": 125,
129
+ " কেবল": 126,
130
+ " কো": 127,
131
+ " কোথা": 128,
132
+ " কোথাও": 129,
133
+ " কোনো": 130,
134
+ " ক্র": 131,
135
+ " ক্ষ": 132,
136
+ " কয়েক": 133,
137
+ " খ": 134,
138
+ " গ": 135,
139
+ " গা": 136,
140
+ " গাছের": 137,
141
+ " গে": 138,
142
+ " গেছে": 139,
143
+ " গেলেন": 140,
144
+ " ঘ": 141,
145
+ " ঘরে": 142,
146
+ " চ": 143,
147
+ " চল": 144,
148
+ " চলতে": 145,
149
+ " চে": 146,
150
+ " চেষ্ট": 147,
151
+ " চেষ্টা": 148,
152
+ " ছ": 149,
153
+ " ছাত্র": 150,
154
+ " ছাত্রকে": 151,
155
+ " ছাত্রদের": 152,
156
+ " ছাত্রের": 153,
157
+ " ছায়": 154,
158
+ " ছিল": 155,
159
+ " ছিলেন": 156,
160
+ " ছে": 157,
161
+ " ছেলে": 158,
162
+ " ছেলেদের": 159,
163
+ " ছোট": 160,
164
+ " ছোটো": 161,
165
+ " জ": 162,
166
+ " জগ": 163,
167
+ " জগদান": 164,
168
+ " জগদানন্দ": 165,
169
+ " জন": 166,
170
+ " জন্য": 167,
171
+ " জন্যে": 168,
172
+ " জম": 169,
173
+ " জমি": 170,
174
+ " জমিদার": 171,
175
+ " জা": 172,
176
+ " জান": 173,
177
+ " জাম": 174,
178
+ " জীব": 175,
179
+ " জুগ": 176,
180
+ " জুগিয়ে": 177,
181
+ " জ্": 178,
182
+ " জ্ঞ": 179,
183
+ " জ্ঞানের": 180,
184
+ " ত": 181,
185
+ " তখন": 182,
186
+ " তখনো": 183,
187
+ " তব": 184,
188
+ " তবুও": 185,
189
+ " তবে": 186,
190
+ " তলায়": 187,
191
+ " তা": 188,
192
+ " তাঁ": 189,
193
+ " তাঁকে": 190,
194
+ " তাঁদের": 191,
195
+ " তাঁর": 192,
196
+ " তাতে": 193,
197
+ " তাদের": 194,
198
+ " তার": 195,
199
+ " তারই": 196,
200
+ " তারা": 197,
201
+ " তাল": 198,
202
+ " তিনি": 199,
203
+ " থা": 200,
204
+ " থাক": 201,
205
+ " থাকা": 202,
206
+ " থাকে": 203,
207
+ " থে": 204,
208
+ " থেকে": 205,
209
+ " দ": 206,
210
+ " দক্ষিণ": 207,
211
+ " দান": 208,
212
+ " দারি": 209,
213
+ " দারিদ্র": 210,
214
+ " দিকে": 211,
215
+ " দিত": 212,
216
+ " দিতে": 213,
217
+ " দিতেন": 214,
218
+ " দিল": 215,
219
+ " দিলেন": 216,
220
+ " দিয়ে": 217,
221
+ " দিয়েছিলেন": 218,
222
+ " দীর্": 219,
223
+ " দীর্ঘ": 220,
224
+ " দু": 221,
225
+ " দুটি": 222,
226
+ " দে": 223,
227
+ " দেখ": 224,
228
+ " দেখা": 225,
229
+ " দেখে": 226,
230
+ " দো": 227,
231
+ " দ্ব": 228,
232
+ " দ্বার": 229,
233
+ " দ্বারা": 230,
234
+ " ধ": 231,
235
+ " ন": 232,
236
+ " নত": 233,
237
+ " নতুন": 234,
238
+ " না": 235,
239
+ " নান": 236,
240
+ " নানা": 237,
241
+ " নি": 238,
242
+ " নিত": 239,
243
+ " নিদর্শ": 240,
244
+ " নিদর্শন": 241,
245
+ " নির": 242,
246
+ " নির্": 243,
247
+ " নিয়ে": 244,
248
+ " নিয়েছিলেন": 245,
249
+ " নে": 246,
250
+ " নেই": 247,
251
+ " নয়": 248,
252
+ " প": 249,
253
+ " পক্ষে": 250,
254
+ " পদ": 251,
255
+ " পর": 252,
256
+ " পরি": 253,
257
+ " পরিচ": 254,
258
+ " পরিচয়": 255,
259
+ " পরিধ": 256,
260
+ " পরিমাণ": 257,
261
+ " পরী": 258,
262
+ " পরীক্ষ": 259,
263
+ " পরীক্ষা": 260,
264
+ " পরে": 261,
265
+ " পর্যন্ত": 262,
266
+ " পা": 263,
267
+ " পাকা": 264,
268
+ " পাঠ": 265,
269
+ " পাত": 266,
270
+ " পাতায়": 267,
271
+ " পার": 268,
272
+ " পারতেন": 269,
273
+ " পিছ": 270,
274
+ " পুর": 271,
275
+ " পূর্": 272,
276
+ " পে": 273,
277
+ " পেয়ে": 274,
278
+ " পেয়েছিলেন": 275,
279
+ " প্র": 276,
280
+ " প্রচ": 277,
281
+ " প্রত": 278,
282
+ " প্রতি": 279,
283
+ " প্রথ": 280,
284
+ " প্রথম": 281,
285
+ " প্রব": 282,
286
+ " প্রবন্ধ": 283,
287
+ " প্রস": 284,
288
+ " প্রা": 285,
289
+ " প্রাচীন": 286,
290
+ " প্রান্ত": 287,
291
+ " প্রের": 288,
292
+ " প্রয়": 289,
293
+ " প্রয়ো": 290,
294
+ " প্রয়োজন": 291,
295
+ " পড়": 292,
296
+ " পড়া": 293,
297
+ " পড়াবার": 294,
298
+ " পড়ে": 295,
299
+ " ব": 296,
300
+ " বন্ধ": 297,
301
+ " বন্ধু": 298,
302
+ " বর্তমান": 299,
303
+ " বল": 300,
304
+ " বললেন": 301,
305
+ " বস্ত": 302,
306
+ " বস্তু": 303,
307
+ " বস্তুত": 304,
308
+ " বহ": 305,
309
+ " বহু": 306,
310
+ " বা": 307,
311
+ " বাঁ": 308,
312
+ " বাঁধান": 309,
313
+ " বাঁধানো": 310,
314
+ " বাল": 311,
315
+ " বালক": 312,
316
+ " বালকদের": 313,
317
+ " বাড়ি": 314,
318
+ " বি": 315,
319
+ " বিক": 316,
320
+ " বিকাশ": 317,
321
+ " বিদ": 318,
322
+ " বিদায়": 319,
323
+ " বিশ": 320,
324
+ " বিশ্ব": 321,
325
+ " বিশ্ববি": 322,
326
+ " বিশ্ববিদ": 323,
327
+ " বিশ্ববিদ্যালয়ের": 324,
328
+ " বিষ": 325,
329
+ " বিস্ত": 326,
330
+ " বিস্তার": 327,
331
+ " বৃ": 328,
332
+ " বে": 329,
333
+ " বেত": 330,
334
+ " বেতন": 331,
335
+ " বেদ": 332,
336
+ " বেদনা": 333,
337
+ " বৈ": 334,
338
+ " ব্য": 335,
339
+ " ব্রহ": 336,
340
+ " ব্রহ্ম": 337,
341
+ " ব্রহ্মব": 338,
342
+ " ব্রহ্মবান": 339,
343
+ " ব্রহ্মবান্ধ": 340,
344
+ " ব্রহ্মবান্ধব": 341,
345
+ " বড়": 342,
346
+ " বড়ো": 343,
347
+ " বয়": 344,
348
+ " বয়স": 345,
349
+ " বয়সের": 346,
350
+ " ভ": 347,
351
+ " ভা": 348,
352
+ " ভার": 349,
353
+ " ভাষ": 350,
354
+ " ভিত": 351,
355
+ " ভিতরে": 352,
356
+ " ভুল": 353,
357
+ " ভুলতে": 354,
358
+ " ম": 355,
359
+ " মত": 356,
360
+ " মতো": 357,
361
+ " মধ": 358,
362
+ " মধ্যে": 359,
363
+ " মনে": 360,
364
+ " মনের": 361,
365
+ " মা": 362,
366
+ " মাঠ": 363,
367
+ " মাস": 364,
368
+ " মু": 365,
369
+ " মুখ": 366,
370
+ " মৃত": 367,
371
+ " মৃত্য": 368,
372
+ " মৃত্যু": 369,
373
+ " য": 370,
374
+ " যথ": 371,
375
+ " যথার্থ": 372,
376
+ " যদ": 373,
377
+ " যদি": 374,
378
+ " যদিও": 375,
379
+ " যা": 376,
380
+ " যার": 377,
381
+ " যারা": 378,
382
+ " যে": 379,
383
+ " যোগ": 380,
384
+ " যোগ্য": 381,
385
+ " র": 382,
386
+ " রক্ষ": 383,
387
+ " রক্ষা": 384,
388
+ " রক্ষার": 385,
389
+ " রস": 386,
390
+ " রা": 387,
391
+ " রাখ": 388,
392
+ " রাখতে": 389,
393
+ " রাজ": 390,
394
+ " রাস্ত": 391,
395
+ " রূপ": 392,
396
+ " রোগ": 393,
397
+ " ল": 394,
398
+ " লা": 395,
399
+ " লে": 396,
400
+ " লো": 397,
401
+ " লোক": 398,
402
+ " শ": 399,
403
+ " শান্ত": 400,
404
+ " শান্তিন": 401,
405
+ " শান্তিনিকে": 402,
406
+ " শান্তিনিকেত": 403,
407
+ " শান্তিনিকেতনের": 404,
408
+ " শাল": 405,
409
+ " শাস": 406,
410
+ " শাসন": 407,
411
+ " শিক্ষ": 408,
412
+ " শিক্ষক": 409,
413
+ " শিক্ষকতা": 410,
414
+ " শিক্ষকের": 411,
415
+ " শিক্ষা": 412,
416
+ " শিক্ষার": 413,
417
+ " শেষ": 414,
418
+ " শ্র": 415,
419
+ " শ্রদ্ধ": 416,
420
+ " শ্রদ্ধার": 417,
421
+ " স": 418,
422
+ " সং": 419,
423
+ " সংক": 420,
424
+ " সংকল্প": 421,
425
+ " সংকীর্ণ": 422,
426
+ " সংগ": 423,
427
+ " সঙ্গে": 424,
428
+ " সঞ্চ": 425,
429
+ " সত": 426,
430
+ " সতীশ": 427,
431
+ " সতীশের": 428,
432
+ " সত্য": 429,
433
+ " সব": 430,
434
+ " সম": 431,
435
+ " সমস্ত": 432,
436
+ " সমা": 433,
437
+ " সম্প": 434,
438
+ " সম্পূর্": 435,
439
+ " সম্ব": 436,
440
+ " সম্বন্ধ": 437,
441
+ " সময়ে": 438,
442
+ " সর্": 439,
443
+ " সর্ব": 440,
444
+ " সর্বত": 441,
445
+ " সর্বতো": 442,
446
+ " সর্বতোভাবে": 443,
447
+ " সহ": 444,
448
+ " সহজ": 445,
449
+ " সা": 446,
450
+ " সাধ": 447,
451
+ " সাধক": 448,
452
+ " সাধনা": 449,
453
+ " সাধনাক্ষে": 450,
454
+ " সাধনাক্ষেত্রে": 451,
455
+ " সাম": 452,
456
+ " সামনে": 453,
457
+ " সাহিত": 454,
458
+ " সাহিত্য": 455,
459
+ " সাহিত্যে": 456,
460
+ " সাহিত্যের": 457,
461
+ " সী": 458,
462
+ " সীমান": 459,
463
+ " সীমানায়": 460,
464
+ " সুগ": 461,
465
+ " সুগভীর": 462,
466
+ " সৃষ্ট": 463,
467
+ " সৃষ্টিকার": 464,
468
+ " সৃষ্টিকার্যে": 465,
469
+ " সৃষ্টির": 466,
470
+ " সে": 467,
471
+ " সেই": 468,
472
+ " সেখান": 469,
473
+ " সেখানে": 470,
474
+ " স্": 471,
475
+ " স্থ": 472,
476
+ " স্ব": 473,
477
+ " স্বভাব": 474,
478
+ " স্বভাবের": 475,
479
+ " স্বীকার": 476,
480
+ " হ": 477,
481
+ " হত": 478,
482
+ " হবে": 479,
483
+ " হাতে": 480,
484
+ " হয়": 481,
485
+ " হয়ে": 482,
486
+ " হয়েছিল": 483,
487
+ " হয়েছে": 484,
488
+ " ২": 485,
489
+ "ঀ": 486,
490
+ "ঁ": 487,
491
+ "ঁদের": 488,
492
+ "ং": 489,
493
+ "ঃ": 490,
494
+ "঄": 491,
495
+ "অ": 492,
496
+ "আ": 493,
497
+ "আশ্রমের": 494,
498
+ "ই": 495,
499
+ "ইন": 496,
500
+ "ঈ": 497,
501
+ "উ": 498,
502
+ "ঊ": 499,
503
+ "ঋ": 500,
504
+ "ঌ": 501,
505
+ "঍": 502,
506
+ "঎": 503,
507
+ "এ": 504,
508
+ "এই": 505,
509
+ "এক": 506,
510
+ "ঐ": 507,
511
+ "঑": 508,
512
+ "঒": 509,
513
+ "ও": 510,
514
+ "ওয়": 511,
515
+ "ঔ": 512,
516
+ "ক": 513,
517
+ "কল": 514,
518
+ "কা": 515,
519
+ "কার": 516,
520
+ "কার্যে": 517,
521
+ "কাল": 518,
522
+ "কালে": 519,
523
+ "কালের": 520,
524
+ "কাশ": 521,
525
+ "কিছ": 522,
526
+ "কিছু": 523,
527
+ "কে": 524,
528
+ "কের": 525,
529
+ "ক্ত": 526,
530
+ "ক্তি": 527,
531
+ "ক্ষ": 528,
532
+ "ক্ষা": 529,
533
+ "ক্ষি": 530,
534
+ "ক্ষিণ": 531,
535
+ "ক্ষে": 532,
536
+ "খ": 533,
537
+ "খন": 534,
538
+ "খা": 535,
539
+ "খান": 536,
540
+ "খানে": 537,
541
+ "খে": 538,
542
+ "গ": 539,
543
+ "গত": 540,
544
+ "গা": 541,
545
+ "গের": 542,
546
+ "ঘ": 543,
547
+ "ঙ": 544,
548
+ "ঙ্": 545,
549
+ "ঙ্গ": 546,
550
+ "ঙ্গে": 547,
551
+ "চ": 548,
552
+ "চন্দ": 549,
553
+ "চন্দ্র": 550,
554
+ "চর": 551,
555
+ "চা": 552,
556
+ "চিত": 553,
557
+ "চিত্র": 554,
558
+ "চীন": 555,
559
+ "ছ": 556,
560
+ "ছি": 557,
561
+ "ছিল": 558,
562
+ "ছিলুম": 559,
563
+ "ছিলেন": 560,
564
+ "ছে": 561,
565
+ "ছেন": 562,
566
+ "ছের": 563,
567
+ "জ": 564,
568
+ "জন": 565,
569
+ "জনের": 566,
570
+ "জে": 567,
571
+ "জের": 568,
572
+ "জ্": 569,
573
+ "জ্জ": 570,
574
+ "জ্জ্ব": 571,
575
+ "জ্জ্বল": 572,
576
+ "জ্ঞ": 573,
577
+ "ঝ": 574,
578
+ "ঞ": 575,
579
+ "ঞ্": 576,
580
+ "ঞ্চ": 577,
581
+ "ঞ্জ": 578,
582
+ "ঞ্জল": 579,
583
+ "ট": 580,
584
+ "টা": 581,
585
+ "টি": 582,
586
+ "ঠ": 583,
587
+ "ঠা": 584,
588
+ "ড": 585,
589
+ "ঢ": 586,
590
+ "ণ": 587,
591
+ "ণতা": 588,
592
+ "ণে": 589,
593
+ "ণ্": 590,
594
+ "ণ্ড": 591,
595
+ "ণ্ডার": 592,
596
+ "ণ্���": 593,
597
+ "ত": 594,
598
+ "তলা": 595,
599
+ "তা": 596,
600
+ "তার": 597,
601
+ "তায়": 598,
602
+ "তি": 599,
603
+ "তুম": 600,
604
+ "তে": 601,
605
+ "তেন": 602,
606
+ "ত্ত": 603,
607
+ "ত্র": 604,
608
+ "ত্রে": 605,
609
+ "থ": 606,
610
+ "থা": 607,
611
+ "থায়": 608,
612
+ "থে": 609,
613
+ "দ": 610,
614
+ "দর্শ": 611,
615
+ "দান": 612,
616
+ "দার": 613,
617
+ "দিন": 614,
618
+ "দিনের": 615,
619
+ "দের": 616,
620
+ "দ্ধ": 617,
621
+ "দ্র": 618,
622
+ "ধ": 619,
623
+ "ধান": 620,
624
+ "ধ্য": 621,
625
+ "ন": 622,
626
+ "নকে": 623,
627
+ "না": 624,
628
+ "নাকে": 625,
629
+ "নি": 626,
630
+ "নে": 627,
631
+ "নের": 628,
632
+ "নো": 629,
633
+ "ন্": 630,
634
+ "ন্ত": 631,
635
+ "ন্ত্র": 632,
636
+ "ন্দ": 633,
637
+ "ন্দের": 634,
638
+ "ন্ধ": 635,
639
+ "ন্ন": 636,
640
+ "ন্য": 637,
641
+ "঩": 638,
642
+ "প": 639,
643
+ "পন": 640,
644
+ "পনার": 641,
645
+ "পর": 642,
646
+ "পরী": 643,
647
+ "পা": 644,
648
+ "পুণ": 645,
649
+ "প্ত": 646,
650
+ "প্র": 647,
651
+ "ফ": 648,
652
+ "ব": 649,
653
+ "বা": 650,
654
+ "বাঁ": 651,
655
+ "বাগ": 652,
656
+ "বার": 653,
657
+ "বি": 654,
658
+ "বিত": 655,
659
+ "বে": 656,
660
+ "বেশ": 657,
661
+ "ভ": 658,
662
+ "ভব": 659,
663
+ "ভা": 660,
664
+ "ভাব": 661,
665
+ "ভাবে": 662,
666
+ "ভীর": 663,
667
+ "ম": 664,
668
+ "মতা": 665,
669
+ "মা": 666,
670
+ "মাণ": 667,
671
+ "মাত্র": 668,
672
+ "মান": 669,
673
+ "মান্য": 670,
674
+ "মার": 671,
675
+ "ম্ব": 672,
676
+ "ম্ভ": 673,
677
+ "য": 674,
678
+ "যুক্ত": 675,
679
+ "যোগ": 676,
680
+ "র": 677,
681
+ "রণ": 678,
682
+ "রা": 679,
683
+ "রাজ": 680,
684
+ "রূপ": 681,
685
+ "রূপে": 682,
686
+ "রে": 683,
687
+ "রের": 684,
688
+ "র্": 685,
689
+ "র্জন": 686,
690
+ "র্ত": 687,
691
+ "র্তমান": 688,
692
+ "র্ম": 689,
693
+ "র্শ": 690,
694
+ "঱": 691,
695
+ "ল": 692,
696
+ "লা": 693,
697
+ "লার": 694,
698
+ "লায়": 695,
699
+ "লুম": 696,
700
+ "লে": 697,
701
+ "লেন": 698,
702
+ "লেম": 699,
703
+ "লের": 700,
704
+ "ল্প": 701,
705
+ "঳": 702,
706
+ "঴": 703,
707
+ "঵": 704,
708
+ "শ": 705,
709
+ "শি": 706,
710
+ "শিক্ষ": 707,
711
+ "শ্চ": 708,
712
+ "শ্চিম": 709,
713
+ "শ্র": 710,
714
+ "শ্রম": 711,
715
+ "শ্রমের": 712,
716
+ "শ্রে": 713,
717
+ "শ্রেণ": 714,
718
+ "ষ": 715,
719
+ "ষ্": 716,
720
+ "ষ্ট": 717,
721
+ "ষ্ঠ": 718,
722
+ "ষ্য": 719,
723
+ "স": 720,
724
+ "সা": 721,
725
+ "সার": 722,
726
+ "সে": 723,
727
+ "স্ট": 724,
728
+ "স্ত": 725,
729
+ "স্ব": 726,
730
+ "স্য": 727,
731
+ "হ": 728,
732
+ "হিত": 729,
733
+ "হে": 730,
734
+ "঺": 731,
735
+ "঻": 732,
736
+ "়": 733,
737
+ "ঽ": 734,
738
+ "া": 735,
739
+ "াই": 736,
740
+ "াক": 737,
741
+ "াত": 738,
742
+ "াতে": 739,
743
+ "াত্র": 740,
744
+ "াদ": 741,
745
+ "ান": 742,
746
+ "ানের": 743,
747
+ "ান্ত": 744,
748
+ "ার": 745,
749
+ "ারি": 746,
750
+ "ার্থ": 747,
751
+ "াল": 748,
752
+ "ালী": 749,
753
+ "াশ": 750,
754
+ "াস": 751,
755
+ "ায়": 752,
756
+ "ি": 753,
757
+ "িক": 754,
758
+ "িকার": 755,
759
+ "িকে": 756,
760
+ "িক্ষ": 757,
761
+ "িগ": 758,
762
+ "িছ": 759,
763
+ "িত": 760,
764
+ "িতে": 761,
765
+ "িন": 762,
766
+ "িনি": 763,
767
+ "িন্ত": 764,
768
+ "িম": 765,
769
+ "ির": 766,
770
+ "িল": 767,
771
+ "িষ্ট": 768,
772
+ "িয়": 769,
773
+ "িয়ে": 770,
774
+ "ী": 771,
775
+ "ীকার": 772,
776
+ "ীন": 773,
777
+ "ীব": 774,
778
+ "ীর": 775,
779
+ "ীর্": 776,
780
+ "ীর্ণ": 777,
781
+ "ীশ": 778,
782
+ "ু": 779,
783
+ "ুও": 780,
784
+ "ুক্ত": 781,
785
+ "ুগ": 782,
786
+ "ুণ": 783,
787
+ "ুন": 784,
788
+ "ুব": 785,
789
+ "ুম": 786,
790
+ "ুর": 787,
791
+ "ুল": 788,
792
+ "ুলে": 789,
793
+ "ূ": 790,
794
+ "ূপ": 791,
795
+ "ূর্": 792,
796
+ "ৃ": 793,
797
+ "ৃত": 794,
798
+ "ৃত্তির": 795,
799
+ "ৃপ": 796,
800
+ "ৃপণতা": 797,
801
+ "ৃষ্ট": 798,
802
+ "ৄ": 799,
803
+ "৅": 800,
804
+ "৆": 801,
805
+ "ে": 802,
806
+ "েন": 803,
807
+ "েন্": 804,
808
+ "েন্দ্র": 805,
809
+ "েন্দ্রনা": 806,
810
+ "েন্দ্রনাথ": 807,
811
+ "ের": 808,
812
+ "েষ": 809,
813
+ "ৈ": 810,
814
+ "৉": 811,
815
+ "৊": 812,
816
+ "ো": 813,
817
+ "োগ": 814,
818
+ "োচ": 815,
819
+ "োট": 816,
820
+ "োধ": 817,
821
+ "োল": 818,
822
+ "োলা": 819,
823
+ "োড়": 820,
824
+ "ৌ": 821,
825
+ "্": 822,
826
+ "্চ": 823,
827
+ "্ট": 824,
828
+ "্ত": 825,
829
+ "্তি": 826,
830
+ "্তির": 827,
831
+ "্থ": 828,
832
+ "্ধ": 829,
833
+ "্ন": 830,
834
+ "্প": 831,
835
+ "্ব": 832,
836
+ "্বে": 833,
837
+ "্ভ": 834,
838
+ "্ম": 835,
839
+ "্মান": 836,
840
+ "্য": 837,
841
+ "্যন্ত": 838,
842
+ "্যপ্র": 839,
843
+ "্যা": 840,
844
+ "্যাত": 841,
845
+ "্যাল": 842,
846
+ "্যালয়ের": 843,
847
+ "্যে": 844,
848
+ "্যের": 845,
849
+ "্র": 846,
850
+ "্রহ": 847,
851
+ "্ল": 848,
852
+ "্ষ": 849,
853
+ "ৎ": 850,
854
+ "ৎস": 851,
855
+ "ৎসর্": 852,
856
+ "ৎসর্গ": 853,
857
+ "৏": 854,
858
+ "৐": 855,
859
+ "৑": 856,
860
+ "৒": 857,
861
+ "৓": 858,
862
+ "৔": 859,
863
+ "৕": 860,
864
+ "৖": 861,
865
+ "ৗ": 862,
866
+ "৘": 863,
867
+ "৙": 864,
868
+ "৚": 865,
869
+ "৛": 866,
870
+ "ড়": 867,
871
+ "ড়ি": 868,
872
+ "ড়িতে": 869,
873
+ "ড়িয়ে": 870,
874
+ "ঢ়": 871,
875
+ "৞": 872,
876
+ "য়": 873,
877
+ "য়ে": 874,
878
+ "য়েক": 875,
879
+ "য়ের": 876,
880
+ "ৠ": 877,
881
+ "ৡ": 878,
882
+ "ৢ": 879,
883
+ "ৣ": 880,
884
+ "৤": 881,
885
+ "৥": 882,
886
+ "০": 883,
887
+ "১": 884,
888
+ "২": 885,
889
+ "৩": 886,
890
+ "৪": 887,
891
+ "৫": 888,
892
+ "৬": 889,
893
+ "৭": 890,
894
+ "৮": 891,
895
+ "৯": 892,
896
+ "ৰ": 893,
897
+ "ৱ": 894,
898
+ "৲": 895,
899
+ "৳": 896,
900
+ "৴": 897,
901
+ "৵": 898,
902
+ "৶": 899,
903
+ "৷": 900,
904
+ "৸": 901,
905
+ "৹": 902,
906
+ "৺": 903,
907
+ "৻": 904,
908
+ "ৼ": 905,
909
+ "৽": 906,
910
+ "৾": 907,
911
+ "৿": 908
912
+ },
913
+ "merges": {
914
+ "া|র": "ার",
915
+ " |ত": " ত",
916
+ " |স": " স",
917
+ " |ক": " ক",
918
+ "ে|র": "ের",
919
+ "্|র": "্র",
920
+ " |প": " প",
921
+ " |আ": " আ",
922
+ " |ব": " ব",
923
+ "্|য": "্য",
924
+ " |ন": " ন",
925
+ " ত|া": " তা",
926
+ "ি|ল": "িল",
927
+ " |অ": " অ",
928
+ "্|ত": "্ত",
929
+ "ছ|িল": "ছিল",
930
+ " |দ": " দ",
931
+ "া|ন": "ান",
932
+ " |এ": " এ",
933
+ " তা|ঁ": " তাঁ",
934
+ "র|ে": "রে",
935
+ "য়|ে": "য়ে",
936
+ "ে|ন": "েন",
937
+ "ি|ক": "িক",
938
+ "র|্": "র্",
939
+ " তাঁ|র": " তাঁর",
940
+ "্|ষ": "্ষ",
941
+ " |ছিল": " ছিল",
942
+ " |ম": " ম",
943
+ "ি|ত": "িত",
944
+ "ি|ন": "িন",
945
+ " প|্র": " প্র",
946
+ " আ|ম": " আম",
947
+ " |য": " য",
948
+ "ক|ে": "কে",
949
+ " |শ": " শ",
950
+ "া|ত": "াত",
951
+ " ন|ি": " নি",
952
+ "া|য়": "ায়",
953
+ " |হ": " হ",
954
+ "্|ব": "্ব",
955
+ "দ|ের": "দের",
956
+ "ক|্ষ": "ক্ষ",
957
+ " |র": " র",
958
+ " |জ": " জ",
959
+ " ক|রে": " করে",
960
+ "ন|্": "ন্",
961
+ " |উ": " উ",
962
+ " |ছ": " ছ",
963
+ "্য|ে": "্যে",
964
+ "শ|্র": "শ্র",
965
+ " এ|ক": " এক",
966
+ " ক|র": " কর",
967
+ "ল|ে": "লে",
968
+ " ত|ার": " তার",
969
+ " ক|া": " কা",
970
+ " ন|া": " না",
971
+ " স|ম": " সম",
972
+ "শ্র|ম": "শ্রম",
973
+ " প|র": " পর",
974
+ "থ|া": "থা",
975
+ " |গ": " গ",
976
+ " ব|ি": " বি",
977
+ " |ভ": " ভ",
978
+ " আম|ার": " আমার",
979
+ "িন|ি": "িনি",
980
+ " স|া": " সা",
981
+ "ত|ে": "তে",
982
+ " |চ": " চ",
983
+ "াত|্র": "াত্র",
984
+ " ত|িনি": " তিনি",
985
+ "ষ|্": "ষ্",
986
+ " স|ে": " সে",
987
+ "ব|ে": "বে",
988
+ "স|্ত": "স্ত",
989
+ "ত|ি": "তি",
990
+ " এ|ই": " এই",
991
+ "ু|ম": "ুম",
992
+ "্|প": "্প",
993
+ " হ|য়ে": " হয়ে",
994
+ "ছ|ে": "ছে",
995
+ "া|ল": "াল",
996
+ "িক|্ষ": "িক্ষ",
997
+ "শ্রম|ের": "শ্রমের",
998
+ "্|ম": "্ম",
999
+ "ত|া": "তা",
1000
+ "ন|ে": "নে",
1001
+ "ন|া": "না",
1002
+ "ছিল|েন": "ছিলেন",
1003
+ "ষ্|ট": "ষ্ট",
1004
+ "খ|ন": "খন",
1005
+ "ব|া": "বা",
1006
+ "ভ|া": "ভা",
1007
+ " ছ|াত্র": " ছাত্র",
1008
+ " |ও": " ও",
1009
+ "থ|ে": "থে",
1010
+ "িক|ে": "িকে",
1011
+ "ৃ|ত": "ৃত",
1012
+ "ল|া": "লা",
1013
+ "ো|গ": "োগ",
1014
+ "্ত|ি": "্তি",
1015
+ "জ|ন": "জন",
1016
+ "ঙ|্": "ঙ্",
1017
+ "ঙ্|গ": "ঙ্গ",
1018
+ " স|ত": " সত",
1019
+ " শ|িক্ষ": " শিক্ষ",
1020
+ " নি|য়ে": " নিয়ে",
1021
+ " ব|া": " বা",
1022
+ "ট|া": "টা",
1023
+ "ল|্প": "ল্প",
1024
+ "্|চ": "্চ",
1025
+ " উ|প": " উপ",
1026
+ "ি|য়ে": "িয়ে",
1027
+ " য|ে": " যে",
1028
+ " আম|ি": " আমি",
1029
+ "ক|ার": "কার",
1030
+ "া|শ": "াশ",
1031
+ " |থে": " থে",
1032
+ " থে|কে": " থেকে",
1033
+ " আ|শ্রমের": " আশ্রমের",
1034
+ " ক|ো": " কো",
1035
+ "ট|ি": "টি",
1036
+ " ব|ে": " বে",
1037
+ "ব|ার": "বার",
1038
+ " ম|ধ": " মধ",
1039
+ " মধ|্যে": " মধ্যে",
1040
+ " আ|র": " আর",
1041
+ "্|ধ": "্ধ",
1042
+ "ন্|ধ": "ন্ধ",
1043
+ "ী|শ": "ীশ",
1044
+ "হ|িত": "হিত",
1045
+ " স|ং": " সং",
1046
+ "খ|ান": "খান",
1047
+ "ন|ের": "নের",
1048
+ " দ|ে": " দে",
1049
+ "ম|া": "মা",
1050
+ " অ|ন": " অন",
1051
+ "ব|ি": "বি",
1052
+ "ক্ষ|া": "ক্ষা",
1053
+ "া|স": "াস",
1054
+ "ঙ্গ|ে": "ঙ্গে",
1055
+ " সত|ীশ": " সতীশ",
1056
+ "ন্|দ": "ন্দ",
1057
+ " তাঁ|কে": " তাঁকে",
1058
+ "ূ|প": "ূপ",
1059
+ "ান|্ত": "ান্ত",
1060
+ " পর|ি": " পরি",
1061
+ "ম|ান": "মান",
1062
+ " দ|িকে": " দিকে",
1063
+ " প|া": " পা",
1064
+ " ত|খন": " তখন",
1065
+ " প|ড়": " পড়",
1066
+ " র|া": " রা",
1067
+ " অ|ল্প": " অল্প",
1068
+ " কা|জ": " কাজ",
1069
+ "ু|ন": "ুন",
1070
+ "ক্ষ|ে": "ক্ষে",
1071
+ " আ|ত": " আত",
1072
+ " আত|্ম": " আত্ম",
1073
+ "দ|িন": "দিন",
1074
+ " ছিল|েন": " ছিলেন",
1075
+ "প|ন": "পন",
1076
+ " প|ার": " পার",
1077
+ "ল|েন": "লেন",
1078
+ "িন|্ত": "িন্ত",
1079
+ " শিক্ষ|ক": " শিক্ষক",
1080
+ "দ|ান": "দান",
1081
+ " প্র|তি": " প্রতি",
1082
+ "্|থ": "্থ",
1083
+ " সা|হিত": " সাহিত",
1084
+ " দ|্ব": " দ্ব",
1085
+ "ন|্ত": "ন্ত",
1086
+ " জ|ন": " জন",
1087
+ "ল|ের": "লের",
1088
+ " এ|ব": " এব",
1089
+ " এব|ং": " এবং",
1090
+ "য়|ের": "য়ের",
1091
+ " গ|ে": " গে",
1092
+ " কর|তে": " করতে",
1093
+ "ী|র": "ীর",
1094
+ " অন|ু": " অনু",
1095
+ " তা|দের": " তাদের",
1096
+ " স|্ব": " স্ব",
1097
+ " |খ": " খ",
1098
+ " ক|ার": " কার",
1099
+ "্য|া": "্যা",
1100
+ "স|ে": "সে",
1101
+ " ক|িন্ত": " কিন্ত",
1102
+ " কিন্ত|ু": " কিন্তু",
1103
+ " স|ঙ্গে": " সঙ্গে",
1104
+ " র|ূপ": " রূপ",
1105
+ " এক|টা": " একটা",
1106
+ "ৃ|ষ্ট": "ৃষ্ট",
1107
+ "ী|র্": "ীর্",
1108
+ " দ্ব|ার": " দ্বার",
1109
+ "ি|ছ": "িছ",
1110
+ " প্র|া": " প্রা",
1111
+ "ী|ন": "ীন",
1112
+ " অ|তি": " অতি",
1113
+ "ক|া": "কা",
1114
+ "ু|র": "ুর",
1115
+ "িত|ে": "িতে",
1116
+ " দে|খ": " দেখ",
1117
+ " অ|ব": " অব",
1118
+ "দ|্ধ": "দ্ধ",
1119
+ " স|র্": " সর্",
1120
+ "র্|শ": "র্শ",
1121
+ " |থা": " থা",
1122
+ " কা|ছে": " কাছে",
1123
+ " য|া": " যা",
1124
+ " ক|থা": " কথা",
1125
+ " ভ|া": " ভা",
1126
+ "প|্র": "প্র",
1127
+ "ন|ো": "নো",
1128
+ " উ|চ": " উচ",
1129
+ " ম|ত": " মত",
1130
+ " হয়ে|ছিল": " হয়েছিল",
1131
+ " পর|ী": " পরী",
1132
+ "পন|ার": "পনার",
1133
+ " ব|ন্ধ": " বন্ধ",
1134
+ " আম|া": " আমা",
1135
+ " কাজ|ে": " কাজে",
1136
+ " য|দ": " যদ",
1137
+ " যদ|ি": " যদি",
1138
+ " য|োগ": " যোগ",
1139
+ "ক|্ত": "ক্ত",
1140
+ " ছাত্র|দের": " ছাত্রদের",
1141
+ "ার|্থ": "ার্থ",
1142
+ " ন|ত": " নত",
1143
+ " নত|ুন": " নতুন",
1144
+ "আ|শ্রমের": "আশ্রমের",
1145
+ " সাহিত|্য": " সাহিত্য",
1146
+ " কর|ত": " করত",
1147
+ " স|ৃষ্ট": " সৃষ্ট",
1148
+ "ি|র": "ির",
1149
+ " সে|খান": " সেখান",
1150
+ "ি|ম": "িম",
1151
+ " |ই": " ই",
1152
+ "চ|ীন": "চীন",
1153
+ " দ|ু": " দু",
1154
+ "ধ|ান": "ধান",
1155
+ " ন|ে": " নে",
1156
+ " প|রে": " পরে",
1157
+ "র|্ত": "র্ত",
1158
+ "র|া": "রা",
1159
+ " আ|শ্রম": " আশ্রম",
1160
+ "ূ|র্": "ূর্",
1161
+ "দ|ার": "দার",
1162
+ " ব|য়": " বয়",
1163
+ "দ|র্শ": "দর্শ",
1164
+ " ছ|ে": " ছে",
1165
+ "ছিল|ুম": "ছিলুম",
1166
+ "স|্ব": "স্ব",
1167
+ "র্|ম": "র্ম",
1168
+ " কো|নো": " কোনো",
1169
+ " চ|ে": " চে",
1170
+ "স|া": "সা",
1171
+ "ন্|ন": "ন্ন",
1172
+ " কার|ণ": " কারণ",
1173
+ " অ|ধ": " অধ",
1174
+ "ু|ণ": "ুণ",
1175
+ " ব|ল": " বল",
1176
+ " এ|সে": " এসে",
1177
+ " বন্ধ|ু": " বন্ধু",
1178
+ " দ|িয়ে": " দিয়ে",
1179
+ " বি|শ": " বিশ",
1180
+ "জ|্": "জ্",
1181
+ "ভা|বে": "ভাবে",
1182
+ "িক|ার": "িকার",
1183
+ " চ|ল": " চল",
1184
+ " প|ে": " পে",
1185
+ " সে|ই": " সেই",
1186
+ " সা|ধ": " সাধ",
1187
+ " করে|ছিলেন": " করেছিল��ন",
1188
+ "ভা|ব": "ভাব",
1189
+ " অ|ক": " অক",
1190
+ " উচ|্চ": " উচ্চ",
1191
+ " ব|িক": " বিক",
1192
+ " বিক|াশ": " বিকাশ",
1193
+ "া|ই": "াই",
1194
+ " সং|ক": " সংক",
1195
+ " স|ী": " সী",
1196
+ "গ|া": "গা",
1197
+ " ম|া": " মা",
1198
+ "ু|ব": "ুব",
1199
+ " জ|া": " জা",
1200
+ "ত|্ত": "ত্ত",
1201
+ " প্রা|চীন": " প্রাচীন",
1202
+ "ল|ায়": "লায়",
1203
+ " বে|দ": " বেদ",
1204
+ " সা|ম": " সাম",
1205
+ " পড়|ে": " পড়ে",
1206
+ "্|ন": "্ন",
1207
+ "ড়|ি": "ড়ি",
1208
+ "এ|ক": "এক",
1209
+ "্র|হ": "্রহ",
1210
+ " হয়ে|ছে": " হয়েছে",
1211
+ " |ল": " ল",
1212
+ "ক|াশ": "কাশ",
1213
+ "্|ভ": "্ভ",
1214
+ "ু|ল": "ুল",
1215
+ " র|ক্ষ": " রক্ষ",
1216
+ "স|ার": "সার",
1217
+ "াত|ে": "াতে",
1218
+ " |লা": " লা",
1219
+ " বয়|স": " বয়স",
1220
+ "্তি|র": "্তির",
1221
+ "ে|ষ": "েষ",
1222
+ " ছে|লে": " ছেলে",
1223
+ "ত|েন": "তেন",
1224
+ "দ|্র": "দ্র",
1225
+ "প|র": "পর",
1226
+ "ান|ের": "ানের",
1227
+ " স|হ": " সহ",
1228
+ "ত|ায়": "তায়",
1229
+ " বি|দ": " বিদ",
1230
+ " বে|ত": " বেত",
1231
+ " হ|ত": " হত",
1232
+ " সম|স্ত": " সমস্ত",
1233
+ "ু|গ": "ুগ",
1234
+ " দ|ান": " দান",
1235
+ " চে|ষ্ট": " চেষ্ট",
1236
+ " আ|র্": " আর্",
1237
+ " ন|য়": " নয়",
1238
+ " অ|জ": " অজ",
1239
+ " অজ|িত": " অজিত",
1240
+ " সতীশ|ের": " সতীশের",
1241
+ " ক|ে": " কে",
1242
+ " ম|ু": " মু",
1243
+ " |ধ": " ধ",
1244
+ " দ|িল": " দিল",
1245
+ " আ|পনার": " আপনার",
1246
+ "া|দ": "াদ",
1247
+ " তার|া": " তারা",
1248
+ " শ|্র": " শ্র",
1249
+ " শ্র|দ্ধ": " শ্রদ্ধ",
1250
+ "প|্ত": "প্ত",
1251
+ "ৃ|প": "ৃপ",
1252
+ "ণ|তা": "ণতা",
1253
+ "ু|ও": "ুও",
1254
+ " সর্|ব": " সর্ব",
1255
+ " ক|খন": " কখন",
1256
+ " কখন|ো": " কখনো",
1257
+ " পে|য়ে": " পেয়ে",
1258
+ " কা|লের": " কালের",
1259
+ " |২": " ২",
1260
+ " শ|ান্ত": " শান্ত",
1261
+ "ো|ট": "োট",
1262
+ "ক্ষ|ি": "ক্ষি",
1263
+ "ক্ষি|ণ": "ক্ষিণ",
1264
+ " দ|ীর্": " দীর্",
1265
+ " দীর্|ঘ": " দীর্ঘ",
1266
+ "শ|্চ": "শ্চ",
1267
+ " কো|থা": " কোথা",
1268
+ " কোথা|ও": " কোথাও",
1269
+ " তা|ল": " তাল",
1270
+ "য়ে|ক": "য়েক",
1271
+ " উ|ত্ত": " উত্ত",
1272
+ " উত্ত|র": " উত্তর",
1273
+ " বা|ঁ": " বাঁ",
1274
+ " এক|টি": " একটি",
1275
+ " সাম|নে": " সামনে",
1276
+ " গ|া": " গা",
1277
+ "ছ|ের": "ছের",
1278
+ "্য|ন্ত": "্যন্ত",
1279
+ " তখন|ো": " তখনো",
1280
+ "ী|ব": "ীব",
1281
+ " জন|্যে": " জন্যে",
1282
+ "ত|লা": "তলা",
1283
+ " বা|ড়ি": " বাড়ি",
1284
+ "ক|িছ": "কিছ",
1285
+ "কিছ|ু": "কিছু",
1286
+ " উপ|রে": " উপরে",
1287
+ "র্ত|মান": "র্তমান",
1288
+ " বি|স্ত": " বিস্ত",
1289
+ " ব|হ": " বহ",
1290
+ "ক|াল": "কাল",
1291
+ " দেখ|া": " দেখা",
1292
+ " প|ূর্": " পূর্",
1293
+ " জ|ম": " জম",
1294
+ " সেখান|ে": " সেখানে",
1295
+ " আ|হ": " আহ",
1296
+ "ম|্ভ": "ম্ভ",
1297
+ "ার|ি": "ারি",
1298
+ " প্র|থ": " প্রথ",
1299
+ " প্রথ|ম": " প্রথম",
1300
+ "ল|ার": "লার",
1301
+ " |ঘ": " ঘ",
1302
+ " উপ|া": " উপা",
1303
+ "ধ|্য": "ধ্য",
1304
+ "্য|াল": "্যাল",
1305
+ "্যাল|য়ের": "্যালয়ের",
1306
+ " বেত|ন": " বেতন",
1307
+ "ও|য়": "ওয়",
1308
+ " প্র|য়": " প্রয়",
1309
+ " প্রয়|ো": " প্রয়ো",
1310
+ " প্রয়ো|জন": " প্রয়োজন",
1311
+ " উপ|ল": " উপল",
1312
+ " উপল|ক্ষে": " উপলক্ষে",
1313
+ " অ|র্": " অর্",
1314
+ " সম|া": " সমা",
1315
+ "জ|ের": "জের",
1316
+ " রক্ষ|ার": " রক্ষার",
1317
+ " ব|্য": " ব্য",
1318
+ "ক|্তি": "ক্তি",
1319
+ "গ|ত": "গত",
1320
+ "ন্ত|্র": "ন্ত্র",
1321
+ "ম|াত্র": "মাত্র",
1322
+ " নি|র্": " নির্",
1323
+ "ষ|্য": "ষ্য",
1324
+ " আর্|থ": " আর্থ",
1325
+ " আর্থ|িক": " আর্থিক",
1326
+ " প্র|চ": " প্রচ",
1327
+ " র|ক্ষা": " রক্ষা",
1328
+ " কর|বার": " করবার",
1329
+ " ক|র্ম": " কর্ম",
1330
+ " অ|নে": " অনে",
1331
+ " অনে|ক": " অনেক",
1332
+ "খ|ে": "খে",
1333
+ " দ্বার|া": " দ্বারা",
1334
+ " পরী|ক্ষ": " পরীক্ষ",
1335
+ "য|োগ": "যোগ",
1336
+ "্|ট": "্ট",
1337
+ " অধ|্যা": " অধ্যা",
1338
+ " ম|নে": " মনে",
1339
+ "ো|ড়": "োড়",
1340
+ " সম|য়ে": " সময়ে",
1341
+ " ব|াল": " বাল",
1342
+ " বাল|ক": " বালক",
1343
+ " হ|য়": " হয়",
1344
+ " আমা|দের": " আমাদের",
1345
+ "ন|ি": "নি",
1346
+ " আ|স": " আস",
1347
+ " আমা|কে": " আমাকে",
1348
+ " দিয়ে|ছিলেন": " দিয়েছিলেন",
1349
+ " স|ব": " সব",
1350
+ "ণ|ে": "ণে",
1351
+ " প্র|ব": " প্রব",
1352
+ "ি|ষ্ট": "িষ্ট",
1353
+ " তা|তে": " তাতে",
1354
+ "ী|কার": "ীকার",
1355
+ " বল|লেন": " বললেন",
1356
+ " দ|িতে": " দিতে",
1357
+ "ল|ুম": "লুম",
1358
+ " পরী|ক্ষা": " পরীক্ষা",
1359
+ " পা|ঠ": " পাঠ",
1360
+ " দ|িত": " দিত",
1361
+ "ীর্|ণ": "ীর্ণ",
1362
+ "ঞ|্চ": "ঞ্চ",
1363
+ "ণ|্": "ণ্",
1364
+ "ণ্|ড": "ণ্ড",
1365
+ " ই|ং": " ইং",
1366
+ " ইং|রে": " ইংরে",
1367
+ " ইংরে|জ": " ইংরেজ",
1368
+ " ইংরেজ|ি": " ইংরেজি",
1369
+ "ভ|ীর": "ভীর",
1370
+ " ভা|ষ": " ভাষ",
1371
+ "জ্|ঞ": "জ্ঞ",
1372
+ "ন|কে": "নকে",
1373
+ " অ|ত": " অত",
1374
+ " শ|াস": " শাস",
1375
+ "ৎ|স": "ৎস",
1376
+ " বেদ|না": " বেদনা",
1377
+ " সম|্প": " সম্প",
1378
+ "ত|ার": "তার",
1379
+ " পরি|চ": " পরিচ",
1380
+ " পরিচ|য়": " পরিচয়",
1381
+ " সাধ|না": " সাধনা",
1382
+ "ত|্র": "ত্র",
1383
+ "ত্র|ে": "ত্রে",
1384
+ "ঞ|্": "ঞ্",
1385
+ "ঞ্|জ": "ঞ্জ",
1386
+ " জন|্য": " জন্য",
1387
+ "ু|ক্ত": "ুক্ত",
1388
+ "ৃপ|ণতা": "ৃপণতা",
1389
+ " রা|খ": " রাখ",
1390
+ " যদি|ও": " যদিও",
1391
+ "মা|ণ": "মাণ",
1392
+ " ত|ব": " তব",
1393
+ " তব|ুও": " তবুও",
1394
+ " আ|ন": " আন",
1395
+ "ন্|দের": "ন্দের",
1396
+ " স্ব|ভাব": " স্বভাব",
1397
+ " অক|ৃত": " অকৃত",
1398
+ " আত্ম|দান": " আত্মদান",
1399
+ " য|থ": " যথ",
1400
+ " যথ|ার্থ": " যথার্থ",
1401
+ " শিক্ষক|ের": " শিক্ষকের",
1402
+ " আ|দর্শ": " আদর্শ",
1403
+ "না|কে": "নাকে",
1404
+ " ভ|িত": " ভিত",
1405
+ " শ্রদ্ধ|ার": " শ্রদ্ধার",
1406
+ "ছ|েন": "ছেন",
1407
+ "হ|ে": "হে",
1408
+ " প|দ": " পদ",
1409
+ "চ|া": "চা",
1410
+ " করত|ুম": " করতুম",
1411
+ " সৃষ্ট|ির": " সৃষ্টির",
1412
+ " সংক|ল্প": " সংকল্প",
1413
+ "লে|ম": "লেম",
1414
+ " শান্ত|িন": " শান্তিন",
1415
+ " শান্তিন|িকে": " শান্তিনিকে",
1416
+ " শান্তিনিকে|ত": " শান্তিনিকেত",
1417
+ " শান্তিনিকেত|নের": " শান্তিনিকেতনের",
1418
+ " প্র|ান্ত": " প্রান্ত",
1419
+ " পরি|ধ": " পরিধ",
1420
+ " ছ|োট": " ছোট",
1421
+ " ছোট|ো": " ছোটো",
1422
+ " দ|ক্ষিণ": " দক্ষিণ",
1423
+ " সী|মান": " সীমান",
1424
+ " সীমান|ায়": " সীমানায়",
1425
+ "বা|ঁ": "বাঁ",
1426
+ " শ|াল": " শাল",
1427
+ "ব|িত": "বিত",
1428
+ "বে|শ": "বেশ",
1429
+ " প|িছ": " পিছ",
1430
+ "বা|গ": "বাগ",
1431
+ "শ্চ|িম": "শ্চিম",
1432
+ " জা|ম": " জাম",
1433
+ " দু|টি": " দুটি",
1434
+ " ত|লায়": " তলায়",
1435
+ "্ব|ে": "্বে",
1436
+ " বাঁ|ধান": " বাঁধান",
1437
+ " বাঁধান|ো": " বাঁধানো",
1438
+ " নি|র": " নির",
1439
+ " গা|ছের": " গাছের",
1440
+ " নে|ই": " নেই",
1441
+ "ি|গ": "িগ",
1442
+ " পর|্যন্ত": " পর্যন্ত",
1443
+ " মা|ঠ": " মাঠ",
1444
+ " অতি|থ": " অতিথ",
1445
+ " অতিথ|ি": " অতিথি",
1446
+ " দ|ো": " দো",
1447
+ "ঠ|া": "ঠা",
1448
+ " তার|ই": " তারই",
1449
+ " ক|দ": " কদ",
1450
+ " ছ|ায়": " ছায়",
1451
+ " পা|কা": " পাকা",
1452
+ " প|ুর": " পুর",
1453
+ "ো|ধ": "োধ",
1454
+ " সং|গ": " সংগ",
1455
+ "ড়|িয়ে": "ড়িয়ে",
1456
+ " ব|র্তমান": " বর্তমান",
1457
+ " স|্": " স্",
1458
+ "ড়|িতে": "ড়ি��ে",
1459
+ " বহ|ু": " বহু",
1460
+ "কাল|ের": "কালের",
1461
+ "শ্র|ে": "শ্রে",
1462
+ "শ্রে|ণ": "শ্রেণ",
1463
+ "ো|ল": "োল",
1464
+ "ন|্য": "ন্য",
1465
+ " রা|স্ত": " রাস্ত",
1466
+ " গে|ছে": " গেছে",
1467
+ " ল|ো": " লো",
1468
+ " লো|ক": " লোক",
1469
+ "মান|্য": "মান্য",
1470
+ " আহ|ার": " আহার",
1471
+ " র|োগ": " রোগ",
1472
+ " বিস্ত|ার": " বিস্তার",
1473
+ " আর|ম্ভ": " আরম্ভ",
1474
+ "রা|জ": "রাজ",
1475
+ " অব|কাশ": " অবকাশ",
1476
+ " ব|ৃ": " বৃ",
1477
+ " হ|াতে": " হাতে",
1478
+ "ম|্ব": "ম্ব",
1479
+ " বয়স|ের": " বয়সের",
1480
+ "স|্য": "স্য",
1481
+ "ৃত|্তির": "ৃত্তির",
1482
+ " শ|েষ": " শেষ",
1483
+ " নি|দর্শ": " নিদর্শ",
1484
+ " নিদর্শ|ন": " নিদর্শন",
1485
+ "াল|ী": "ালী",
1486
+ "ভ|ব": "ভব",
1487
+ " এক|ত": " একত",
1488
+ " থা|ক": " থাক",
1489
+ "েন|্": "েন্",
1490
+ "েন্|দ্র": "েন্দ্র",
1491
+ "েন্দ্র|না": "েন্দ্রনা",
1492
+ "েন্দ্রনা|থ": "েন্দ্রনাথ",
1493
+ " ক|য়েক": " কয়েক",
1494
+ "চ|র": "চর",
1495
+ " ঘ|রে": " ঘরে",
1496
+ "এ|ই": "এই",
1497
+ " ব|্রহ": " ব্রহ",
1498
+ " ব্রহ|্ম": " ব্রহ্ম",
1499
+ " ব্রহ্ম|ব": " ব্রহ্মব",
1500
+ " ব্রহ্মব|ান": " ব্রহ্মবান",
1501
+ " ব্রহ্মবান|্ধ": " ব্রহ্মবান্ধ",
1502
+ " ব্রহ্মবান্ধ|ব": " ব্রহ্মবান্ধব",
1503
+ " পড়|া": " পড়া",
1504
+ " পড়া|বার": " পড়াবার",
1505
+ " জ|ুগ": " জুগ",
1506
+ " জুগ|িয়ে": " জুগিয়ে",
1507
+ "ছ|ি": "ছি",
1508
+ "ু|লে": "ুলে",
1509
+ "কা|লে": "কালে",
1510
+ " রা|জ": " রাজ",
1511
+ "ষ্|ঠ": "ষ্ঠ",
1512
+ "গ|ের": "গের",
1513
+ "প|া": "পা",
1514
+ " ক|্র": " ক্র",
1515
+ "ি|য়": "িয়",
1516
+ "া|ক": "াক",
1517
+ " ন|িত": " নিত",
1518
+ "্য|প্র": "্যপ্র",
1519
+ " অ|ঙ্গ": " অঙ্গ",
1520
+ " ক|্ষ": " ক্ষ",
1521
+ "শ|ি": "শি",
1522
+ " সম|্ব": " সম্ব",
1523
+ " সম্ব|ন্ধ": " সম্বন্ধ",
1524
+ " থা|কা": " থাকা",
1525
+ " সত|্য": " সত্য",
1526
+ " সহ|জ": " সহজ",
1527
+ " উপা|য়ে": " উপায়ে",
1528
+ "জ|ে": "জে",
1529
+ " চেষ্ট|া": " চেষ্টা",
1530
+ " অ|সা": " অসা",
1531
+ "স|্ট": "স্ট",
1532
+ " অধ্যা|পনার": " অধ্যাপনার",
1533
+ " তাঁ|দের": " তাঁদের",
1534
+ " প্র|স": " প্রস",
1535
+ "জন|ের": "জনের",
1536
+ " ভ|ুল": " ভুল",
1537
+ " ভুল|তে": " ভুলতে",
1538
+ " অজিত|ক": " অজিতক",
1539
+ " অজিতক|ুম": " অজিতকুম",
1540
+ " অজিতকুম|ার": " অজিতকুমার",
1541
+ "চ|ন্দ": "চন্দ",
1542
+ "চন্দ|্র": "চন্দ্র",
1543
+ "পর|ী": "পরী",
1544
+ " প|াত": " পাত",
1545
+ " পাত|ায়": " পাতায়",
1546
+ " জ|ান": " জান",
1547
+ " এ|ম": " এম",
1548
+ " এম|ন": " এমন",
1549
+ " |লে": " লে",
1550
+ "খ|া": "খা",
1551
+ "জ্|জ": "জ্জ",
1552
+ "জ্জ|্ব": "জ্জ্ব",
1553
+ "জ্জ্ব|ল": "জ্জ্বল",
1554
+ "ম|তা": "মতা",
1555
+ "থ|ায়": "থায়",
1556
+ " বিদ|ায়": " বিদায়",
1557
+ " কর|া": " করা",
1558
+ " অ|স": " অস",
1559
+ "্ম|ান": "্মান",
1560
+ " স্ব|ীকার": " স্বীকার",
1561
+ " নিয়ে|ছিলেন": " নিয়েছিলেন",
1562
+ "ম|ার": "মার",
1563
+ " ম|নের": " মনের",
1564
+ " মু|খ": " মুখ",
1565
+ "ঁ|দের": "ঁদের",
1566
+ "ত|ুম": "তুম",
1567
+ " বিশ|্ব": " বিশ্ব",
1568
+ " বিশ্ব|বি": " বিশ্ববি",
1569
+ " বিশ্ববি|দ": " বিশ্ববিদ",
1570
+ " বিশ্ববিদ|্যালয়ের": " বিশ্ববিদ্যালয়ের",
1571
+ "র|ের": "রের",
1572
+ " ব|ড়": " বড়",
1573
+ " বড়|ো": " বড়ো",
1574
+ " জ|ীব": " জীব",
1575
+ "ই|ন": "ইন",
1576
+ " দ|ারি": " দারি",
1577
+ " দারি|দ্র": " দারিদ্র",
1578
+ "্য|ের": "্যের",
1579
+ " ভ|ার": " ভার",
1580
+ " দিল|েন": " দিলেন",
1581
+ " অ|গ": " অগ",
1582
+ "ো|চ": "োচ",
1583
+ " ম|াস": " মাস",
1584
+ " স|ঞ্চ": " সঞ্চ",
1585
+ "র|ণ": "রণ",
1586
+ " প্র|ত": " প্রত",
1587
+ " র|স": " রস",
1588
+ "ণ্ড|ার": "ণ্ডার",
1589
+ "ো|লা": "োলা",
1590
+ "খান|ে": "খানে",
1591
+ " চল|তে": " চলতে",
1592
+ " আ|স্ব": " আস্ব",
1593
+ " আস্ব|াদ": " আস্বাদ",
1594
+ " সাহিত|্যে": " সাহিত্যে",
1595
+ " স|ুগ": " সুগ",
1596
+ " সুগ|ভীর": " সুগভীর",
1597
+ " অ|ভ": " অভ",
1598
+ " মত|ো": " মতো",
1599
+ " ছাত্র|কে": " ছাত্রকে",
1600
+ " সংক|ীর্ণ": " সংকীর্ণ",
1601
+ "প|ুণ": "পুণ",
1602
+ " সাহিত্য|ের": " সাহিত্যের",
1603
+ " সাধ|ক": " সাধক",
1604
+ " দিত|েন": " দিতেন",
1605
+ " ছেলে|দের": " ছেলেদের",
1606
+ "ক|ের": "কের",
1607
+ " শাস|ন": " শাসন",
1608
+ " থা|কে": " থাকে",
1609
+ " পার|তেন": " পারতেন",
1610
+ " ম|ৃত": " মৃত",
1611
+ " মৃত|্য": " মৃত্য",
1612
+ " মৃত্য|ু": " মৃত্যু",
1613
+ " য|ার": " যার",
1614
+ " যার|া": " যারা",
1615
+ " হ|বে": " হবে",
1616
+ " সম্প|ূর্": " সম্পূর্",
1617
+ " এসে|ছিলেন": " এসেছিলেন",
1618
+ " জ|গ": " জগ",
1619
+ " জগ|দান": " জগদান",
1620
+ " জগদান|ন্দ": " জগদানন্দ",
1621
+ " প্র|ের": " প্রের",
1622
+ " ব|ৈ": " বৈ",
1623
+ " প্রব|ন্ধ": " প্রবন্ধ",
1624
+ "ক|ল": "কল",
1625
+ "ঞ্জ|ল": "ঞ্জল",
1626
+ " দেখ|ে": " দেখে",
1627
+ " অ|ভাব": " অভাব",
1628
+ " জম|ি": " জমি",
1629
+ " জমি|দার": " জমিদার",
1630
+ "য|ুক্ত": "যুক্ত",
1631
+ " ক|ৃপণতা": " কৃপণতা",
1632
+ " রাখ|তে": " রাখতে",
1633
+ " পরি|মাণ": " পরিমাণ",
1634
+ " আন|ন্দের": " আনন্দের",
1635
+ " প|ক্ষে": " পক্ষে",
1636
+ " শিক্ষ|া": " শিক্ষা",
1637
+ " স্বভাব|ের": " স্বভাবের",
1638
+ " অকৃত|্র": " অকৃত্র",
1639
+ " অকৃত্র|িম": " অকৃত্রিম",
1640
+ " সর্ব|ত": " সর্বত",
1641
+ " সর্বত|ো": " সর্বতো",
1642
+ " সর্বতো|ভাবে": " সর্বতোভাবে",
1643
+ " বালক|দের": " বালকদের",
1644
+ " এক|জন": " একজন",
1645
+ " বি|ষ": " বিষ",
1646
+ "ণ|্য": "ণ্য",
1647
+ " কা|ছ": " কাছ",
1648
+ " অধ|িকার": " অধিকার",
1649
+ " ব|স্ত": " বস্ত",
1650
+ " বস্ত|ু": " বস্তু",
1651
+ " বস্তু|ত": " বস্তুত",
1652
+ "শ|িক্ষ": "শিক্ষ",
1653
+ " শিক্ষ|ার": " শিক্ষার",
1654
+ "্|ল": "্ল",
1655
+ "র্|জন": "র্জন",
1656
+ " ভিত|রে": " ভিতরে",
1657
+ " সৃষ্ট|িকার": " সৃষ্টিকার",
1658
+ " সৃষ্টিকার|্যে": " সৃষ্টিকার্যে",
1659
+ " আ|প": " আপ",
1660
+ " আপ|নাকে": " আপনাকে",
1661
+ "ৎস|র্": "ৎসর্",
1662
+ "ৎসর্|গ": "ৎসর্গ",
1663
+ " স|্থ": " স্থ",
1664
+ " জ|্": " জ্",
1665
+ " জ্|ঞ": " জ্ঞ",
1666
+ " জ্ঞ|ানের": " জ্ঞানের",
1667
+ " ছাত্র|ের": " ছাত্রের",
1668
+ " শিক্ষক|তা": " শিক্ষকতা",
1669
+ " যোগ|্য": " যোগ্য",
1670
+ "কার|্যে": "কার্যে",
1671
+ "্য|াত": "্যাত",
1672
+ " পেয়ে|ছিলেন": " পেয়েছিলেন",
1673
+ "দিন|ের": "দিনের",
1674
+ " আদর্শ|ের": " আদর্শের",
1675
+ " ত|বে": " তবে",
1676
+ " গে|লেন": " গেলেন",
1677
+ "র|ূপ": "রূপ",
1678
+ "রূপ|ে": "রূপে",
1679
+ " কে|ব": " কেব",
1680
+ " কেব|ল": " কেবল",
1681
+ " সাধনা|ক্ষে": " সাধনাক্ষে",
1682
+ " সাধনাক্ষে|ত্রে": " সাধনাক্ষেত্রে",
1683
+ " ন|ান": " নান",
1684
+ " নান|া": " নানা",
1685
+ " আ|পন": " আপন",
1686
+ "চ|িত": "চিত",
1687
+ "চিত|্র": "চিত্র"
1688
+ },
1689
+ "vocab_size": 5000,
1690
+ "special_tokens": {
1691
+ "<PAD>": 0,
1692
+ "<UNK>": 1,
1693
+ "<BOS>": 2,
1694
+ "<EOS>": 3
1695
+ }
1696
+ }
bengali_bpe_tokenizer.py ADDED
@@ -0,0 +1,183 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import re
2
+ import json
3
+ from collections import defaultdict, Counter
4
+ from typing import List, Dict, Tuple, Set
5
+
6
+ class BengaliBPETokenizer:
7
+ def __init__(self, vocab_size: int = 5000):
8
+ self.vocab_size = vocab_size
9
+ self.vocab = {}
10
+ self.merges = {}
11
+ self.special_tokens = {
12
+ '<PAD>': 0,
13
+ '<UNK>': 1,
14
+ '<BOS>': 2,
15
+ '<EOS>': 3
16
+ }
17
+
18
+ # Initialize basic Bengali character vocabulary
19
+ self.base_vocab = set()
20
+ self.bengali_letter_start_unicode = 0x0980
21
+ self.bengali_letter_end_unicode = 0x09FF
22
+ self._initialize_base_vocab()
23
+
24
+
25
+ def _initialize_base_vocab(self):
26
+ """Initialize vocabulary with basic Bengali characters"""
27
+
28
+
29
+ for i in range(self.bengali_letter_start_unicode, self.bengali_letter_end_unicode + 1):
30
+ self.base_vocab.add(chr(i))
31
+
32
+ self.base_vocab.update([
33
+ ' ', '\n', '\t' # Whitespace characters
34
+ ])
35
+
36
+ def _get_stats(self, words: List[List[str]]) -> Dict[Tuple[str, str], int]:
37
+ """Count frequency of adjacent pairs in the vocabulary"""
38
+ pairs = defaultdict(int)
39
+ for word in words:
40
+ for i in range(len(word) - 1):
41
+ pairs[tuple(word[i:i + 2])] += 1
42
+ return pairs
43
+
44
+ def _merge_vocab(self, words: List[List[str]], pair: Tuple[str, str]) -> List[List[str]]:
45
+ """Merge all occurrences of the most frequent pair"""
46
+ first, second = pair
47
+ new_words = []
48
+
49
+ for word in words:
50
+ i = 0
51
+ new_word = []
52
+ while i < len(word):
53
+ if i < len(word) - 1 and word[i] == first and word[i + 1] == second:
54
+ new_word.append(first + second)
55
+ i += 2
56
+ else:
57
+ new_word.append(word[i])
58
+ i += 1
59
+ new_words.append(new_word)
60
+
61
+ return new_words
62
+
63
+ def train(self, texts: List[str], min_freq: int = 2) -> None:
64
+ """Train BPE model on texts"""
65
+
66
+ # Regular expression for extracting Bengali words
67
+ bengali_word_pattern = re.compile(r""" ?[\u0980-\u09FF]+| ?[^\s]+|\s+(?!\S)|\s+""")
68
+
69
+ # Split texts into characters
70
+ words = []
71
+ for text in texts:
72
+ # Extract words based on the Bengali pattern
73
+ extracted_words = bengali_word_pattern.findall(text)
74
+ #print("extracted words:", extracted_words)
75
+ for word in extracted_words:
76
+ chars = list(word)
77
+ # Filter valid Bengali characters
78
+ valid_chars = [c for c in chars if c in self.base_vocab or c.isspace()]
79
+ if valid_chars:
80
+ words.append(valid_chars)
81
+
82
+ #print("words:", words)
83
+
84
+ vocab = self.base_vocab.copy()
85
+ num_merges = self.vocab_size - len(self.special_tokens) - len(vocab)
86
+ print("Maximum num_merges : ", num_merges)
87
+ # Perform BPE merges
88
+ for i in range(num_merges):
89
+ pairs = self._get_stats(words)
90
+ if i % 100 == 0:
91
+ print(f" After iteration: {i+1} number of pairs: {len(pairs)}")
92
+
93
+ if not pairs:
94
+ break
95
+
96
+ # Find most frequent pair
97
+ best_pair = max(pairs.items(), key=lambda x: x[1])
98
+ if best_pair[1] < min_freq:
99
+ break
100
+
101
+ pair = best_pair[0]
102
+ new_token = ''.join(pair)
103
+ vocab.add(new_token)
104
+ #print("merging ..", pair)
105
+ #print(len(vocab))
106
+ # Record the merge operation
107
+ self.merges[pair] = new_token
108
+
109
+ # Merge the pair in all words
110
+ words = self._merge_vocab(words, pair)
111
+
112
+ # Build final vocabulary
113
+ self.vocab = {**self.special_tokens}
114
+ idx = len(self.special_tokens)
115
+ for token in sorted(vocab):
116
+ self.vocab[token] = idx
117
+ idx += 1
118
+
119
+ self.inverse_vocab = {v: k for k, v in self.vocab.items()}
120
+
121
+ def encode(self, text: str) -> List[int]:
122
+ """Encode text using learned BPE merges"""
123
+
124
+ bengali_word_pattern = re.compile(r""" ?[\u0980-\u09FF]+| ?[^\s]+|\s+(?!\S)|\s+""")
125
+ extracted_words = bengali_word_pattern.findall(text)
126
+
127
+ words = [list(word) for word in extracted_words]
128
+
129
+ # Apply merges in order
130
+ for pair, merged in self.merges.items():
131
+ words = self._merge_vocab(words, pair)
132
+
133
+ # Convert to token IDs
134
+ result = []
135
+ for word in words:
136
+ for token in word:
137
+ if token in self.vocab:
138
+ result.append(self.vocab[token])
139
+ else:
140
+ result.append(self.special_tokens['<UNK>'])
141
+
142
+ return result
143
+
144
+ def decode(self, ids: List[int]) -> str:
145
+ """Decode token IDs back to text"""
146
+ return ''.join(self.inverse_vocab.get(id, '<UNK>') for id in ids)
147
+
148
+ def calculate_compression_ratio(self, text: str) -> float:
149
+ """Calculate compression ratio"""
150
+ encoded = self.encode(text)
151
+ return len(text) / len(encoded)
152
+
153
+ def save(self, path: str) -> None:
154
+ """Save tokenizer state"""
155
+ # Convert tuple keys to strings for JSON serialization
156
+ serializable_merges = {f"{first}|{second}": merged
157
+ for (first, second), merged in self.merges.items()}
158
+
159
+ data = {
160
+ 'vocab': self.vocab,
161
+ 'merges': serializable_merges,
162
+ 'vocab_size': self.vocab_size,
163
+ 'special_tokens': self.special_tokens
164
+ }
165
+ with open(path, 'w', encoding='utf-8') as f:
166
+ json.dump(data, f, ensure_ascii=False, indent=2)
167
+
168
+ @classmethod
169
+ def load(cls, path: str) -> 'BengaliBPETokenizer':
170
+ """Load tokenizer from file"""
171
+ with open(path, 'r', encoding='utf-8') as f:
172
+ data = json.load(f)
173
+
174
+ tokenizer = cls(vocab_size=data['vocab_size'])
175
+ tokenizer.vocab = data['vocab']
176
+
177
+ # Convert string keys back to tuples
178
+ tokenizer.merges = {tuple(k.split('|')): v
179
+ for k, v in data['merges'].items()}
180
+
181
+ tokenizer.special_tokens = data['special_tokens']
182
+ tokenizer.inverse_vocab = {v: k for k, v in tokenizer.vocab.items()}
183
+ return tokenizer