Spaces:
Runtime error
Runtime error
UI changes
Browse files
app.py
CHANGED
@@ -1,48 +1,52 @@
|
|
1 |
-
|
2 |
-
|
3 |
import gradio as gr
|
4 |
from transformers import pipeline
|
5 |
import tokenizer
|
6 |
from difflib import Differ, SequenceMatcher
|
7 |
|
8 |
-
title = "Textaleiðrétting fyrir íslensku"
|
9 |
-
description = "Hér má leiðrétta íslenskan texta með hjálp tauganets. Netið reynir að „þýða“ yfir í texta sem er í samræmi við málstaðal, og er þjálfað á bæði tilbúnum gögnum og textum úr villumálheildum sem safnað var hjá Háskóla Íslands. \n\nBest er að setja ekki inn meira en nokkrar setningar í einu, því annars getur biðin orðið löng. Þetta er prufuútgáfa sem hefur ekki lært að leiðrétta öll þau atriði sem upp geta komið í texta og er í stöðugri þróun. \nÞetta verkefni er unnið hjá Miðeind sem hluti af máltækniáætlun stjórnvalda."
|
10 |
|
11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
13 |
def mark_text(text, tag):
|
14 |
"""Helper for the diff method, returns a tuple with the text and the tag"""
|
15 |
return (text, tag)
|
16 |
-
|
|
|
17 |
def mark_span(text, tag):
|
18 |
"""Helper for the diff method, returns the span as a list of (text, tag) tuples"""
|
19 |
return [mark_text(token, tag) for token in text]
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
"""Obtains the diff for the sentence along with the opcodes (tags). Returns the corrected sentence tokens along with their correction tag (in Icelandic)
|
25 |
-
"""
|
26 |
seqmatcher = SequenceMatcher(isjunk=isjunk, a=a, b=b, autojunk=False)
|
27 |
out_sentence_tokens = []
|
28 |
-
# renaming tags
|
29 |
-
tags = {"equal": None, "delete": "
|
30 |
-
|
31 |
for tag, a0, a1, b0, b1 in seqmatcher.get_opcodes():
|
32 |
if tag == "delete":
|
33 |
out_sentence_tokens += mark(" ", tags[tag])
|
34 |
out_sentence_tokens += mark(b[b0:b1], tags[tag])
|
35 |
return out_sentence_tokens
|
36 |
|
|
|
37 |
def split_text(text):
|
38 |
sentence_list = [i for i in tokenizer.split_into_sentences(text, original=True)]
|
39 |
return sentence_list
|
40 |
|
|
|
41 |
def predict(text):
|
42 |
texts = text.split("\n")
|
43 |
translated = ""
|
44 |
original = ""
|
45 |
-
# TODO: check for way too long inputs
|
46 |
# TODO: if a sentence after splitting is over 512 bytes = split? error?
|
47 |
for text in texts:
|
48 |
# one or more sentences in each paragraph
|
@@ -56,17 +60,25 @@ def predict(text):
|
|
56 |
|
57 |
demo = gr.Interface(
|
58 |
fn=predict,
|
59 |
-
inputs=
|
60 |
-
outputs=
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
|
|
|
|
67 |
title=title,
|
68 |
description=description,
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
)
|
71 |
demo.launch()
|
72 |
-
|
|
|
|
|
|
|
1 |
import gradio as gr
|
2 |
from transformers import pipeline
|
3 |
import tokenizer
|
4 |
from difflib import Differ, SequenceMatcher
|
5 |
|
|
|
|
|
6 |
|
7 |
+
title = "<center><img src='https://huggingface.co/spaces/mideind/README/resolve/main/logo-mideind.png' width='250'></center>Sjálfvirk textaleiðrétting"
|
8 |
+
description = "Hér má leiðrétta íslenskan texta með hjálp tauganets. Netið reynir að „þýða“ textann yfir í læsilegra mál."
|
9 |
+
article = "<h3>Leiðbeiningar</h3>Hægt er að setja inn eina eða fleiri málsgreinar, en bíða þarf lengur eftir leiðréttingu ef textinn er langur. Ekki er gert ráð fyrir stökum málsgreinum sem eru lengri en u.þ.b. 500 stafir. \n\nÞetta er prufuútgáfa sem hefur ekki lært að leiðrétta öll þau atriði sem upp geta komið í texta og er í stöðugri þróun. \nVerkefnið er unnið hjá [Miðeind](https://mideind.is) sem hluti af máltækniáætlun stjórnvalda. Það er þjálfað á bæði tilbúnum gögnum og textum úr villumálheildum sem safnað var hjá Háskóla Íslands."
|
10 |
+
|
11 |
+
translator = pipeline(
|
12 |
+
"translation", model="mideind/yfirlestur-icelandic-correction-byt5", max_length=512
|
13 |
+
)
|
14 |
+
|
15 |
|
16 |
def mark_text(text, tag):
|
17 |
"""Helper for the diff method, returns a tuple with the text and the tag"""
|
18 |
return (text, tag)
|
19 |
+
|
20 |
+
|
21 |
def mark_span(text, tag):
|
22 |
"""Helper for the diff method, returns the span as a list of (text, tag) tuples"""
|
23 |
return [mark_text(token, tag) for token in text]
|
24 |
+
|
25 |
+
|
26 |
+
def markup_diff(a, b, mark=mark_span, isjunk=None):
|
27 |
+
"""Obtains the diff for the sentence along with the opcodes (tags). Returns the corrected sentence tokens along with their correction tag (in Icelandic)"""
|
|
|
|
|
28 |
seqmatcher = SequenceMatcher(isjunk=isjunk, a=a, b=b, autojunk=False)
|
29 |
out_sentence_tokens = []
|
30 |
+
# renaming tags
|
31 |
+
tags = {"equal": None, "delete": "breytt", "replace": "breytt", "insert": "breytt"}
|
32 |
+
|
33 |
for tag, a0, a1, b0, b1 in seqmatcher.get_opcodes():
|
34 |
if tag == "delete":
|
35 |
out_sentence_tokens += mark(" ", tags[tag])
|
36 |
out_sentence_tokens += mark(b[b0:b1], tags[tag])
|
37 |
return out_sentence_tokens
|
38 |
|
39 |
+
|
40 |
def split_text(text):
|
41 |
sentence_list = [i for i in tokenizer.split_into_sentences(text, original=True)]
|
42 |
return sentence_list
|
43 |
|
44 |
+
|
45 |
def predict(text):
|
46 |
texts = text.split("\n")
|
47 |
translated = ""
|
48 |
original = ""
|
49 |
+
# TODO: check for way too long inputs
|
50 |
# TODO: if a sentence after splitting is over 512 bytes = split? error?
|
51 |
for text in texts:
|
52 |
# one or more sentences in each paragraph
|
|
|
60 |
|
61 |
demo = gr.Interface(
|
62 |
fn=predict,
|
63 |
+
inputs=gr.TextArea(label="Texti"),
|
64 |
+
outputs=[
|
65 |
+
gr.HighlightedText(
|
66 |
+
label="Leiðrétt",
|
67 |
+
show_label=False,
|
68 |
+
show_legend=True,
|
69 |
+
combine_adjacent=True,
|
70 |
+
adjacent_separator=" ",
|
71 |
+
).style(color_map={"breytt": "green"})
|
72 |
+
],
|
73 |
title=title,
|
74 |
description=description,
|
75 |
+
article=article,
|
76 |
+
examples=[
|
77 |
+
["Kvitu fiðrildinn fljua firir utan gluggan."],
|
78 |
+
["Ég held þetta er ekki góður tími fara heimsókn."],
|
79 |
+
["Mer hlakar til jólana"],
|
80 |
+
["Kver a þenan bússtað ja eða nei"],
|
81 |
+
["Módernisma gætir í íslenkum prósaverkum fljótlega eftir Fyrri heimstyrjöld"],
|
82 |
+
],
|
83 |
)
|
84 |
demo.launch()
|
|