Spaces:
Running
Running
fix flagging
Browse files
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(
|
75 |
-
flag_average_btn.click(
|
76 |
-
flag_bad_btn.click(
|
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 |
|