svanhvit commited on
Commit
ee970b2
1 Parent(s): 5a692ce

highlighting adjusted, still needs to restore paragraphs

Browse files
Files changed (1) hide show
  1. app.py +55 -14
app.py CHANGED
@@ -3,32 +3,73 @@
3
  import gradio as gr
4
  from transformers import pipeline
5
  import tokenizer
6
-
7
 
8
  title = "Textaleiðrétting fyrir íslensku"
9
- description = "Hér má leiðrétta ýmsar málfars- og stafsetningarvillur í íslenskum textum, með hjálp tauganets. Netið reynir að „þýða“ úr texta með villum yfir í villulausan, og er þjálfað ofan á byT5-líkanið frá Google með bæði gervivillugögnum og raunverulegum villum. \n\nBest er að setja stutta textabúta inn í einu. Þetta er prufuútgáfa sem hefur ekki lært að leiðrétta allar mögulegar villur, og er í stöðugri þróun."
 
10
  translator = pipeline("translation", model="mideind/yfirlestur-icelandic-correction-byt5", max_length=512)
11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  def split_text(text):
13
  sentence_list = [i for i in tokenizer.split_into_sentences(text, original=True)]
14
  return sentence_list
15
 
16
  def predict(text):
17
- text = text.replace("\n", " ")
18
  translated = ""
19
- # check for way too long inputs
20
- for i in split_text(text):
21
- # doesn't keep original string formatting, instead adds a space btw sentences
22
- translated += translator(i.strip())[0]["translation_text"] + " "
23
- return translated
24
-
25
- iface = gr.Interface(
26
- fn=predict,
 
 
 
 
 
 
 
 
27
  inputs='text',
28
- outputs='text',
 
 
 
 
 
 
29
  title=title,
30
  description=description,
31
- examples=[["Kvitu fiðrildinn fljua firir utan gluggan."], ["Ég held þetta er ekki góður tími fara heimsókn."], ["Mer hlakar til jólana"], ["Kver a þenan bússtað ja eða nei"]]
32
  )
33
- iface.launch()
34
 
 
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 gervigögnum og 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
  translator = pipeline("translation", model="mideind/yfirlestur-icelandic-correction-byt5", max_length=512)
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
+ def markup_diff(a, b,
22
+ mark=mark_span,
23
+ isjunk=None):
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": "eytt út", "replace": "skipt út", "insert": "bætt inn"}
30
+
31
+ for tag, a0, a1, b0, b1 in seqmatcher.get_opcodes():
32
+ token = b[b0:b1]
33
+ if tag == "delete":
34
+ out_sentence_tokens += mark(" ", tags[tag])
35
+ print(token)
36
+ out_sentence_tokens += mark(b[b0:b1], tags[tag])
37
+ return out_sentence_tokens
38
+
39
  def split_text(text):
40
  sentence_list = [i for i in tokenizer.split_into_sentences(text, original=True)]
41
  return sentence_list
42
 
43
  def predict(text):
44
+ texts = text.split("\n")
45
  translated = ""
46
+ original = ""
47
+ # TODO: check for way too long inputs
48
+ # TODO: if a sentence after splitting is over 512 bytes = split? error?
49
+ for text in texts:
50
+ for i in split_text(text):
51
+ original += i
52
+ translated += translator(i)[0]["translation_text"]
53
+ original += "\n"
54
+ translated += "\n"
55
+ print(original)
56
+ print(translated)
57
+ return markup_diff(original.split(" "), translated.split(" "))
58
+
59
+
60
+ demo = gr.Interface(
61
+ fn=predict,
62
  inputs='text',
63
+ outputs= gr.HighlightedText(
64
+ show_label=False,
65
+ show_legend=True,
66
+ combine_adjacent=True,
67
+ adjacent_separator=" ",
68
+ ).style(
69
+ color_map={"skipt út": "blue", "bætt inn": "green", "eytt út": "purple"}),
70
  title=title,
71
  description=description,
72
+ examples=[["Kvitu fiðrildinn fljua firir utan gluggan."], ["Ég held þetta er ekki góður tími fara heimsókn."], ["Mer hlakar til jólana"], ["Kver a þenan bússtað ja eða nei"]],
73
  )
74
+ demo.launch()
75