huseinzol05 commited on
Commit
eff55e5
1 Parent(s): 41ba755

use ctranslate2

Browse files
Files changed (3) hide show
  1. .gitignore +1 -0
  2. app.py +52 -7
  3. requirements.txt +2 -1
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ t5-small-ct2
app.py CHANGED
@@ -4,8 +4,11 @@ os.environ['CUDA_VISIBLE_DEVICES'] = ''
4
  os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'
5
 
6
  import malaya
 
 
7
  import gradio as gr
8
  import logging
 
9
 
10
  logging.basicConfig(level=logging.INFO)
11
 
@@ -13,21 +16,63 @@ TO_LANG = {
13
  'Malay': 'ms',
14
  'English': 'en',
15
  }
 
16
  TO_LANG_KEYS = list(TO_LANG.keys())
17
 
18
  model = None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
 
21
  def translate(text, to_lang):
22
  global model
23
  to_lang = TO_LANG[to_lang]
24
  if model is None:
25
- model = malaya.translation.huggingface()
26
- outputs = model.generate([text], to_lang=to_lang, max_length=1024)
27
- return outputs[0]
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
30
- s = """
 
 
 
 
31
  `Untuk menggunakan numpy, pertama, Anda perlu menginstalnya melalui pip. Anda dapat melakukannya dengan menjalankan perintah `pip install numpy` di terminal Anda.
32
  Setelah numpy terinstal, Anda dapat mengimpor modul numpy dengan menambahkan baris `import numpy as np` di awal program Anda.
33
  Berikut adalah contoh beberapa operasi dasar numpy:
@@ -66,13 +111,13 @@ demo = gr.Interface(
66
  ["Memanglah. Ini tak payah expert, aku pun tau. It's a gesture", 'Malay'],
67
  ["Memanglah. Ini tak payah expert, aku pun tau. It's a gesture", 'English'],
68
  ['Kita ora duwe wektu kanggo gelut utawa sengit.', 'Malay'],
69
- ["\n26 DR.27.10.2021 \n\n \nUSUL MENANGGUHKAN MESYUARAT \n\nDI BAWAH P.M. 18(1) \n \n\nPENJUALAN ASET GAS PETRONAS DI AZERBAIJAN \n\n \n\n11.33 pg. \n\nDato’ Seri Anwar bin Ibrahim [Port Dickson]: Tuan Yang di-Pertua, saya \nmohon mengemukakan usul di bawah Peraturan Mesyuarat 18(1) dan 18(2) Peraturan-\nperaturan Majlis Mesyuarat Dewan Rakyat seperti berikut: \n\n“Bahawa Dewan yang bersidang pada hari ini merundingkan \nlaporan bahawa Petronas telah menjual aset gas di Azerbaijan dengan \n", 'English'],
70
- [s, 'Malay']
71
 
72
  ],
73
  cache_examples=False,
74
  title='Malaysian NMT',
75
- description='This translation model able to translate malay, pasar malay (social media texts or local context), english, manglish, javanese, banjarese and indonesian to target language.\nFor the first time is slow due to warmup, but after that should be fast.'
76
  )
77
 
78
  demo.launch(server_name='0.0.0.0')
 
4
  os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'
5
 
6
  import malaya
7
+ import ctranslate2
8
+ from transformers import AutoTokenizer
9
  import gradio as gr
10
  import logging
11
+ import os
12
 
13
  logging.basicConfig(level=logging.INFO)
14
 
 
16
  'Malay': 'ms',
17
  'English': 'en',
18
  }
19
+
20
  TO_LANG_KEYS = list(TO_LANG.keys())
21
 
22
  model = None
23
+ map_lang = {
24
+ 'en': 'Inggeris',
25
+ 'jav': 'Jawa',
26
+ 'bjn': 'Banjarese',
27
+ 'ms': 'Melayu',
28
+ 'ind': 'Indonesia',
29
+ 'pasar ms': 'pasar Melayu',
30
+ 'manglish': 'Manglish',
31
+ }
32
+
33
+ converter = ctranslate2.converters.TransformersConverter(
34
+ 'mesolitica/translation-t5-small-standard-bahasa-cased')
35
+ try:
36
+ converter.convert('t5-small-ct2', quantization='int8')
37
+ except BaseException:
38
+ pass
39
+
40
+ tokenizer = AutoTokenizer.from_pretrained(
41
+ 'mesolitica/translation-t5-small-standard-bahasa-cased',
42
+ use_fast=False,
43
+ )
44
 
45
 
46
  def translate(text, to_lang):
47
  global model
48
  to_lang = TO_LANG[to_lang]
49
  if model is None:
50
+ translator = ctranslate2.Translator('t5-small-ct2')
 
 
51
 
52
+ prefix = f'terjemah ke {map_lang[to_lang]}: {text}'
53
+ input_tokens = tokenizer.convert_ids_to_tokens(tokenizer.encode(prefix))
54
+ outputs = translator.translate_batch(
55
+ [input_tokens],
56
+ max_input_length=6144,
57
+ max_decoding_length=6144,
58
+ disable_unk=True,
59
+ )
60
+ results = []
61
+ for o in outputs:
62
+ o = o.hypotheses[0]
63
+ o = tokenizer.convert_tokens_to_ids(o)
64
+ results.append(o)
65
+ results = tokenizer.batch_decode(
66
+ [[i for i in o if i not in [0, 1, 2]] for o in results],
67
+ spaces_between_special_tokens=False,
68
+ )
69
+ return results[0]
70
 
71
+
72
+ hansard = """
73
+ \n26 DR.27.10.2021 \n\n \nUSUL MENANGGUHKAN MESYUARAT \n\nDI BAWAH P.M. 18(1) \n \n\nPENJUALAN ASET GAS PETRONAS DI AZERBAIJAN \n\n \n\n11.33 pg. \n\nDato’ Seri Anwar bin Ibrahim [Port Dickson]: Tuan Yang di-Pertua, saya \nmohon mengemukakan usul di bawah Peraturan Mesyuarat 18(1) dan 18(2) Peraturan-\nperaturan Majlis Mesyuarat Dewan Rakyat seperti berikut: \n\n“Bahawa Dewan yang bersidang pada hari ini merundingkan \nlaporan bahawa Petronas telah menjual aset gas di Azerbaijan dengan \nharga hampir RM10 bilion berikutan desakan kerajaan menaikkan \nbayaran dividen Petronas sebanyak RM25 bilion kepada kerajaan bagi \ntahun 2021.” \n\n \nPerkara ini adalah perkara tertentu kerana penjualan aset gas di Azerbaijan \n\nbernilai RM10 bilion dan juga pembayaran dividen kepada kerajaan sebanyak RM25 bilion \nbagi tahun 2021 adalah berbahaya dan menjejaskan masa depan Petronas. Terkait \ndengan― sedikit penjelasan. Kerana tindakan seperti ini telah menyebabkan J.P. Morgan \nmengeluarkan Petronas dari ESG Emerging Market Bond Index dan ESG Asia Credit \nIndex. \n\nOleh itu, perkara itu perlu disegerakan kerana Petronas mengalami defisit \nberikutan pembayaran dividen berlebihan sejak tahun 2018 sehingga kini yang memaksa \nPetronas menjual aset atau meminjam lebih banyak dana luar negara bagi menampung \naliran tunai. \n\nIni diperkukuh dengan kenyataan Tengku Muhammad Taufik, CEO Petronas, “If \nthere is a policy shift but it comes too suddenly or too slowly, not only Petronas but the \nentire Malaysian economy could be put at risk, with regards to our energy mix.” \n\nIni perkara berkenaan dengan kepentingan orang ramai, malah seluruh ekonomi \nnegara, kerana Petronas adalah institusi penting ekonomi negara dan sewajarnya \ndiperkukuh kekuatannya dan tidak dilemahkan penarafan syarikat. Kemampuan untuk \nmelabur bagi menjana keuntungan masa depan yang mampu untuk membayar dividen \nyang munasabah kepada kerajaan demi kepentingan rakyat. Dengan tambahan RM7 \nbilion tahun ini, hasil Petronas akan berjumlah RM44.8 bilion atau 18 peratus daripada \npendapatan kerajaan bagi tahun 2021 daripada RM37.8 bilion sebelumnya. \n\nJadi, mohon persetujuan Tuan Yang di-Pertua untuk dibahaskan. [Tepuk] \n\nTuan Yang di-Pertua: Terima kasih Yang Berhormat. Sebenarnya Yang \nBerhormat perlu melengkapkan teks Yang Berhormat dan cuma dibaca teks tersebut \nmengikut peraturan. Akan tetapi, tak apa. \n\nAhli-ahli Yang Berhormat, saya telah menerima satu pemberitahu usul di bawah \nPeraturan Mesyuarat 18(1) oleh Yang Berhormat Port Dickson, Ketua Pembangkang pada \nhari Isnin, 25 Oktober 2021. Teks usul itu adalah seperti yang dibacakan tadi dengan \nsedikit tambahan oleh Ahli Yang Berhormat Port Dickson sebentar tadi. \n\nBagi membolehkan perkara ini ditimbangkan oleh Majlis Mesyuarat, saya \nhendaklah berpuas hati bahawa perkara yang dibangkitkan oleh Yang Berhormat itu \nmematuhi tiga syarat seperti mana biasalah iaitu: \n\n(i) perkara tertentu; \n\n(ii) bagi kepentingan orang ramai; dan \n\n(iii) berkehendak disegerakan. \n\n\n
74
+ """
75
+ code = """
76
  `Untuk menggunakan numpy, pertama, Anda perlu menginstalnya melalui pip. Anda dapat melakukannya dengan menjalankan perintah `pip install numpy` di terminal Anda.
77
  Setelah numpy terinstal, Anda dapat mengimpor modul numpy dengan menambahkan baris `import numpy as np` di awal program Anda.
78
  Berikut adalah contoh beberapa operasi dasar numpy:
 
111
  ["Memanglah. Ini tak payah expert, aku pun tau. It's a gesture", 'Malay'],
112
  ["Memanglah. Ini tak payah expert, aku pun tau. It's a gesture", 'English'],
113
  ['Kita ora duwe wektu kanggo gelut utawa sengit.', 'Malay'],
114
+ [hansard, 'English'],
115
+ [code, 'Malay']
116
 
117
  ],
118
  cache_examples=False,
119
  title='Malaysian NMT',
120
+ description='This translation model able to translate malay, pasar malay (social media texts or local context), english, manglish, javanese, banjarese and indonesian to target language.'
121
  )
122
 
123
  demo.launch(server_name='0.0.0.0')
requirements.txt CHANGED
@@ -1,3 +1,4 @@
1
  malaya @ git+https://github.com/huseinzol05/malaya@5.1
2
  torch
3
- malaya-boilerplate
 
 
1
  malaya @ git+https://github.com/huseinzol05/malaya@5.1
2
  torch
3
+ malaya-boilerplate
4
+ ctranslate2