Spaces:
Running
Running
Updated interface
Browse files- README.md +2 -2
- app.py +31 -27
- modules/m_apvoice.py +9 -4
- modules/m_connector.py +13 -25
README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
---
|
2 |
-
title: Passive Voice
|
3 |
-
emoji:
|
4 |
colorFrom: red
|
5 |
colorTo: green
|
6 |
sdk: gradio
|
|
|
1 |
---
|
2 |
+
title: Active to Passive Voice
|
3 |
+
emoji: 💤 🎤
|
4 |
colorFrom: red
|
5 |
colorTo: green
|
6 |
sdk: gradio
|
app.py
CHANGED
@@ -5,41 +5,45 @@ iface = gr.Blocks(css="container {max-width: 78%; margin: auto;}")
|
|
5 |
conn = Connector()
|
6 |
|
7 |
with iface:
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
|
|
|
|
22 |
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
|
|
|
|
34 |
|
35 |
btn_act2pas.click(
|
36 |
fn = conn.active2passive,
|
37 |
inputs = in_sentence,
|
38 |
-
outputs =
|
39 |
)
|
40 |
|
41 |
iface.launch(
|
42 |
# server_port= 9090,
|
43 |
-
|
44 |
# share = True
|
45 |
)
|
|
|
5 |
conn = Connector()
|
6 |
|
7 |
with iface:
|
8 |
+
gr.Markdown("<center><h5>Active to Passive Voice</h5></center>")
|
9 |
+
with gr.Row():
|
10 |
+
with gr.Column(scale=2):
|
11 |
+
in_sentence = gr.Textbox(
|
12 |
+
label = "Active sentence",
|
13 |
+
max_lines=2,
|
14 |
+
lines=1,
|
15 |
+
placeholder = "Enter here the sentence without contractions...",
|
16 |
+
)
|
17 |
+
btn_act2pas = gr.Button(
|
18 |
+
value = "Pass to passive!"
|
19 |
+
)
|
20 |
+
out = gr.HTML(
|
21 |
+
label = "Out. Pasive sentences:",
|
22 |
+
elem_id=".btn-group"
|
23 |
+
)
|
24 |
|
25 |
+
with gr.Column(variant='panel'):
|
26 |
+
gr.Examples(
|
27 |
+
inputs = in_sentence,
|
28 |
+
examples = [
|
29 |
+
"The teacher corrected the exams in less than an hour",
|
30 |
+
"Christopher Columbus discovered America in 1492",
|
31 |
+
"Mchael Jackson sings Billy Jean",
|
32 |
+
"They are painting the house" ,
|
33 |
+
"My mom has prepared the dinner",
|
34 |
+
"The man has not found the farm"
|
35 |
+
],
|
36 |
+
examples_per_page=5
|
37 |
+
)
|
38 |
|
39 |
btn_act2pas.click(
|
40 |
fn = conn.active2passive,
|
41 |
inputs = in_sentence,
|
42 |
+
outputs = out
|
43 |
)
|
44 |
|
45 |
iface.launch(
|
46 |
# server_port= 9090,
|
47 |
+
server_name = "0.0.0.0",
|
48 |
# share = True
|
49 |
)
|
modules/m_apvoice.py
CHANGED
@@ -3,7 +3,7 @@ import subprocess
|
|
3 |
import spacy
|
4 |
import pyinflect
|
5 |
from difflib import ndiff
|
6 |
-
from typing import List, Union, Tuple
|
7 |
|
8 |
# BES auxiliary “be” Let it **be**.
|
9 |
# HVS forms of “have” I**’ve** seen the Queen
|
@@ -192,7 +192,7 @@ class APVoice:
|
|
192 |
self,
|
193 |
active_sentence: str,
|
194 |
debug: bool=False
|
195 |
-
) ->
|
196 |
|
197 |
active_sentence = active_sentence.strip()
|
198 |
if active_sentence == "":
|
@@ -249,5 +249,10 @@ class APVoice:
|
|
249 |
word = self.subjp2objp(word)
|
250 |
p_agent += word + " "
|
251 |
|
252 |
-
|
253 |
-
|
|
|
|
|
|
|
|
|
|
|
|
3 |
import spacy
|
4 |
import pyinflect
|
5 |
from difflib import ndiff
|
6 |
+
from typing import List, Union, Tuple, Dict
|
7 |
|
8 |
# BES auxiliary “be” Let it **be**.
|
9 |
# HVS forms of “have” I**’ve** seen the Queen
|
|
|
192 |
self,
|
193 |
active_sentence: str,
|
194 |
debug: bool=False
|
195 |
+
) -> Dict[str, str]:
|
196 |
|
197 |
active_sentence = active_sentence.strip()
|
198 |
if active_sentence == "":
|
|
|
249 |
word = self.subjp2objp(word)
|
250 |
p_agent += word + " "
|
251 |
|
252 |
+
return {
|
253 |
+
'subject': p_subj.capitalize(),
|
254 |
+
'tobe':p_tobe,
|
255 |
+
'participle': p_verb,
|
256 |
+
'agent': p_agent[0].lower() + p_agent[1:].strip(),
|
257 |
+
'complement':complement
|
258 |
+
}
|
modules/m_connector.py
CHANGED
@@ -8,21 +8,11 @@ class Connector:
|
|
8 |
|
9 |
self.apvoice = APVoice()
|
10 |
|
11 |
-
# <center>{}</center>
|
12 |
self.__out_template = """
|
13 |
-
<html lang="en">
|
14 |
-
<head>
|
15 |
-
<meta charset="utf-8">
|
16 |
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
17 |
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
|
18 |
-
|
19 |
-
<body>
|
20 |
-
<center><div class="btn-group btn-group-sm" role="group">{}</div></center>
|
21 |
-
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
|
22 |
-
</body>
|
23 |
-
</html>
|
24 |
"""
|
25 |
-
self.__error_template = "<center><b>{}</b></center>"
|
26 |
|
27 |
def create_category(
|
28 |
self,
|
@@ -44,21 +34,19 @@ class Connector:
|
|
44 |
sentence: str
|
45 |
) -> Tuple[str,str]:
|
46 |
|
47 |
-
out
|
48 |
try:
|
49 |
-
|
50 |
-
|
|
|
|
|
|
|
|
|
|
|
51 |
"""
|
52 |
-
|
53 |
-
{self.create_category(subject, 'subject','primary')}
|
54 |
-
{self.create_category(tobe,'to be','warning')}
|
55 |
-
{self.create_category(participle,'participle','danger')}
|
56 |
-
{self.create_category(agent,'agent','info')}
|
57 |
-
{self.create_category(complement,'compl.','dark')}
|
58 |
-
"""
|
59 |
-
out = self.__out_template.format(passive_sentece)
|
60 |
|
61 |
except Exception as e:
|
62 |
-
|
63 |
|
64 |
-
return
|
|
|
8 |
|
9 |
self.apvoice = APVoice()
|
10 |
|
|
|
11 |
self.__out_template = """
|
|
|
|
|
|
|
|
|
12 |
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
|
13 |
+
<center>{}</center>
|
|
|
|
|
|
|
|
|
|
|
14 |
"""
|
15 |
+
self.__error_template = "<center><h3><b>{}</b></h3></center>"
|
16 |
|
17 |
def create_category(
|
18 |
self,
|
|
|
34 |
sentence: str
|
35 |
) -> Tuple[str,str]:
|
36 |
|
37 |
+
out = ""
|
38 |
try:
|
39 |
+
out = self.apvoice.active2passive(sentence)
|
40 |
+
out = f"""
|
41 |
+
{self.create_category(out['subject'], 'subject','primary')}
|
42 |
+
{self.create_category(out['tobe'],'to be','warning')}
|
43 |
+
{self.create_category(out['participle'],'participle','danger')}
|
44 |
+
{self.create_category(out['agent'],'agent','info')}
|
45 |
+
{self.create_category(out['complement'],'compl.','dark')}
|
46 |
"""
|
47 |
+
out = self.__out_template.format(out)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
|
49 |
except Exception as e:
|
50 |
+
out = self.__error_template.format(str(e))
|
51 |
|
52 |
+
return out
|