AriNubar commited on
Commit
23c1bff
·
1 Parent(s): 8f9ec55

fix flagging

Browse files
Files changed (1) hide show
  1. app.py +60 -8
app.py CHANGED
@@ -1,12 +1,25 @@
1
- # coding: utf-8
2
 
3
  import gradio as gr
4
  import os
5
-
 
 
 
6
  from translation import Translator, LANGUAGES
 
 
 
7
  LANGUAGES_LIST = list(LANGUAGES.keys())
8
  HF_TOKEN = os.environ.get('HF_TOKEN')
9
 
 
 
 
 
 
 
 
10
  def translate_wrapper(text, src_lang, tgt_lang, by_sentence=True, clean=True, num_beams=4):
11
  if src_lang in ["", None, []] or tgt_lang in ["", None, []]:
12
  return "Ընտրեցէք թարգմանութեան կողմերը | Please select source and target languages"
@@ -21,7 +34,46 @@ def translate_wrapper(text, src_lang, tgt_lang, by_sentence=True, clean=True, nu
21
  return result
22
 
23
 
24
- hf_writer = gr.HuggingFaceDatasetSaver(HF_TOKEN, "AriNubar/hyw-en-crowd-source")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
 
27
  theme = gr.themes.Default().set(
@@ -35,7 +87,7 @@ with gr.Blocks(title="Արեւմտահայերէն-Անգլերէն Մեքենա
35
  """
36
  # Արեւմտահայերէն-Անգլերէն Մեքենական Թարգմանիչ | Western Armenian-English Machine Translation
37
 
38
- Հոս կը ցուցադրուի առաջին արեւմտահայերէն-անգլերէն մեքենական թարգմանիչը, որ կարուցուած է Մեթայի (Ֆեյսպուքի) 'No Language Left Behind' տիպարի հիման վրայ։ Թարգմանութեան տիպարը կ'աշխատի CPU-ի մը մէջ, ուրեմն նախադասութեան մը թարգմանութիւնը կրնայ տեւել մօտաւորապէս 40-60 երկվայրկեան։ Ձեր գնահատութիւնները եւ քննադատութիւնները շատ կարեւոր են տիպարի թարգմանութեան որակը բարելաւելու համար։ Շնորհակալութիւն Գալուստ Կիւլպէնկեան Հիմնադրամին, որուն աջակցութեամբ այս նախագիծը իրականացուեցաւ։
39
 
40
  This is the demo of the first Western Armenian-English neural machine translation system which is based on Meta's 'No Language Left Behind' model. The model runs on a CPU, so it might take approximately 40-60 seconds to translate a single sentence. Your feedback and comments are very important for us to improve the quality of the translation. Thanks to the Calouste Gulbenkian Foundation for making this project possible with their support.
41
  """
@@ -69,11 +121,11 @@ with gr.Blocks(title="Արեւմտահայերէն-Անգլերէն Մեքենա
69
 
70
  translate_btn.click(translate_wrapper, inputs=[text, src_lang, tgt_lang, by_sentence, clean, num_beams], outputs=translated)
71
 
72
- hf_writer.setup([src_lang, tgt_lang, text, translated, by_sentence, clean, num_beams, flag_bad_btn], "flagged_data_points")
73
 
74
- flag_good_btn.click(lambda *args: hf_writer.flag(args), [src_lang, tgt_lang, text, translated, by_sentence, clean, num_beams, flag_good_btn], None, preprocess=False)
75
- flag_average_btn.click(lambda *args: hf_writer.flag(args), [src_lang, tgt_lang, text, translated, by_sentence, clean, num_beams, flag_average_btn], None, preprocess=False)
76
- flag_bad_btn.click(lambda *args: hf_writer.flag(args), [src_lang, tgt_lang, text, translated, by_sentence, clean, num_beams, flag_bad_btn], None, preprocess=False)
77
 
78
 
79
 
 
1
+ # coding: utf-8
2
 
3
  import gradio as gr
4
  import os
5
+ import json
6
+ from pathlib import Path
7
+ from datetime import datetime
8
+ from huggingface_hub import CommitScheduler
9
  from translation import Translator, LANGUAGES
10
+
11
+
12
+
13
  LANGUAGES_LIST = list(LANGUAGES.keys())
14
  HF_TOKEN = os.environ.get('HF_TOKEN')
15
 
16
+ JSON_DATASET_DIR = Path("flagged_data")
17
+ JSON_DATASET_DIR.mkdir(exist_ok=True, parents=True)
18
+ JSON_DATASET_PATH = JSON_DATASET_DIR / "dataset.json"
19
+
20
+
21
+
22
+
23
  def translate_wrapper(text, src_lang, tgt_lang, by_sentence=True, clean=True, num_beams=4):
24
  if src_lang in ["", None, []] or tgt_lang in ["", None, []]:
25
  return "Ընտրեցէք թարգմանութեան կողմերը | Please select source and target languages"
 
34
  return result
35
 
36
 
37
+ # hf_writer = gr.HuggingFaceDatasetSaver(HF_TOKEN, "AriNubar/hyw-en-crowd-source")
38
+
39
+ scheduler = CommitScheduler(
40
+ repo_id="AriNubar/hyw-en-crowd-source",
41
+ repo_type="dataset",
42
+ folder_path=JSON_DATASET_DIR,
43
+ path_in_repo="collected_data",
44
+ token=HF_TOKEN,
45
+ every=1 # every 1 minute
46
+ )
47
+
48
+ TQS = {
49
+ "😊 Լաւ | Good": "good",
50
+ "😐 Միջակ | Average": "average",
51
+ "☹️ Վատ | Bad": "bad"
52
+ }
53
+
54
+ def save_json(src_lang, tgt_lang, input_text, output_text, by_sentence, clean, num_beams, translation_quality):
55
+ if any([src_lang in ["", None, []], tgt_lang in ["", None, []], input_text in ["", None, []], output_text in ["", None, []]]):
56
+ return
57
+ src_lang = LANGUAGES.get(src_lang)
58
+ tgt_lang = LANGUAGES.get(tgt_lang)
59
+ translation_quality = TQS.get(translation_quality)
60
+ # print(src_lang, tgt_lang, input_text, output_text, by_sentence, clean, num_beams, translation_quality)
61
+ # print(type(src_lang), type(tgt_lang), type(input_text), type(output_text), type(by_sentence), type(clean), type(num_beams), type(translation_quality))
62
+ data = {
63
+ "src_lang": src_lang,
64
+ "tgt_lang": tgt_lang,
65
+ "original": input_text,
66
+ "translation": output_text,
67
+ "by_sentence": by_sentence,
68
+ "clean": clean,
69
+ "num_beams": num_beams,
70
+ "translation_quality": translation_quality,
71
+ "timestamp": datetime.now().isoformat()
72
+ }
73
+ with scheduler.lock:
74
+ with open(JSON_DATASET_PATH, "a", encoding="utf8") as f:
75
+ f.write(json.dumps(data, ensure_ascii=False) + "\n")
76
+
77
 
78
 
79
  theme = gr.themes.Default().set(
 
87
  """
88
  # Արեւմտահայերէն-Անգլերէն Մեքենական Թարգմանիչ | Western Armenian-English Machine Translation
89
 
90
+ Հոս կը ցուցադրուի առաջին արեւմտահայերէն-անգլերէն մեքենական թարգմանիչը, որ կարուցուած է Մեթայի (Ֆեյսպուքի) 'No Language Left Behind' տիպարի հիման վրայ։ Թարգմանութեան տիպարը կ'աշխատի CPU-ի մը մէջ, ուրեմն նախադասութեան մը թարգմանութիւնը կրնայ տեւել մօտաւորապէս 40-60 երկվայրկեան։ Ձեր գնահատութիւնները եւ քննադատութիւնները շատ կարեւոր են տիպարի թարգմանութեան որակը բարելաւելու համար։ Շնորհակալութիւն Գալուստ Կիւլպէնկեան Հիմնարկին, որուն աջակցութեամբ այս նախագիծը իրականացուեցաւ։
91
 
92
  This is the demo of the first Western Armenian-English neural machine translation system which is based on Meta's 'No Language Left Behind' model. The model runs on a CPU, so it might take approximately 40-60 seconds to translate a single sentence. Your feedback and comments are very important for us to improve the quality of the translation. Thanks to the Calouste Gulbenkian Foundation for making this project possible with their support.
93
  """
 
121
 
122
  translate_btn.click(translate_wrapper, inputs=[text, src_lang, tgt_lang, by_sentence, clean, num_beams], outputs=translated)
123
 
124
+ # hf_writer.setup([src_lang, tgt_lang, text, translated, by_sentence, clean, num_beams, flag_bad_btn], "flagged_data_points")
125
 
126
+ flag_good_btn.click(save_json, inputs=[src_lang, tgt_lang, text, translated, by_sentence, clean, num_beams, flag_good_btn], outputs=None)
127
+ flag_average_btn.click(save_json, inputs=[src_lang, tgt_lang, text, translated, by_sentence, clean, num_beams, flag_average_btn], outputs=None)
128
+ flag_bad_btn.click(save_json, inputs=[src_lang, tgt_lang, text, translated, by_sentence, clean, num_beams, flag_bad_btn], outputs=None)
129
 
130
 
131