mareloraby commited on
Commit
90a2a3f
1 Parent(s): 7af287c

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -0
app.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import BertTokenizer, EncoderDecoderModel
3
+
4
+ tokenizerM = BertTokenizer.from_pretrained("mareloraby/BERTShared-meter2poem-arV01")
5
+ bertSharedM = EncoderDecoderModel.from_pretrained("mareloraby/BERTShared-meter2poem-arV01")
6
+
7
+ def generate_response(text, k = 70, p = 0.9, nb = 4):
8
+ # meters = set(['الرمل','البسيط','الخفيف','الكامل','السريع','الطويل','المتقارب','الرجز','المجتث','المنسرح','الوافر','المقتضب','الهزج','المديد','المضارع'])
9
+ prompt = f"{text}"
10
+ encoded_prompt = tokenizerM.encode_plus(prompt, return_tensors = 'pt').to(device)
11
+ gneration = bertSharedM.generate(
12
+ input_ids = encoded_prompt.input_ids,
13
+ attention_mask = encoded_prompt.attention_mask,
14
+ do_sample = True,
15
+ top_k= k,
16
+ top_p = p,
17
+ num_beams= nb,
18
+ max_length =130,
19
+ repetition_penalty = 2.0,
20
+ no_repeat_ngram_size = 2,
21
+ early_stopping=True)
22
+
23
+ generated_text = tokenizerM.decode(gneration[0], skip_special_tokens=True)
24
+ bayts = generated_text.split("[SOB]")
25
+ while("BSEP" not in bayts[-1]):
26
+ bayts = bayts[:-1]
27
+ # if(len(bayts[-1]) < 2):
28
+ # bayts = bayts[:-1]
29
+ bayts = bayts[:-1]
30
+ temp_poem = ''
31
+ for b in range(len(bayts)):
32
+ temp_line = bayts[b].split('[BSEP]')
33
+ temp_poem = temp_poem + temp_line[1] + ' - ' + temp_line[0] +'\n'
34
+
35
+ return temp_poem
36
+
37
+
38
+
39
+ gr.Interface(fn=generate_response,
40
+ title = 'BERTShared - meter based generation',
41
+ # description ='''
42
+ # topics : ['حزينه','هجاء','عتاب','غزل','مدح','رومنسيه','دينية','وطنيه']
43
+ # ''',
44
+ inputs=[
45
+ gr.inputs.Radio(['الرمل','البسيط','الخفيف','الكامل','السريع','الطويل','المتقارب','الرجز','المجتث','المنسرح','الوافر','المقتضب','الهزج','المديد','المضارع'],label='Choose Meter'),
46
+ gr.inputs.Slider(10, 200, step=10,default = 70, label='Top-K'),
47
+ gr.inputs.Slider(0.10, 0.99, step=0.02, default = 0.90, label='Top-P'),
48
+ gr.inputs.Slider(1, 20, step=1, default = 4, label='Beams'),
49
+ ],
50
+ outputs="text").launch()