Upload 21 files
Browse filesAdded portTokenizer running in vm.
- .gitattributes +2 -0
- portTokenizer/ADJ.tsv +0 -0
- portTokenizer/ADP.tsv +38 -0
- portTokenizer/ADV.tsv +0 -0
- portTokenizer/AUXI.tsv +435 -0
- portTokenizer/CCONJ.tsv +25 -0
- portTokenizer/DET.tsv +117 -0
- portTokenizer/INTJ.tsv +41 -0
- portTokenizer/LICENSE +21 -0
- portTokenizer/NOUN.tsv +0 -0
- portTokenizer/NUM.tsv +54 -0
- portTokenizer/PRON.tsv +180 -0
- portTokenizer/README.md +70 -0
- portTokenizer/SCONJ.tsv +14 -0
- portTokenizer/VERB.tsv +3 -0
- portTokenizer/WORDmaster.txt +3 -0
- portTokenizer/__pycache__/lexikon.cpython-37.pyc +0 -0
- portTokenizer/abbrev.txt +397 -0
- portTokenizer/lexikon.py +107 -0
- portTokenizer/portTok.py +745 -0
- portTokenizer/sents.conllu +0 -0
- portTokenizer/sents.txt +284 -0
.gitattributes
CHANGED
@@ -34,3 +34,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
udpipe2/Portparser_model/weights.data-00000-of-00001 filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
udpipe2/Portparser_model/weights.data-00000-of-00001 filter=lfs diff=lfs merge=lfs -text
|
37 |
+
portTokenizer/VERB.tsv filter=lfs diff=lfs merge=lfs -text
|
38 |
+
portTokenizer/WORDmaster.txt filter=lfs diff=lfs merge=lfs -text
|
portTokenizer/ADJ.tsv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
portTokenizer/ADP.tsv
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
a a _
|
2 |
+
afora afora _
|
3 |
+
ante ante _
|
4 |
+
após após _
|
5 |
+
até até _
|
6 |
+
com com _
|
7 |
+
como como _
|
8 |
+
conforme conforme _
|
9 |
+
consoante consoante _
|
10 |
+
contra contra _
|
11 |
+
dado dado _
|
12 |
+
de de _
|
13 |
+
desde desde _
|
14 |
+
devido devido _
|
15 |
+
durante durante _
|
16 |
+
em em _
|
17 |
+
entre entre _
|
18 |
+
exceto exceto _
|
19 |
+
fora fora _
|
20 |
+
malgrado malgrado _
|
21 |
+
mediante mediante _
|
22 |
+
menos menos _
|
23 |
+
para para _
|
24 |
+
perante perante _
|
25 |
+
por por _
|
26 |
+
pra para Abbr=Yes
|
27 |
+
pró pró _
|
28 |
+
que que _
|
29 |
+
salvo salvo _
|
30 |
+
segundo segundo _
|
31 |
+
sem sem _
|
32 |
+
senão senão _
|
33 |
+
sob sob _
|
34 |
+
sobre sobre _
|
35 |
+
versus versus _
|
36 |
+
via via _
|
37 |
+
visto visto _
|
38 |
+
vs versus Abbr=Yes
|
portTokenizer/ADV.tsv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
portTokenizer/AUXI.tsv
ADDED
@@ -0,0 +1,435 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
era ser Mood=Ind|Number=Sing|Person=1|Tense=Imp|VerbForm=Fin
|
2 |
+
era ser Mood=Ind|Number=Sing|Person=3|Tense=Imp|VerbForm=Fin
|
3 |
+
eram ser Mood=Ind|Number=Plur|Person=3|Tense=Imp|VerbForm=Fin
|
4 |
+
eras ser Mood=Ind|Number=Sing|Person=2|Tense=Imp|VerbForm=Fin
|
5 |
+
estada estar Gender=Fem|Number=Sing|VerbForm=Part
|
6 |
+
estadas estar Gender=Fem|Number=Plur|VerbForm=Part
|
7 |
+
estado estar Gender=Masc|Number=Sing|VerbForm=Part
|
8 |
+
estados estar Gender=Masc|Number=Plur|VerbForm=Part
|
9 |
+
estai estar Mood=Imp|Number=Plur|Person=2|VerbForm=Fin
|
10 |
+
estais estar Mood=Ind|Number=Plur|Person=2|Tense=Pres|VerbForm=Fin
|
11 |
+
estamos estar Mood=Ind|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
12 |
+
estando estar VerbForm=Ger
|
13 |
+
estar estar Number=Sing|Person=1|VerbForm=Inf
|
14 |
+
estar estar Number=Sing|Person=3|VerbForm=Inf
|
15 |
+
estar estar VerbForm=Inf
|
16 |
+
estardes estar Number=Plur|Person=2|VerbForm=Inf
|
17 |
+
estarei estar Mood=Ind|Number=Sing|Person=1|Tense=Fut|VerbForm=Fin
|
18 |
+
estareis estar Mood=Ind|Number=Plur|Person=2|Tense=Fut|VerbForm=Fin
|
19 |
+
estarem estar Number=Plur|Person=3|VerbForm=Inf
|
20 |
+
estaremos estar Mood=Ind|Number=Plur|Person=1|Tense=Fut|VerbForm=Fin
|
21 |
+
estares estar Number=Sing|Person=2|VerbForm=Inf
|
22 |
+
estaria estar Mood=Cnd|Number=Sing|Person=1|VerbForm=Fin
|
23 |
+
estaria estar Mood=Cnd|Number=Sing|Person=3|VerbForm=Fin
|
24 |
+
estariam estar Mood=Cnd|Number=Plur|Person=3|VerbForm=Fin
|
25 |
+
estarias estar Mood=Cnd|Number=Sing|Person=2|VerbForm=Fin
|
26 |
+
estarmos estar Number=Plur|Person=1|VerbForm=Inf
|
27 |
+
estará estar Mood=Ind|Number=Sing|Person=3|Tense=Fut|VerbForm=Fin
|
28 |
+
estarás estar Mood=Ind|Number=Sing|Person=2|Tense=Fut|VerbForm=Fin
|
29 |
+
estarão estar Mood=Ind|Number=Plur|Person=3|Tense=Fut|VerbForm=Fin
|
30 |
+
estaríamos estar Mood=Cnd|Number=Plur|Person=1|VerbForm=Fin
|
31 |
+
estaríeis estar Mood=Cnd|Number=Plur|Person=2|VerbForm=Fin
|
32 |
+
estava estar Mood=Ind|Number=Sing|Person=1|Tense=Imp|VerbForm=Fin
|
33 |
+
estava estar Mood=Ind|Number=Sing|Person=3|Tense=Imp|VerbForm=Fin
|
34 |
+
estavam estar Mood=Ind|Number=Plur|Person=3|Tense=Imp|VerbForm=Fin
|
35 |
+
estavas estar Mood=Ind|Number=Sing|Person=2|Tense=Imp|VerbForm=Fin
|
36 |
+
esteja estar Mood=Imp|Number=Sing|Person=3|VerbForm=Fin
|
37 |
+
esteja estar Mood=Sub|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin
|
38 |
+
esteja estar Mood=Sub|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin
|
39 |
+
estejais estar Mood=Sub|Number=Plur|Person=2|Tense=Pres|VerbForm=Fin
|
40 |
+
estejam estar Mood=Imp|Number=Plur|Person=3|VerbForm=Fin
|
41 |
+
estejam estar Mood=Sub|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin
|
42 |
+
estejamos estar Mood=Imp|Number=Plur|Person=1|VerbForm=Fin
|
43 |
+
estejamos estar Mood=Sub|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
44 |
+
estejas estar Mood=Sub|Number=Sing|Person=2|Tense=Pres|VerbForm=Fin
|
45 |
+
esteve estar Mood=Ind|Number=Sing|Person=3|Tense=Past|VerbForm=Fin
|
46 |
+
estive estar Mood=Ind|Number=Sing|Person=1|Tense=Past|VerbForm=Fin
|
47 |
+
estivemos estar Mood=Ind|Number=Plur|Person=1|Tense=Past|VerbForm=Fin
|
48 |
+
estiver estar Mood=Sub|Number=Sing|Person=1|Tense=Fut|VerbForm=Fin
|
49 |
+
estiver estar Mood=Sub|Number=Sing|Person=3|Tense=Fut|VerbForm=Fin
|
50 |
+
estivera estar Mood=Ind|Number=Sing|Person=1|Tense=Pqp|VerbForm=Fin
|
51 |
+
estivera estar Mood=Ind|Number=Sing|Person=3|Tense=Pqp|VerbForm=Fin
|
52 |
+
estiveram estar Mood=Ind|Number=Plur|Person=3|Tense=Past|VerbForm=Fin
|
53 |
+
estiveram estar Mood=Ind|Number=Plur|Person=3|Tense=Pqp|VerbForm=Fin
|
54 |
+
estiveras estar Mood=Ind|Number=Sing|Person=2|Tense=Pqp|VerbForm=Fin
|
55 |
+
estiverdes estar Mood=Sub|Number=Plur|Person=2|Tense=Fut|VerbForm=Fin
|
56 |
+
estiverem estar Mood=Sub|Number=Plur|Person=3|Tense=Fut|VerbForm=Fin
|
57 |
+
estiveres estar Mood=Sub|Number=Sing|Person=2|Tense=Fut|VerbForm=Fin
|
58 |
+
estivermos estar Mood=Sub|Number=Plur|Person=1|Tense=Fut|VerbForm=Fin
|
59 |
+
estivesse estar Mood=Sub|Number=Sing|Person=1|Tense=Past|VerbForm=Fin
|
60 |
+
estivesse estar Mood=Sub|Number=Sing|Person=3|Tense=Past|VerbForm=Fin
|
61 |
+
estivessem estar Mood=Sub|Number=Plur|Person=3|Tense=Past|VerbForm=Fin
|
62 |
+
estivesses estar Mood=Sub|Number=Sing|Person=2|Tense=Past|VerbForm=Fin
|
63 |
+
estiveste estar Mood=Ind|Number=Sing|Person=2|Tense=Past|VerbForm=Fin
|
64 |
+
estivestes estar Mood=Ind|Number=Plur|Person=2|Tense=Past|VerbForm=Fin
|
65 |
+
estivéramos estar Mood=Ind|Number=Plur|Person=1|Tense=Pqp|VerbForm=Fin
|
66 |
+
estivéreis estar Mood=Ind|Number=Plur|Person=2|Tense=Pqp|VerbForm=Fin
|
67 |
+
estivésseis estar Mood=Sub|Number=Plur|Person=2|Tense=Past|VerbForm=Fin
|
68 |
+
estivéssemos estar Mood=Sub|Number=Plur|Person=1|Tense=Past|VerbForm=Fin
|
69 |
+
estou estar Mood=Ind|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin
|
70 |
+
está estar Mood=Imp|Number=Sing|Person=2|VerbForm=Fin
|
71 |
+
está estar Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin
|
72 |
+
estás estar Mood=Ind|Number=Sing|Person=2|Tense=Pres|VerbForm=Fin
|
73 |
+
estávamos estar Mood=Ind|Number=Plur|Person=1|Tense=Imp|VerbForm=Fin
|
74 |
+
estáveis estar Mood=Ind|Number=Plur|Person=2|Tense=Imp|VerbForm=Fin
|
75 |
+
estão estar Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin
|
76 |
+
foi ir Mood=Ind|Number=Sing|Person=3|Tense=Past|VerbForm=Fin
|
77 |
+
foi ser Mood=Ind|Number=Sing|Person=3|Tense=Past|VerbForm=Fin
|
78 |
+
fomos ir Mood=Ind|Number=Plur|Person=1|Tense=Past|VerbForm=Fin
|
79 |
+
fomos ser Mood=Ind|Number=Plur|Person=1|Tense=Past|VerbForm=Fin
|
80 |
+
for ir Mood=Sub|Number=Sing|Person=1|Tense=Fut|VerbForm=Fin
|
81 |
+
for ir Mood=Sub|Number=Sing|Person=3|Tense=Fut|VerbForm=Fin
|
82 |
+
for ser Mood=Sub|Number=Sing|Person=1|Tense=Fut|VerbForm=Fin
|
83 |
+
for ser Mood=Sub|Number=Sing|Person=3|Tense=Fut|VerbForm=Fin
|
84 |
+
fora ir Mood=Ind|Number=Sing|Person=1|Tense=Pqp|VerbForm=Fin
|
85 |
+
fora ir Mood=Ind|Number=Sing|Person=3|Tense=Pqp|VerbForm=Fin
|
86 |
+
fora ser Mood=Ind|Number=Sing|Person=1|Tense=Pqp|VerbForm=Fin
|
87 |
+
fora ser Mood=Ind|Number=Sing|Person=3|Tense=Pqp|VerbForm=Fin
|
88 |
+
foram ir Mood=Ind|Number=Plur|Person=3|Tense=Past|VerbForm=Fin
|
89 |
+
foram ir Mood=Ind|Number=Plur|Person=3|Tense=Pqp|VerbForm=Fin
|
90 |
+
foram ser Mood=Ind|Number=Plur|Person=3|Tense=Past|VerbForm=Fin
|
91 |
+
foram ser Mood=Ind|Number=Plur|Person=3|Tense=Pqp|VerbForm=Fin
|
92 |
+
foras ir Mood=Ind|Number=Sing|Person=2|Tense=Pqp|VerbForm=Fin
|
93 |
+
foras ser Mood=Ind|Number=Sing|Person=2|Tense=Pqp|VerbForm=Fin
|
94 |
+
fordes ir Mood=Sub|Number=Plur|Person=2|Tense=Fut|VerbForm=Fin
|
95 |
+
fordes ser Mood=Sub|Number=Plur|Person=2|Tense=Fut|VerbForm=Fin
|
96 |
+
forem ir Mood=Sub|Number=Plur|Person=3|Tense=Fut|VerbForm=Fin
|
97 |
+
forem ser Mood=Sub|Number=Plur|Person=3|Tense=Fut|VerbForm=Fin
|
98 |
+
fores ir Mood=Sub|Number=Sing|Person=2|Tense=Fut|VerbForm=Fin
|
99 |
+
fores ser Mood=Sub|Number=Sing|Person=2|Tense=Fut|VerbForm=Fin
|
100 |
+
formos ir Mood=Sub|Number=Plur|Person=1|Tense=Fut|VerbForm=Fin
|
101 |
+
formos ser Mood=Sub|Number=Plur|Person=1|Tense=Fut|VerbForm=Fin
|
102 |
+
fosse ir Mood=Sub|Number=Sing|Person=1|Tense=Past|VerbForm=Fin
|
103 |
+
fosse ir Mood=Sub|Number=Sing|Person=3|Tense=Past|VerbForm=Fin
|
104 |
+
fosse ser Mood=Sub|Number=Sing|Person=1|Tense=Past|VerbForm=Fin
|
105 |
+
fosse ser Mood=Sub|Number=Sing|Person=3|Tense=Past|VerbForm=Fin
|
106 |
+
fossem ir Mood=Sub|Number=Plur|Person=3|Tense=Past|VerbForm=Fin
|
107 |
+
fossem ser Mood=Sub|Number=Plur|Person=3|Tense=Past|VerbForm=Fin
|
108 |
+
fosses ir Mood=Sub|Number=Sing|Person=2|Tense=Past|VerbForm=Fin
|
109 |
+
fosses ser Mood=Sub|Number=Sing|Person=2|Tense=Past|VerbForm=Fin
|
110 |
+
foste ir Mood=Ind|Number=Sing|Person=2|Tense=Past|VerbForm=Fin
|
111 |
+
foste ser Mood=Ind|Number=Sing|Person=2|Tense=Past|VerbForm=Fin
|
112 |
+
fostes ir Mood=Ind|Number=Plur|Person=2|Tense=Past|VerbForm=Fin
|
113 |
+
fostes ser Mood=Ind|Number=Plur|Person=2|Tense=Past|VerbForm=Fin
|
114 |
+
fui ir Mood=Ind|Number=Sing|Person=1|Tense=Past|VerbForm=Fin
|
115 |
+
fui ser Mood=Ind|Number=Sing|Person=1|Tense=Past|VerbForm=Fin
|
116 |
+
fôramos ir Mood=Ind|Number=Plur|Person=1|Tense=Pqp|VerbForm=Fin
|
117 |
+
fôramos ser Mood=Ind|Number=Plur|Person=1|Tense=Pqp|VerbForm=Fin
|
118 |
+
fôreis ir Mood=Ind|Number=Plur|Person=2|Tense=Pqp|VerbForm=Fin
|
119 |
+
fôreis ser Mood=Ind|Number=Plur|Person=2|Tense=Pqp|VerbForm=Fin
|
120 |
+
fôsseis ir Mood=Sub|Number=Plur|Person=2|Tense=Past|VerbForm=Fin
|
121 |
+
fôsseis ser Mood=Sub|Number=Plur|Person=2|Tense=Past|VerbForm=Fin
|
122 |
+
fôssemos ir Mood=Sub|Number=Plur|Person=1|Tense=Past|VerbForm=Fin
|
123 |
+
fôssemos ser Mood=Sub|Number=Plur|Person=1|Tense=Past|VerbForm=Fin
|
124 |
+
haja haver Mood=Imp|Number=Sing|Person=3|VerbForm=Fin
|
125 |
+
haja haver Mood=Sub|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin
|
126 |
+
haja haver Mood=Sub|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin
|
127 |
+
hajais haver Mood=Sub|Number=Plur|Person=2|Tense=Pres|VerbForm=Fin
|
128 |
+
hajam haver Mood=Imp|Number=Plur|Person=3|VerbForm=Fin
|
129 |
+
hajam haver Mood=Sub|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin
|
130 |
+
hajamos haver Mood=Imp|Number=Plur|Person=1|VerbForm=Fin
|
131 |
+
hajamos haver Mood=Sub|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
132 |
+
hajas haver Mood=Sub|Number=Sing|Person=2|Tense=Pres|VerbForm=Fin
|
133 |
+
havei haver Mood=Imp|Number=Plur|Person=2|VerbForm=Fin
|
134 |
+
haveis haver Mood=Ind|Number=Plur|Person=2|Tense=Pres|VerbForm=Fin
|
135 |
+
havemos haver Mood=Ind|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
136 |
+
havendo haver VerbForm=Ger
|
137 |
+
haver haver Number=Sing|Person=1|VerbForm=Inf
|
138 |
+
haver haver Number=Sing|Person=3|VerbForm=Inf
|
139 |
+
haver haver VerbForm=Inf
|
140 |
+
haverdes haver Number=Plur|Person=2|VerbForm=Inf
|
141 |
+
haverei haver Mood=Ind|Number=Sing|Person=1|Tense=Fut|VerbForm=Fin
|
142 |
+
havereis haver Mood=Ind|Number=Plur|Person=2|Tense=Fut|VerbForm=Fin
|
143 |
+
haverem haver Number=Plur|Person=3|VerbForm=Inf
|
144 |
+
haveremos haver Mood=Ind|Number=Plur|Person=1|Tense=Fut|VerbForm=Fin
|
145 |
+
haveres haver Number=Sing|Person=2|VerbForm=Inf
|
146 |
+
haveria haver Mood=Cnd|Number=Sing|Person=1|VerbForm=Fin
|
147 |
+
haveria haver Mood=Cnd|Number=Sing|Person=3|VerbForm=Fin
|
148 |
+
haveriam haver Mood=Cnd|Number=Plur|Person=3|VerbForm=Fin
|
149 |
+
haverias haver Mood=Cnd|Number=Sing|Person=2|VerbForm=Fin
|
150 |
+
havermos haver Number=Plur|Person=1|VerbForm=Inf
|
151 |
+
haverá haver Mood=Ind|Number=Sing|Person=3|Tense=Fut|VerbForm=Fin
|
152 |
+
haverás haver Mood=Ind|Number=Sing|Person=2|Tense=Fut|VerbForm=Fin
|
153 |
+
haverão haver Mood=Ind|Number=Plur|Person=3|Tense=Fut|VerbForm=Fin
|
154 |
+
haveríamos haver Mood=Cnd|Number=Plur|Person=1|VerbForm=Fin
|
155 |
+
haveríeis haver Mood=Cnd|Number=Plur|Person=2|VerbForm=Fin
|
156 |
+
havia haver Mood=Ind|Number=Sing|Person=1|Tense=Imp|VerbForm=Fin
|
157 |
+
havia haver Mood=Ind|Number=Sing|Person=3|Tense=Imp|VerbForm=Fin
|
158 |
+
haviam haver Mood=Ind|Number=Plur|Person=3|Tense=Imp|VerbForm=Fin
|
159 |
+
havias haver Mood=Ind|Number=Sing|Person=2|Tense=Imp|VerbForm=Fin
|
160 |
+
havida haver Gender=Fem|Number=Sing|VerbForm=Part
|
161 |
+
havidas haver Gender=Fem|Number=Plur|VerbForm=Part
|
162 |
+
havido haver Gender=Masc|Number=Sing|VerbForm=Part
|
163 |
+
havidos haver Gender=Masc|Number=Plur|VerbForm=Part
|
164 |
+
havíamos haver Mood=Ind|Number=Plur|Person=1|Tense=Imp|VerbForm=Fin
|
165 |
+
havíeis haver Mood=Ind|Number=Plur|Person=2|Tense=Imp|VerbForm=Fin
|
166 |
+
hei haver Mood=Ind|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin
|
167 |
+
houve haver Mood=Ind|Number=Sing|Person=1|Tense=Past|VerbForm=Fin
|
168 |
+
houve haver Mood=Ind|Number=Sing|Person=3|Tense=Past|VerbForm=Fin
|
169 |
+
houvemos haver Mood=Ind|Number=Plur|Person=1|Tense=Past|VerbForm=Fin
|
170 |
+
houver haver Mood=Sub|Number=Sing|Person=1|Tense=Fut|VerbForm=Fin
|
171 |
+
houver haver Mood=Sub|Number=Sing|Person=3|Tense=Fut|VerbForm=Fin
|
172 |
+
houvera haver Mood=Ind|Number=Sing|Person=1|Tense=Pqp|VerbForm=Fin
|
173 |
+
houvera haver Mood=Ind|Number=Sing|Person=3|Tense=Pqp|VerbForm=Fin
|
174 |
+
houveram haver Mood=Ind|Number=Plur|Person=3|Tense=Past|VerbForm=Fin
|
175 |
+
houveram haver Mood=Ind|Number=Plur|Person=3|Tense=Pqp|VerbForm=Fin
|
176 |
+
houveras haver Mood=Ind|Number=Sing|Person=2|Tense=Pqp|VerbForm=Fin
|
177 |
+
houverdes haver Mood=Sub|Number=Plur|Person=2|Tense=Fut|VerbForm=Fin
|
178 |
+
houverem haver Mood=Sub|Number=Plur|Person=3|Tense=Fut|VerbForm=Fin
|
179 |
+
houveres haver Mood=Sub|Number=Sing|Person=2|Tense=Fut|VerbForm=Fin
|
180 |
+
houvermos haver Mood=Sub|Number=Plur|Person=1|Tense=Fut|VerbForm=Fin
|
181 |
+
houvesse haver Mood=Sub|Number=Sing|Person=1|Tense=Past|VerbForm=Fin
|
182 |
+
houvesse haver Mood=Sub|Number=Sing|Person=3|Tense=Past|VerbForm=Fin
|
183 |
+
houvessem haver Mood=Sub|Number=Plur|Person=3|Tense=Past|VerbForm=Fin
|
184 |
+
houvesses haver Mood=Sub|Number=Sing|Person=2|Tense=Past|VerbForm=Fin
|
185 |
+
houveste haver Mood=Ind|Number=Sing|Person=2|Tense=Past|VerbForm=Fin
|
186 |
+
houvestes haver Mood=Ind|Number=Plur|Person=2|Tense=Past|VerbForm=Fin
|
187 |
+
houvéramos haver Mood=Ind|Number=Plur|Person=1|Tense=Pqp|VerbForm=Fin
|
188 |
+
houvéreis haver Mood=Ind|Number=Plur|Person=2|Tense=Pqp|VerbForm=Fin
|
189 |
+
houvésseis haver Mood=Sub|Number=Plur|Person=2|Tense=Past|VerbForm=Fin
|
190 |
+
houvéssemos haver Mood=Sub|Number=Plur|Person=1|Tense=Past|VerbForm=Fin
|
191 |
+
há haver Mood=Imp|Number=Sing|Person=2|VerbForm=Fin
|
192 |
+
há haver Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin
|
193 |
+
hás haver Mood=Ind|Number=Sing|Person=2|Tense=Pres|VerbForm=Fin
|
194 |
+
hão haver Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin
|
195 |
+
ia ir Mood=Ind|Number=Sing|Person=1|Tense=Imp|VerbForm=Fin
|
196 |
+
ia ir Mood=Ind|Number=Sing|Person=3|Tense=Imp|VerbForm=Fin
|
197 |
+
iam ir Mood=Ind|Number=Plur|Person=3|Tense=Imp|VerbForm=Fin
|
198 |
+
ias ir Mood=Ind|Number=Sing|Person=2|Tense=Imp|VerbForm=Fin
|
199 |
+
ida ir Gender=Fem|Number=Sing|VerbForm=Part
|
200 |
+
idas ir Gender=Fem|Number=Plur|VerbForm=Part
|
201 |
+
ide ir Mood=Imp|Number=Plur|Person=2|VerbForm=Fin
|
202 |
+
ides ir Mood=Ind|Number=Plur|Person=2|Tense=Pres|VerbForm=Fin
|
203 |
+
ido ir Gender=Masc|Number=Sing|VerbForm=Part
|
204 |
+
idos ir Gender=Masc|Number=Plur|VerbForm=Part
|
205 |
+
indo ir VerbForm=Ger
|
206 |
+
ir ir Number=Sing|Person=1|VerbForm=Inf
|
207 |
+
ir ir Number=Sing|Person=3|VerbForm=Inf
|
208 |
+
ir ir VerbForm=Inf
|
209 |
+
irdes ir Number=Plur|Person=2|VerbForm=Inf
|
210 |
+
irei ir Mood=Ind|Number=Sing|Person=1|Tense=Fut|VerbForm=Fin
|
211 |
+
ireis ir Mood=Ind|Number=Plur|Person=2|Tense=Fut|VerbForm=Fin
|
212 |
+
irem ir Number=Plur|Person=3|VerbForm=Inf
|
213 |
+
iremos ir Mood=Ind|Number=Plur|Person=1|Tense=Fut|VerbForm=Fin
|
214 |
+
ires ir Number=Sing|Person=2|VerbForm=Inf
|
215 |
+
iria ir Mood=Cnd|Number=Sing|Person=1|VerbForm=Fin
|
216 |
+
iria ir Mood=Cnd|Number=Sing|Person=3|VerbForm=Fin
|
217 |
+
iriam ir Mood=Cnd|Number=Plur|Person=3|VerbForm=Fin
|
218 |
+
irias ir Mood=Cnd|Number=Sing|Person=2|VerbForm=Fin
|
219 |
+
irmos ir Number=Plur|Person=1|VerbForm=Inf
|
220 |
+
irá ir Mood=Ind|Number=Sing|Person=3|Tense=Fut|VerbForm=Fin
|
221 |
+
irás ir Mood=Ind|Number=Sing|Person=2|Tense=Fut|VerbForm=Fin
|
222 |
+
irão ir Mood=Ind|Number=Plur|Person=3|Tense=Fut|VerbForm=Fin
|
223 |
+
iríamos ir Mood=Cnd|Number=Plur|Person=1|VerbForm=Fin
|
224 |
+
iríeis ir Mood=Cnd|Number=Plur|Person=2|VerbForm=Fin
|
225 |
+
sede ser Mood=Imp|Number=Plur|Person=2|VerbForm=Fin
|
226 |
+
seja ser Mood=Imp|Number=Sing|Person=3|VerbForm=Fin
|
227 |
+
seja ser Mood=Sub|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin
|
228 |
+
seja ser Mood=Sub|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin
|
229 |
+
sejais ser Mood=Sub|Number=Plur|Person=2|Tense=Pres|VerbForm=Fin
|
230 |
+
sejam ser Mood=Imp|Number=Plur|Person=3|VerbForm=Fin
|
231 |
+
sejam ser Mood=Sub|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin
|
232 |
+
sejamos ser Mood=Imp|Number=Plur|Person=1|VerbForm=Fin
|
233 |
+
sejamos ser Mood=Sub|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
234 |
+
sejas ser Mood=Sub|Number=Sing|Person=2|Tense=Pres|VerbForm=Fin
|
235 |
+
sendo ser VerbForm=Ger
|
236 |
+
ser ser Number=Sing|Person=1|VerbForm=Inf
|
237 |
+
ser ser Number=Sing|Person=3|VerbForm=Inf
|
238 |
+
ser ser VerbForm=Inf
|
239 |
+
serdes ser Number=Plur|Person=2|VerbForm=Inf
|
240 |
+
serei ser Mood=Ind|Number=Sing|Person=1|Tense=Fut|VerbForm=Fin
|
241 |
+
sereis ser Mood=Ind|Number=Plur|Person=2|Tense=Fut|VerbForm=Fin
|
242 |
+
serem ser Number=Plur|Person=3|VerbForm=Inf
|
243 |
+
seremos ser Mood=Ind|Number=Plur|Person=1|Tense=Fut|VerbForm=Fin
|
244 |
+
seres ser Number=Sing|Person=2|VerbForm=Inf
|
245 |
+
seria ser Mood=Cnd|Number=Sing|Person=1|VerbForm=Fin
|
246 |
+
seria ser Mood=Cnd|Number=Sing|Person=3|VerbForm=Fin
|
247 |
+
seriam ser Mood=Cnd|Number=Plur|Person=3|VerbForm=Fin
|
248 |
+
serias ser Mood=Cnd|Number=Sing|Person=2|VerbForm=Fin
|
249 |
+
sermos ser Number=Plur|Person=1|VerbForm=Inf
|
250 |
+
será ser Mood=Ind|Number=Sing|Person=3|Tense=Fut|VerbForm=Fin
|
251 |
+
serás ser Mood=Ind|Number=Sing|Person=2|Tense=Fut|VerbForm=Fin
|
252 |
+
serão ser Mood=Ind|Number=Plur|Person=3|Tense=Fut|VerbForm=Fin
|
253 |
+
seríamos ser Mood=Cnd|Number=Plur|Person=1|VerbForm=Fin
|
254 |
+
seríeis ser Mood=Cnd|Number=Plur|Person=2|VerbForm=Fin
|
255 |
+
sida ser Gender=Fem|Number=Sing|VerbForm=Part
|
256 |
+
sidas ser Gender=Fem|Number=Plur|VerbForm=Part
|
257 |
+
sido ser Gender=Masc|Number=Sing|VerbForm=Part
|
258 |
+
sidos ser Gender=Masc|Number=Plur|VerbForm=Part
|
259 |
+
sois ser Mood=Ind|Number=Plur|Person=2|Tense=Pres|VerbForm=Fin
|
260 |
+
somos ser Mood=Ind|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
261 |
+
sou ser Mood=Ind|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin
|
262 |
+
são ser Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin
|
263 |
+
sê ser Mood=Imp|Number=Sing|Person=2|VerbForm=Fin
|
264 |
+
tamos estar Abbr=Yes|Mood=Ind|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
265 |
+
tava estar Abbr=Yes|Mood=Ind|Number=Sing|Person=3|Tense=Imp|VerbForm=Fin
|
266 |
+
tavam estar Abbr=Yes|Mood=Ind|Number=Plur|Person=3|Tense=Imp|VerbForm=Fin
|
267 |
+
tem ter Mood=Imp|Number=Sing|Person=2|VerbForm=Fin
|
268 |
+
tem ter Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin
|
269 |
+
temos ter Mood=Ind|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
270 |
+
tende ter Mood=Imp|Number=Plur|Person=2|VerbForm=Fin
|
271 |
+
tendes ter Mood=Ind|Number=Plur|Person=2|Tense=Pres|VerbForm=Fin
|
272 |
+
tendo ter VerbForm=Ger
|
273 |
+
tenha ter Mood=Imp|Number=Sing|Person=3|VerbForm=Fin
|
274 |
+
tenha ter Mood=Sub|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin
|
275 |
+
tenha ter Mood=Sub|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin
|
276 |
+
tenhais ter Mood=Sub|Number=Plur|Person=2|Tense=Pres|VerbForm=Fin
|
277 |
+
tenham ter Mood=Imp|Number=Plur|Person=3|VerbForm=Fin
|
278 |
+
tenham ter Mood=Sub|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin
|
279 |
+
tenhamos ter Mood=Imp|Number=Plur|Person=1|VerbForm=Fin
|
280 |
+
tenhamos ter Mood=Sub|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
281 |
+
tenhas ter Mood=Sub|Number=Sing|Person=2|Tense=Pres|VerbForm=Fin
|
282 |
+
tenho ter Mood=Ind|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin
|
283 |
+
tens ter Mood=Ind|Number=Sing|Person=2|Tense=Pres|VerbForm=Fin
|
284 |
+
ter ter Number=Sing|Person=1|VerbForm=Inf
|
285 |
+
ter ter Number=Sing|Person=3|VerbForm=Inf
|
286 |
+
ter ter VerbForm=Inf
|
287 |
+
terdes ter Number=Plur|Person=2|VerbForm=Inf
|
288 |
+
terei ter Mood=Ind|Number=Sing|Person=1|Tense=Fut|VerbForm=Fin
|
289 |
+
tereis ter Mood=Ind|Number=Plur|Person=2|Tense=Fut|VerbForm=Fin
|
290 |
+
terem ter Number=Plur|Person=3|VerbForm=Inf
|
291 |
+
teremos ter Mood=Ind|Number=Plur|Person=1|Tense=Fut|VerbForm=Fin
|
292 |
+
teres ter Number=Sing|Person=2|VerbForm=Inf
|
293 |
+
teria ter Mood=Cnd|Number=Sing|Person=1|VerbForm=Fin
|
294 |
+
teria ter Mood=Cnd|Number=Sing|Person=3|VerbForm=Fin
|
295 |
+
teriam ter Mood=Cnd|Number=Plur|Person=3|VerbForm=Fin
|
296 |
+
terias ter Mood=Cnd|Number=Sing|Person=2|VerbForm=Fin
|
297 |
+
termos ter Number=Plur|Person=1|VerbForm=Inf
|
298 |
+
terá ter Mood=Ind|Number=Sing|Person=3|Tense=Fut|VerbForm=Fin
|
299 |
+
terás ter Mood=Ind|Number=Sing|Person=2|Tense=Fut|VerbForm=Fin
|
300 |
+
terão ter Mood=Ind|Number=Plur|Person=3|Tense=Fut|VerbForm=Fin
|
301 |
+
teríamos ter Mood=Cnd|Number=Plur|Person=1|VerbForm=Fin
|
302 |
+
teríeis ter Mood=Cnd|Number=Plur|Person=2|VerbForm=Fin
|
303 |
+
teve ter Mood=Ind|Number=Sing|Person=3|Tense=Past|VerbForm=Fin
|
304 |
+
tida ter Gender=Fem|Number=Sing|VerbForm=Part
|
305 |
+
tidas ter Gender=Fem|Number=Plur|VerbForm=Part
|
306 |
+
tido ter Gender=Masc|Number=Sing|VerbForm=Part
|
307 |
+
tidos ter Gender=Masc|Number=Plur|VerbForm=Part
|
308 |
+
tinha ter Mood=Ind|Number=Sing|Person=1|Tense=Imp|VerbForm=Fin
|
309 |
+
tinha ter Mood=Ind|Number=Sing|Person=3|Tense=Imp|VerbForm=Fin
|
310 |
+
tinham ter Mood=Ind|Number=Plur|Person=3|Tense=Imp|VerbForm=Fin
|
311 |
+
tinhas: ter Mood=Ind|Number=Sing|Person=2|Tense=Imp|VerbForm=Fin
|
312 |
+
tive ter Mood=Ind|Number=Sing|Person=1|Tense=Past|VerbForm=Fin
|
313 |
+
tivemos ter Mood=Ind|Number=Plur|Person=1|Tense=Past|VerbForm=Fin
|
314 |
+
tiver ter Mood=Sub|Number=Sing|Person=1|Tense=Fut|VerbForm=Fin
|
315 |
+
tiver ter Mood=Sub|Number=Sing|Person=3|Tense=Fut|VerbForm=Fin
|
316 |
+
tivera ter Mood=Ind|Number=Sing|Person=1|Tense=Pqp|VerbForm=Fin
|
317 |
+
tivera ter Mood=Ind|Number=Sing|Person=3|Tense=Pqp|VerbForm=Fin
|
318 |
+
tiveram ter Mood=Ind|Number=Plur|Person=3|Tense=Past|VerbForm=Fin
|
319 |
+
tiveram ter Mood=Ind|Number=Plur|Person=3|Tense=Pqp|VerbForm=Fin
|
320 |
+
tiveras ter Mood=Ind|Number=Sing|Person=2|Tense=Pqp|VerbForm=Fin
|
321 |
+
tiverdes ter Mood=Sub|Number=Plur|Person=2|Tense=Fut|VerbForm=Fin
|
322 |
+
tiverem ter Mood=Sub|Number=Plur|Person=3|Tense=Fut|VerbForm=Fin
|
323 |
+
tiveres ter Mood=Sub|Number=Sing|Person=2|Tense=Fut|VerbForm=Fin
|
324 |
+
tivermos ter Mood=Sub|Number=Plur|Person=1|Tense=Fut|VerbForm=Fin
|
325 |
+
tivesse ter Mood=Sub|Number=Sing|Person=1|Tense=Past|VerbForm=Fin
|
326 |
+
tivesse ter Mood=Sub|Number=Sing|Person=3|Tense=Past|VerbForm=Fin
|
327 |
+
tivessem ter Mood=Sub|Number=Plur|Person=3|Tense=Past|VerbForm=Fin
|
328 |
+
tivesses ter Mood=Sub|Number=Sing|Person=2|Tense=Past|VerbForm=Fin
|
329 |
+
tiveste ter Mood=Ind|Number=Sing|Person=2|Tense=Past|VerbForm=Fin
|
330 |
+
tivestes ter Mood=Ind|Number=Plur|Person=2|Tense=Past|VerbForm=Fin
|
331 |
+
tivéramos ter Mood=Ind|Number=Plur|Person=1|Tense=Pqp|VerbForm=Fin
|
332 |
+
tivéreis ter Mood=Ind|Number=Plur|Person=2|Tense=Pqp|VerbForm=Fin
|
333 |
+
tivésseis ter Mood=Sub|Number=Plur|Person=2|Tense=Past|VerbForm=Fin
|
334 |
+
tivéssemos ter Mood=Sub|Number=Plur|Person=1|Tense=Past|VerbForm=Fin
|
335 |
+
tá estar Abbr=Yes|Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin
|
336 |
+
tão estar Abbr=Yes|Abbr=Yes|Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin
|
337 |
+
têm ter Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin
|
338 |
+
tínhamos ter Mood=Ind|Number=Plur|Person=1|Tense=Imp|VerbForm=Fin
|
339 |
+
tínheis ter Mood=Ind|Number=Plur|Person=2|Tense=Imp|VerbForm=Fin
|
340 |
+
tô estar Abbr=Yes|Mood=Ind|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin
|
341 |
+
vades ir Mood=Sub|Number=Plur|Person=2|Tense=Pres|VerbForm=Fin
|
342 |
+
vai ir Mood=Imp|Number=Sing|Person=2|VerbForm=Fin
|
343 |
+
vai ir Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin
|
344 |
+
vais ir Mood=Ind|Number=Sing|Person=2|Tense=Pres|VerbForm=Fin
|
345 |
+
vamo ir Abbr=Yes|Mood=Imp|Number=Plur|Person=1|VerbForm=Fin
|
346 |
+
vamo ir Abbr=Yes|Mood=Ind|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
347 |
+
vamo ir Abbr=Yes|Mood=Sub|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
348 |
+
vamos ir Mood=Imp|Number=Plur|Person=1|VerbForm=Fin
|
349 |
+
vamos ir Mood=Ind|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
350 |
+
vamos ir Mood=Sub|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
351 |
+
veio vir Mood=Ind|Number=Sing|Person=3|Tense=Past|VerbForm=Fin
|
352 |
+
vem vir Mood=Imp|Number=Sing|Person=2|VerbForm=Fin
|
353 |
+
vem vir Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin
|
354 |
+
venha vir Mood=Imp|Number=Sing|Person=3|VerbForm=Fin
|
355 |
+
venha vir Mood=Sub|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin
|
356 |
+
venha vir Mood=Sub|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin
|
357 |
+
venhais vir Mood=Sub|Number=Plur|Person=2|Tense=Pres|VerbForm=Fin
|
358 |
+
venham vir Mood=Imp|Number=Plur|Person=3|VerbForm=Fin
|
359 |
+
venham vir Mood=Sub|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin
|
360 |
+
venhamos vir Mood=Imp|Number=Plur|Person=1|VerbForm=Fin
|
361 |
+
venhamos vir Mood=Sub|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
362 |
+
venhas vir Mood=Sub|Number=Sing|Person=2|Tense=Pres|VerbForm=Fin
|
363 |
+
venho vir Mood=Ind|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin
|
364 |
+
vens: vir Mood=Ind|Number=Sing|Person=2|Tense=Pres|VerbForm=Fin
|
365 |
+
viemos vir Mood=Ind|Number=Plur|Person=1|Tense=Past|VerbForm=Fin
|
366 |
+
vier vir Mood=Sub|Number=Sing|Person=1|Tense=Fut|VerbForm=Fin
|
367 |
+
vier vir Mood=Sub|Number=Sing|Person=3|Tense=Fut|VerbForm=Fin
|
368 |
+
viera vir Mood=Ind|Number=Sing|Person=1|Tense=Pqp|VerbForm=Fin
|
369 |
+
viera vir Mood=Ind|Number=Sing|Person=3|Tense=Pqp|VerbForm=Fin
|
370 |
+
vieram vir Mood=Ind|Number=Plur|Person=3|Tense=Past|VerbForm=Fin
|
371 |
+
vieram vir Mood=Ind|Number=Plur|Person=3|Tense=Pqp|VerbForm=Fin
|
372 |
+
vieras vir Mood=Ind|Number=Sing|Person=2|Tense=Pqp|VerbForm=Fin
|
373 |
+
vierdes vir Mood=Sub|Number=Plur|Person=2|Tense=Fut|VerbForm=Fin
|
374 |
+
vierem vir Mood=Sub|Number=Plur|Person=3|Tense=Fut|VerbForm=Fin
|
375 |
+
vieres vir Mood=Sub|Number=Sing|Person=2|Tense=Fut|VerbForm=Fin
|
376 |
+
viermos vir Mood=Sub|Number=Plur|Person=1|Tense=Fut|VerbForm=Fin
|
377 |
+
viesse vir Mood=Sub|Number=Sing|Person=1|Tense=Past|VerbForm=Fin
|
378 |
+
viesse vir Mood=Sub|Number=Sing|Person=3|Tense=Past|VerbForm=Fin
|
379 |
+
viessem vir Mood=Sub|Number=Plur|Person=3|Tense=Past|VerbForm=Fin
|
380 |
+
viesses vir Mood=Sub|Number=Sing|Person=2|Tense=Past|VerbForm=Fin
|
381 |
+
vieste vir Mood=Ind|Number=Sing|Person=2|Tense=Past|VerbForm=Fin
|
382 |
+
viestes vir Mood=Ind|Number=Plur|Person=2|Tense=Past|VerbForm=Fin
|
383 |
+
vim vir Mood=Ind|Number=Sing|Person=1|Tense=Past|VerbForm=Fin
|
384 |
+
vimos vir Mood=Ind|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin
|
385 |
+
vinda vir Gender=Fem|Number=Sing|VerbForm=Part
|
386 |
+
vindas vir Gender=Fem|Number=Plur|VerbForm=Part
|
387 |
+
vinde vir Mood=Imp|Number=Plur|Person=2|VerbForm=Fin
|
388 |
+
vindes vir Mood=Ind|Number=Plur|Person=2|Tense=Pres|VerbForm=Fin
|
389 |
+
vindo vir Gender=Masc|Number=Sing|VerbForm=Part
|
390 |
+
vindo vir VerbForm=Ger
|
391 |
+
vindos vir Gender=Masc|Number=Plur|VerbForm=Part
|
392 |
+
vinha vir Mood=Ind|Number=Sing|Person=1|Tense=Imp|VerbForm=Fin
|
393 |
+
vinha vir Mood=Ind|Number=Sing|Person=3|Tense=Imp|VerbForm=Fin
|
394 |
+
vinham vir Mood=Ind|Number=Plur|Person=3|Tense=Imp|VerbForm=Fin
|
395 |
+
vinhas: vir Mood=Ind|Number=Sing|Person=2|Tense=Imp|VerbForm=Fin
|
396 |
+
vir vir Number=Sing|Person=1|VerbForm=Inf
|
397 |
+
vir vir Number=Sing|Person=3|VerbForm=Inf
|
398 |
+
vir vir VerbForm=Inf
|
399 |
+
virdes vir Number=Plur|Person=2|VerbForm=Inf
|
400 |
+
virei vir Mood=Ind|Number=Sing|Person=1|Tense=Fut|VerbForm=Fin
|
401 |
+
vireis vir Mood=Ind|Number=Plur|Person=2|Tense=Fut|VerbForm=Fin
|
402 |
+
virem vir Number=Plur|Person=3|VerbForm=Inf
|
403 |
+
viremos vir Mood=Ind|Number=Plur|Person=1|Tense=Fut|VerbForm=Fin
|
404 |
+
vires vir Number=Sing|Person=2|VerbForm=Inf
|
405 |
+
viria vir Mood=Cnd|Number=Sing|Person=1|VerbForm=Fin
|
406 |
+
viria vir Mood=Cnd|Number=Sing|Person=3|VerbForm=Fin
|
407 |
+
viriam vir Mood=Cnd|Number=Plur|Person=3|VerbForm=Fin
|
408 |
+
virias vir Mood=Cnd|Number=Sing|Person=2|VerbForm=Fin
|
409 |
+
virmos vir Number=Plur|Person=1|VerbForm=Inf
|
410 |
+
virá vir Mood=Ind|Number=Sing|Person=3|Tense=Fut|VerbForm=Fin
|
411 |
+
virás vir Mood=Ind|Number=Sing|Person=2|Tense=Fut|VerbForm=Fin
|
412 |
+
virão vir Mood=Ind|Number=Plur|Person=3|Tense=Fut|VerbForm=Fin
|
413 |
+
viríamos vir Mood=Cnd|Number=Plur|Person=1|VerbForm=Fin
|
414 |
+
viríeis vir Mood=Cnd|Number=Plur|Person=2|VerbForm=Fin
|
415 |
+
viéramos vir Mood=Ind|Number=Plur|Person=1|Tense=Pqp|VerbForm=Fin
|
416 |
+
viéreis vir Mood=Ind|Number=Plur|Person=2|Tense=Pqp|VerbForm=Fin
|
417 |
+
viésseis vir Mood=Sub|Number=Plur|Person=2|Tense=Past|VerbForm=Fin
|
418 |
+
viéssemos vir Mood=Sub|Number=Plur|Person=1|Tense=Past|VerbForm=Fin
|
419 |
+
vou ir Mood=Ind|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin
|
420 |
+
vá ir Mood=Imp|Number=Sing|Person=3|VerbForm=Fin
|
421 |
+
vá ir Mood=Sub|Number=Sing|Person=1|Tense=Pres|VerbForm=Fin
|
422 |
+
vá ir Mood=Sub|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin
|
423 |
+
vás ir Mood=Sub|Number=Sing|Person=2|Tense=Pres|VerbForm=Fin
|
424 |
+
vão ir Mood=Imp|Number=Plur|Person=3|VerbForm=Fin
|
425 |
+
vão ir Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin
|
426 |
+
vão ir Mood=Sub|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin
|
427 |
+
vêm vir Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin
|
428 |
+
vínhamos vir Mood=Ind|Number=Plur|Person=1|Tense=Imp|VerbForm=Fin
|
429 |
+
vínheis vir Mood=Ind|Number=Plur|Person=2|Tense=Imp|VerbForm=Fin
|
430 |
+
é ser Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin
|
431 |
+
éramos ser Mood=Ind|Number=Plur|Person=1|Tense=Imp|VerbForm=Fin
|
432 |
+
éreis ser Mood=Ind|Number=Plur|Person=2|Tense=Imp|VerbForm=Fin
|
433 |
+
és ser Mood=Ind|Number=Sing|Person=2|Tense=Pres|VerbForm=Fin
|
434 |
+
íamos ir Mood=Ind|Number=Plur|Person=1|Tense=Imp|VerbForm=Fin
|
435 |
+
íeis ir Mood=Ind|Number=Plur|Person=2|Tense=Imp|VerbForm=Fin
|
portTokenizer/CCONJ.tsv
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
como como _
|
2 |
+
contudo contudo _
|
3 |
+
e e _
|
4 |
+
enquanto enquanto _
|
5 |
+
entretanto entretanto _
|
6 |
+
então então _
|
7 |
+
já já _
|
8 |
+
logo logo _
|
9 |
+
mas mas _
|
10 |
+
nem nem _
|
11 |
+
ora ora _
|
12 |
+
ou ou _
|
13 |
+
pois pois _
|
14 |
+
porquanto porquanto _
|
15 |
+
porque porque _
|
16 |
+
portanto portanto _
|
17 |
+
porém porém _
|
18 |
+
quando quando _
|
19 |
+
quanto quanto _
|
20 |
+
que que _
|
21 |
+
quer quer _
|
22 |
+
seja seja _
|
23 |
+
senão senão _
|
24 |
+
tanto tanto _
|
25 |
+
todavia todavia _
|
portTokenizer/DET.tsv
ADDED
@@ -0,0 +1,117 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
a o Definite=Def|Gender=Fem|Number=Sing|PronType=Art
|
2 |
+
algum algum Gender=Masc|Number=Sing|PronType=Ind
|
3 |
+
alguma algum Gender=Fem|Number=Sing|PronType=Ind
|
4 |
+
algumas algum Gender=Fem|Number=Plur|PronType=Ind
|
5 |
+
alguns algum Gender=Masc|Number=Plur|PronType=Ind
|
6 |
+
ambas ambos Gender=Fem|Number=Plur|PronType=Ind
|
7 |
+
ambos ambos Gender=Masc|Number=Plur|PronType=Ind
|
8 |
+
aquela aquele Gender=Fem|Number=Sing|PronType=Dem
|
9 |
+
aquelas aquele Gender=Fem|Number=Plur|PronType=Dem
|
10 |
+
aquele aquele Gender=Masc|Number=Sing|PronType=Dem
|
11 |
+
aqueles aquele Gender=Masc|Number=Plur|PronType=Dem
|
12 |
+
as o Definite=Def|Gender=Fem|Number=Plur|PronType=Art
|
13 |
+
bastante bastante Number=Sing|PronType=Ind
|
14 |
+
bastantes bastante Number=Plur|PronType=Ind
|
15 |
+
cada cada Number=Sing|PronType=Ind
|
16 |
+
certa certo Gender=Fem|Number=Sing|PronType=Ind
|
17 |
+
certas certo Gender=Fem|Number=Plur|PronType=Ind
|
18 |
+
certo certo Gender=Masc|Number=Sing|PronType=Ind
|
19 |
+
certos certos Gender=Masc|Number=Plur|PronType=Ind
|
20 |
+
cuja cujo Gender=Fem|Number=Sing|PronType=Rel
|
21 |
+
cujas cujo Gender=Fem|Number=Plur|PronType=Rel
|
22 |
+
cujo cujo Gender=Masc|Number=Sing|PronType=Rel
|
23 |
+
cujos cujo Gender=Masc|Number=Plur|PronType=Rel
|
24 |
+
dada dado Gender=Fem|Number=Sing|PronType=Ind
|
25 |
+
dado dado Gender=Masc|Number=Sing|PronType=Ind
|
26 |
+
demais demais Number=Plur|PronType=Ind
|
27 |
+
diversas diversos Gender=Fem|Number=Plur|PronType=Dem
|
28 |
+
diversos diversos Gender=Masc|Number=Plur|PronType=Dem
|
29 |
+
essa esse Gender=Fem|Number=Sing|PronType=Dem
|
30 |
+
essas esse Gender=Fem|Number=Plur|PronType=Dem
|
31 |
+
esse esse Gender=Masc|Number=Sing|PronType=Dem
|
32 |
+
esses esse Gender=Masc|Number=Plur|PronType=Dem
|
33 |
+
esta este Gender=Fem|Number=Sing|PronType=Dem
|
34 |
+
estas este Gender=Fem|Number=Plur|PronType=Dem
|
35 |
+
este este Gender=Masc|Number=Sing|PronType=Dem
|
36 |
+
estes este Gender=Masc|Number=Plur|PronType=Dem
|
37 |
+
inúmeras inúmeros Gender=Fem|Number=Plur|PronType=Dem
|
38 |
+
inúmeros inúmeros Gender=Masc|Number=Plur|PronType=Dem
|
39 |
+
mais mais PronType=Ind
|
40 |
+
menos menos PronType=Ind
|
41 |
+
mesma mesmo Gender=Fem|Number=Sing|PronType=Dem
|
42 |
+
mesmas mesmo Gender=Fem|Number=Plur|PronType=Dem
|
43 |
+
mesmo mesmo Gender=Masc|Number=Sing|PronType=Dem
|
44 |
+
mesmos mesmo Gender=Masc|Number=Plur|PronType=Dem
|
45 |
+
mesmíssima mesmíssimo Gender=Fem|Number=Sing|PronType=Dem
|
46 |
+
mesmíssimas mesmíssimo Gender=Fem|Number=Plur|PronType=Dem
|
47 |
+
mesmíssimo mesmíssimo Gender=Masc|Number=Sing|PronType=Dem
|
48 |
+
mesmíssimos mesmíssimo Gender=Masc|Number=Plur|PronType=Dem
|
49 |
+
meu meu Gender=Masc|Number=Sing|Person=1|Poss=Yes|PronType=Prs
|
50 |
+
meus meu Gender=Masc|Number=Plur|Person=1|Poss=Yes|PronType=Prs
|
51 |
+
minha meu Gender=Fem|Number=Sing|Person=1|Poss=Yes|PronType=Prs
|
52 |
+
minhas meu Gender=Fem|Number=Plur|Person=1|Poss=Yes|PronType=Prs
|
53 |
+
nenhum nenhum Gender=Masc|Number=Sing|PronType=Ind
|
54 |
+
nenhuma nenhum Gender=Fem|Number=Sing|PronType=Ind
|
55 |
+
nossa nosso Gender=Fem|Number=Sing|Person=1|Poss=Yes|PronType=Prs
|
56 |
+
nossas nosso Gender=Fem|Number=Plur|Person=1|Poss=Yes|PronType=Prs
|
57 |
+
nosso nosso Gender=Masc|Number=Sing|Person=1|Poss=Yes|PronType=Prs
|
58 |
+
nossos nosso Gender=Masc|Number=Plur|Person=1|Poss=Yes|PronType=Prs
|
59 |
+
o o Definite=Def|Gender=Masc|Number=Sing|PronType=Art
|
60 |
+
os o Definite=Def|Gender=Masc|Number=Plur|PronType=Art
|
61 |
+
outra outro Gender=Fem|Number=Sing|PronType=Ind
|
62 |
+
outras outro Gender=Fem|Number=Plur|PronType=Ind
|
63 |
+
outro outro Gender=Masc|Number=Sing|PronType=Ind
|
64 |
+
outros outro Gender=Masc|Number=Plur|PronType=Ind
|
65 |
+
própria próprio Gender=Fem|Number=Sing|PronType=Dem
|
66 |
+
próprias próprio Gender=Fem|Number=Plur|PronType=Dem
|
67 |
+
próprio próprio Gender=Masc|Number=Sing|PronType=Dem
|
68 |
+
próprios próprio Gender=Masc|Number=Plur|PronType=Dem
|
69 |
+
quais qual Number=Plur|PronType=Int
|
70 |
+
quaisquer qualquer Number=Plur|PronType=Ind
|
71 |
+
qual qual Number=Sing|PronType=Int
|
72 |
+
qualquer qualquer Number=Sing|PronType=Ind
|
73 |
+
quanta quanto Gender=Fem|Number=Sing|PronType=Ind
|
74 |
+
quanta quanto Gender=Fem|Number=Sing|PronType=Int
|
75 |
+
quantas quanto Gender=Fem|Number=Plur|PronType=Ind
|
76 |
+
quantas quanto Gender=Fem|Number=Plur|PronType=Int
|
77 |
+
quantas quanto Gender=Fem|Number=Plur|PronType=Rel
|
78 |
+
quanto quanto Gender=Masc|Number=Sing|PronType=Ind
|
79 |
+
quanto quanto Gender=Masc|Number=Sing|PronType=Int
|
80 |
+
quantos quanto Gender=Masc|Number=Plur|PronType=Ind
|
81 |
+
quantos quanto Gender=Masc|Number=Plur|PronType=Int
|
82 |
+
quantos quanto Gender=Masc|Number=Plur|PronType=Rel
|
83 |
+
que que PronType=Ind
|
84 |
+
seu seu Gender=Masc|Number=Sing|Person=3|Poss=Yes|PronType=Prs
|
85 |
+
seus seu Gender=Masc|Number=Plur|Person=3|Poss=Yes|PronType=Prs
|
86 |
+
sua seu Gender=Fem|Number=Sing|Person=3|Poss=Yes|PronType=Prs
|
87 |
+
suas seu Gender=Fem|Number=Plur|Person=3|Poss=Yes|PronType=Prs
|
88 |
+
tais tal Number=Plur|PronType=Dem
|
89 |
+
tais tal Number=Plur|PronType=Ind
|
90 |
+
tal tal Number=Sing|PronType=Dem
|
91 |
+
tal tal Number=Sing|PronType=Ind
|
92 |
+
tanta tanto Gender=Fem|Number=Sing|PronType=Ind
|
93 |
+
tantas tanto Gender=Fem|Number=Plur|PronType=Ind
|
94 |
+
tanto tanto Gender=Masc|Number=Sing|PronType=Ind
|
95 |
+
tantos tanto Gender=Masc|Number=Plur|PronType=Ind
|
96 |
+
teu teu Gender=Masc|Number=Sing|Person=2|Poss=Yes|PronType=Prs
|
97 |
+
teus teu Gender=Masc|Number=Plur|Person=2|Poss=Yes|PronType=Prs
|
98 |
+
toda todo Gender=Fem|Number=Sing|PronType=Ind
|
99 |
+
todas todo Gender=Fem|Number=Plur|PronType=Ind
|
100 |
+
todinha todinho Gender=Fem|Number=Sing|PronType=Ind
|
101 |
+
todinhas todinho Gender=Fem|Number=Plur|PronType=Ind
|
102 |
+
todinho todinho Gender=Masc|Number=Sing|PronType=Ind
|
103 |
+
todinhos todinho Gender=Masc|Number=Plur|PronType=Ind
|
104 |
+
todo todo Gender=Masc|Number=Sing|PronType=Ind
|
105 |
+
todos todo Gender=Masc|Number=Plur|PronType=Ind
|
106 |
+
tua teu Gender=Fem|Number=Sing|Person=2|Poss=Yes|PronType=Prs
|
107 |
+
tuas teu Gender=Fem|Number=Plur|Person=2|Poss=Yes|PronType=Prs
|
108 |
+
um um Definite=Ind|Gender=Masc|Number=Sing|PronType=Art
|
109 |
+
uma um Definite=Ind|Gender=Fem|Number=Sing|PronType=Art
|
110 |
+
umas um Definite=Ind|Gender=Fem|Number=Plur|PronType=Art
|
111 |
+
uns um Definite=Ind|Gender=Masc|Number=Plur|PronType=Art
|
112 |
+
vossa vosso Gender=Fem|Number=Sing|Person=2|Poss=Yes|PronType=Prs
|
113 |
+
vossas vosso Gender=Fem|Number=Plur|Person=2|Poss=Yes|PronType=Prs
|
114 |
+
vosso vosso Gender=Masc|Number=Sing|Person=2|Poss=Yes|PronType=Prs
|
115 |
+
vossos vosso Gender=Masc|Number=Plur|Person=2|Poss=Yes|PronType=Prs
|
116 |
+
várias vários Gender=Fem|Number=Plur|PronType=Ind
|
117 |
+
vários vários Gender=Masc|Number=Plur|PronType=Ind
|
portTokenizer/INTJ.tsv
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
adeus adeus _
|
2 |
+
ah ah _
|
3 |
+
ai ai _
|
4 |
+
amém amém _
|
5 |
+
arre arre _
|
6 |
+
atenção atenção _
|
7 |
+
ave ave _
|
8 |
+
caramba caramba _
|
9 |
+
coragem coragem _
|
10 |
+
eia eia _
|
11 |
+
eita eita _
|
12 |
+
eureca eureca _
|
13 |
+
hein hein _
|
14 |
+
hem hem _
|
15 |
+
heureca heureca _
|
16 |
+
hum hum _
|
17 |
+
hummm hummm _
|
18 |
+
hurra hurra _
|
19 |
+
ih ih _
|
20 |
+
nossa nossa _
|
21 |
+
né né _
|
22 |
+
oh oh _
|
23 |
+
oi oi _
|
24 |
+
ok ok _
|
25 |
+
olá olá _
|
26 |
+
ora ora _
|
27 |
+
poxa poxa _
|
28 |
+
pqp pqp _
|
29 |
+
pronto pronto _
|
30 |
+
psit psit _
|
31 |
+
psiu psiu _
|
32 |
+
pô pô _
|
33 |
+
que que _
|
34 |
+
tchau tchau _
|
35 |
+
ufa ufa _
|
36 |
+
uh uh _
|
37 |
+
ui ui _
|
38 |
+
ué ué _
|
39 |
+
xi xi _
|
40 |
+
ão ão _
|
41 |
+
ó ó _
|
portTokenizer/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
MIT License
|
2 |
+
|
3 |
+
Copyright (c) 2023 Lucelene Lopes
|
4 |
+
|
5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6 |
+
of this software and associated documentation files (the "Software"), to deal
|
7 |
+
in the Software without restriction, including without limitation the rights
|
8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9 |
+
copies of the Software, and to permit persons to whom the Software is
|
10 |
+
furnished to do so, subject to the following conditions:
|
11 |
+
|
12 |
+
The above copyright notice and this permission notice shall be included in all
|
13 |
+
copies or substantial portions of the Software.
|
14 |
+
|
15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21 |
+
SOFTWARE.
|
portTokenizer/NOUN.tsv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
portTokenizer/NUM.tsv
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
catorze catorze NumType=Card
|
2 |
+
cem cem NumType=Card
|
3 |
+
cento cento NumType=Card
|
4 |
+
cinco cinco NumType=Card
|
5 |
+
cinquenta cinquenta NumType=Card
|
6 |
+
dez dez NumType=Card
|
7 |
+
dezenove dezenove NumType=Card
|
8 |
+
dezesseis dezesseis NumType=Card
|
9 |
+
dezessete dezessete NumType=Card
|
10 |
+
dezoito dezoito NumType=Card
|
11 |
+
dois dois Gender=Masc|NumType=Card
|
12 |
+
doze doze NumType=Card
|
13 |
+
duas dois Gender=Fem|NumType=Card
|
14 |
+
duzentas duzentos Gender=Fem|NumType=Card
|
15 |
+
duzentos duzentos Gender=Masc|NumType=Card
|
16 |
+
meia meio Gender=Fem|NumType=Frac
|
17 |
+
meio meio Gender=Masc|NumType=Frac
|
18 |
+
mil mil NumType=Card
|
19 |
+
nove nove NumType=Card
|
20 |
+
novecentas novecentos Gender=Fem|NumType=Card
|
21 |
+
novecentos novecentos Gender=Masc|NumType=Card
|
22 |
+
noventa noventa NumType=Card
|
23 |
+
oitenta oitenta NumType=Card
|
24 |
+
oito oito NumType=Card
|
25 |
+
oitocentas oitocentos Gender=Fem|NumType=Card
|
26 |
+
oitocentos oitocentos Gender=Masc|NumType=Card
|
27 |
+
onze onze NumType=Card
|
28 |
+
quarenta quarenta NumType=Card
|
29 |
+
quatorze quatorze NumType=Card
|
30 |
+
quatro quatro NumType=Card
|
31 |
+
quatrocentas quatrocentos Gender=Fem|NumType=Card
|
32 |
+
quatrocentos quatrocentos Gender=Masc|NumType=Card
|
33 |
+
quinhentas quinhentos Gender=Fem|NumType=Card
|
34 |
+
quinhentos quinhentos Gender=Masc|NumType=Card
|
35 |
+
quinze quinze NumType=Card
|
36 |
+
seis seis NumType=Card
|
37 |
+
seiscentas seiscentos Gender=Fem|NumType=Card
|
38 |
+
seiscentos seiscentos Gender=Masc|NumType=Card
|
39 |
+
sessenta sessenta NumType=Card
|
40 |
+
sete sete NumType=Card
|
41 |
+
setecentas setecentos Gender=Fem|NumType=Card
|
42 |
+
setecentos setecentos Gender=Masc|NumType=Card
|
43 |
+
setenta setenta NumType=Card
|
44 |
+
terça terço Gender=Fem|NumType=Frac
|
45 |
+
terço terço Gender=Masc|NumType=Frac
|
46 |
+
treze treze NumType=Card
|
47 |
+
trezentas trezentos Gender=Fem|NumType=Card
|
48 |
+
trezentos trezentos Gender=Masc|NumType=Card
|
49 |
+
trinta trinta NumType=Card
|
50 |
+
três três NumType=Card
|
51 |
+
um um Gender=Masc|NumType=Card
|
52 |
+
uma um Gender=Fem|NumType=Card
|
53 |
+
vinte vinte NumType=Card
|
54 |
+
zero zero NumType=Card
|
portTokenizer/PRON.tsv
ADDED
@@ -0,0 +1,180 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
a o Case=Acc|Gender=Fem|Number=Sing|Person=3|PronType=Prs
|
2 |
+
a o Gender=Fem|Number=Sing|Person=3|PronType=Dem
|
3 |
+
algo algo Gender=Masc|Number=Sing|PronType=Ind
|
4 |
+
algum algum Gender=Masc|Number=Sing|PronType=Ind
|
5 |
+
alguma algum Gender=Fem|Number=Sing|PronType=Ind
|
6 |
+
algumas algum Gender=Fem|Number=Plur|PronType=Ind
|
7 |
+
alguns algum Gender=Masc|Number=Plur|PronType=Ind
|
8 |
+
alguém alguém Gender=Masc|Number=Sing|PronType=Ind
|
9 |
+
ambas ambos Gender=Fem|Number=Plur|PronType=Ind
|
10 |
+
ambos ambos Gender=Masc|Number=Plur|PronType=Ind
|
11 |
+
aquela aquele Gender=Fem|Number=Sing|PronType=Dem
|
12 |
+
aquelas aquele Gender=Fem|Number=Plur|PronType=Dem
|
13 |
+
aquele aquele Gender=Masc|Number=Sing|PronType=Dem
|
14 |
+
aqueles aquele Gender=Masc|Number=Plur|PronType=Dem
|
15 |
+
aquilo aquilo Gender=Masc|Number=Sing|PronType=Dem
|
16 |
+
as o Case=Acc|Gender=Fem|Number=Plur|Person=3|PronType=Prs
|
17 |
+
as o Gender=Fem|Number=Plur|Person=3|PronType=Dem
|
18 |
+
bulhufas bulhufas Gender=Masc|Number=Sing|PronType=Int
|
19 |
+
cada cada Number=Sing|PronType=Ind
|
20 |
+
demais demais Number=Plur|PronType=Ind
|
21 |
+
diversos diversos Number=Plur|PronType=Ind
|
22 |
+
ela ele Case=Nom|Gender=Fem|Number=Sing|Person=3|PronType=Prs
|
23 |
+
elas ele Case=Nom|Gender=Fem|Number=Plur|Person=3|PronType=Prs
|
24 |
+
ele ele Case=Nom|Gender=Masc|Number=Sing|Person=3|PronType=Prs
|
25 |
+
eles ele Case=Nom|Gender=Masc|Number=Plur|Person=3|PronType=Prs
|
26 |
+
essa esse Gender=Fem|Number=Sing|PronType=Dem
|
27 |
+
essas esse Gender=Fem|Number=Plur|PronType=Dem
|
28 |
+
esse esse Gender=Masc|Number=Sing|PronType=Dem
|
29 |
+
esses esse Gender=Masc|Number=Plur|PronType=Dem
|
30 |
+
esta este Gender=Fem|Number=Sing|PronType=Dem
|
31 |
+
estas este Gender=Fem|Number=Plur|PronType=Dem
|
32 |
+
este este Gender=Masc|Number=Sing|PronType=Dem
|
33 |
+
estes este Gender=Masc|Number=Plur|PronType=Dem
|
34 |
+
eu eu Case=Nom|Number=Sing|Person=1|PronType=Prs
|
35 |
+
excelência excelência Number=Sing|Person=2|PronType=Prs
|
36 |
+
excelências excelência Number=Plur|Person=2|PronType=Prs
|
37 |
+
isso isso Gender=Masc|Number=Sing|PronType=Dem
|
38 |
+
isto isto Gender=Masc|Number=Sing|PronType=Dem
|
39 |
+
la lo Case=Acc|Gender=Fem|Number=Sing|Person=3|PronType=Prs
|
40 |
+
las lo Case=Acc|Gender=Fem|Number=Plur|Person=3|PronType=Prs
|
41 |
+
lhe lhe Case=Dat|Number=Sing|Person=3|PronType=Prs
|
42 |
+
lhes lhe Case=Dat|Number=Plur|Person=3|PronType=Prs
|
43 |
+
lo lo Case=Acc|Gender=Masc|Number=Sing|Person=3|PronType=Prs
|
44 |
+
los lo Case=Acc|Gender=Masc|Number=Plur|Person=3|PronType=Prs
|
45 |
+
me me Case=Acc|Number=Sing|Person=1|PronType=Prs
|
46 |
+
me me Case=Dat|Number=Sing|Person=1|PronType=Prs
|
47 |
+
mesma mesmo Gender=Fem|Number=Sing|PronType=Dem
|
48 |
+
mesmas mesmo Gender=Fem|Number=Plur|PronType=Dem
|
49 |
+
mesmo mesmo Gender=Masc|Number=Sing|PronType=Dem
|
50 |
+
mesmos mesmo Gender=Masc|Number=Plur|PronType=Dem
|
51 |
+
meu meu Gender=Masc|Number=Sing|Person=1|Poss=Yes|PronType=Prs
|
52 |
+
meus meu Gender=Masc|Number=Plur|Person=1|Poss=Yes|PronType=Prs
|
53 |
+
mim mim Case=Dat|Number=Sing|Person=1|PronType=Prs
|
54 |
+
minha meu Gender=Fem|Number=Sing|Person=1|Poss=Yes|PronType=Prs
|
55 |
+
minhas meu Gender=Fem|Number=Plur|Person=1|Poss=Yes|PronType=Prs
|
56 |
+
muita muito Gender=Fem|Number=Sing|PronType=Ind
|
57 |
+
muitas muito Gender=Fem|Number=Plur|PronType=Ind
|
58 |
+
muito muito Gender=Masc|Number=Sing|PronType=Ind
|
59 |
+
muitos muito Gender=Masc|Number=Plur|PronType=Ind
|
60 |
+
muitíssima muitíssimo Gender=Fem|Number=Sing|PronType=Ind
|
61 |
+
muitíssimas muitíssimo Gender=Fem|Number=Plur|PronType=Ind
|
62 |
+
muitíssimo muitíssimo Gender=Masc|Number=Sing|PronType=Ind
|
63 |
+
muitíssimos muitíssimo Gender=Masc|Number=Plur|PronType=Ind
|
64 |
+
na na Case=Acc|Gender=Fem|Number=Sing|Person=3|PronType=Prs
|
65 |
+
nada nada Gender=Masc|Number=Sing|PronType=Ind
|
66 |
+
nadinha nadinha Gender=Masc|Number=Sing|PronType=Ind
|
67 |
+
nas nas Case=Acc|Gender=Fem|Number=Plur|Person=3|PronType=Prs
|
68 |
+
nenhum nenhum Gender=Masc|Number=Sing|PronType=Ind
|
69 |
+
nenhuma nenhum Gender=Fem|Number=Sing|PronType=Ind
|
70 |
+
ninguém ninguém Number=Sing|PronType=Ind
|
71 |
+
no no Case=Acc|Gender=Masc|Number=Sing|Person=3|PronType=Prs
|
72 |
+
nos nos Case=Acc|Number=Plur|Person=1|PronType=Prs
|
73 |
+
nos nos Case=Dat|Number=Plur|Person=1|PronType=Prs
|
74 |
+
nossa nosso Gender=Fem|Number=Sing|Person=1|Poss=Yes|PronType=Prs
|
75 |
+
nossas nosso Gender=Fem|Number=Plur|Person=1|Poss=Yes|PronType=Prs
|
76 |
+
nosso nosso Gender=Masc|Number=Sing|Person=1|Poss=Yes|PronType=Prs
|
77 |
+
nossos nosso Gender=Masc|Number=Plur|Person=1|Poss=Yes|PronType=Prs
|
78 |
+
nóis nós Case=Nom|Number=Plur|Person=1|PronType=Prs
|
79 |
+
nós nós Case=Nom|Number=Plur|Person=1|PronType=Prs
|
80 |
+
o o Case=Acc|Gender=Masc|Number=Sing|Person=3|PronType=Prs
|
81 |
+
o o Gender=Masc|Number=Sing|Person=3|PronType=Dem
|
82 |
+
o o PronType=Int
|
83 |
+
os o Case=Acc|Gender=Masc|Number=Plur|Person=3|PronType=Prs
|
84 |
+
os o Gender=Masc|Number=Plur|Person=3|PronType=Dem
|
85 |
+
outra outro Gender=Fem|Number=Sing|PronType=Ind
|
86 |
+
outras outro Gender=Fem|Number=Plur|PronType=Ind
|
87 |
+
outrem outrem Number=Sing|PronType=Ind
|
88 |
+
outro outro Gender=Masc|Number=Sing|PronType=Ind
|
89 |
+
outros outro Gender=Masc|Number=Plur|PronType=Ind
|
90 |
+
patavina patavina Gender=Masc|Number=Sing|PronType=Ind
|
91 |
+
patavinas patavina Gender=Masc|Number=Plur|PronType=Ind
|
92 |
+
pouca pouco Gender=Fem|Number=Sing|PronType=Ind
|
93 |
+
poucas pouco Gender=Fem|Number=Plur|PronType=Ind
|
94 |
+
pouco pouco Gender=Masc|Number=Sing|PronType=Ind
|
95 |
+
poucos pouco Gender=Masc|Number=Plur|PronType=Ind
|
96 |
+
pouquinha pouquinho Gender=Fem|Number=Sing|PronType=Ind
|
97 |
+
pouquinhas pouquinho Gender=Fem|Number=Plur|PronType=Ind
|
98 |
+
pouquinho pouquinho Gender=Masc|Number=Sing|PronType=Ind
|
99 |
+
pouquinhos pouquinho Gender=Masc|Number=Plur|PronType=Ind
|
100 |
+
pouquíssima pouquíssimo Gender=Fem|Number=Sing|PronType=Ind
|
101 |
+
pouquíssimas pouquíssimo Gender=Fem|Number=Plur|PronType=Ind
|
102 |
+
pouquíssimo pouquíssimo Gender=Masc|Number=Sing|PronType=Ind
|
103 |
+
pouquíssimos pouquíssimo Gender=Masc|Number=Plur|PronType=Ind
|
104 |
+
própria próprio Gender=Fem|Number=Sing|PronType=Dem
|
105 |
+
próprias próprio Gender=Fem|Number=Plur|PronType=Dem
|
106 |
+
próprio próprio Gender=Masc|Number=Sing|PronType=Dem
|
107 |
+
próprios próprio Gender=Masc|Number=Plur|PronType=Dem
|
108 |
+
quais qual Number=Plur|PronType=Int
|
109 |
+
quais qual Number=Plur|PronType=Rel
|
110 |
+
quaisquer qualquer Number=Plur|PronType=Ind
|
111 |
+
qual qual Number=Sing|PronType=Int
|
112 |
+
qual qual Number=Sing|PronType=Rel
|
113 |
+
qualquer qualquer Number=Sing|PronType=Ind
|
114 |
+
quanta quanto Gender=Fem|Number=Sing|PronType=Ind
|
115 |
+
quanta quanto Gender=Fem|Number=Sing|PronType=Int
|
116 |
+
quantas quanto Gender=Fem|Number=Plur|PronType=Ind
|
117 |
+
quantas quanto Gender=Fem|Number=Plur|PronType=Int
|
118 |
+
quantas quanto Gender=Fem|Number=Plur|PronType=Rel
|
119 |
+
quanto quanto PronType=Rel
|
120 |
+
quantos quanto Gender=Masc|Number=Plur|PronType=Ind
|
121 |
+
quantos quanto Gender=Masc|Number=Plur|PronType=Int
|
122 |
+
quantos quanto Gender=Masc|Number=Plur|PronType=Rel
|
123 |
+
que que PronType=Int
|
124 |
+
que que PronType=Rel
|
125 |
+
quem quem PronType=Ind
|
126 |
+
quem quem PronType=Int
|
127 |
+
quem quem PronType=Rel
|
128 |
+
quê quê PronType=Int
|
129 |
+
se se Case=Acc|Person=3|PronType=Prs
|
130 |
+
se se Case=Dat|Person=3|PronType=Prs
|
131 |
+
se se Case=Nom|Person=3|PronType=Prs
|
132 |
+
senhor senhor Case=Nom|Gender=Masc|Number=Sing|Person=2|PronType=Prs
|
133 |
+
senhora senhor Case=Nom|Gender=Fem|Number=Sing|Person=2|PronType=Prs
|
134 |
+
senhoras senhor Case=Nom|Gender=Fem|Number=Plur|Person=2|PronType=Prs
|
135 |
+
senhores senhor Case=Nom|Gender=Masc|Number=Plur|Person=2|PronType=Prs
|
136 |
+
senhorita senhorita Case=Nom|Gender=Fem|Number=Sing|Person=2|PronType=Prs
|
137 |
+
senhoritas senhorita Case=Nom|Gender=Fem|Number=Plur|Person=2|PronType=Prs
|
138 |
+
seu seu Gender=Masc|Number=Sing|Person=3|Poss=Yes|PronType=Prs
|
139 |
+
seus seu Gender=Masc|Number=Plur|Person=3|Poss=Yes|PronType=Prs
|
140 |
+
si si Case=Dat|Number=Sing|Person=3|PronType=Prs
|
141 |
+
sua seu Gender=Fem|Number=Sing|Person=3|Poss=Yes|PronType=Prs
|
142 |
+
suas seu Gender=Fem|Number=Plur|Person=3|Poss=Yes|PronType=Prs
|
143 |
+
tais tal Number=Plur|PronType=Dem
|
144 |
+
tais tal Number=Plur|PronType=Ind
|
145 |
+
tal tal Number=Sing|PronType=Dem
|
146 |
+
tal tal Number=Sing|PronType=Ind
|
147 |
+
tanta tanto Gender=Fem|Number=Sing|PronType=Ind
|
148 |
+
tantas tanto Gender=Fem|Number=Plur|PronType=Ind
|
149 |
+
tanto tanto Gender=Masc|Number=Sing|PronType=Ind
|
150 |
+
tantos tanto Gender=Masc|Number=Plur|PronType=Ind
|
151 |
+
te te Case=Acc|Number=Sing|Person=2|PronType=Prs
|
152 |
+
te te Case=Dat|Number=Sing|Person=2|PronType=Prs
|
153 |
+
teu teu Gender=Masc|Number=Sing|Person=2|Poss=Yes|PronType=Prs
|
154 |
+
teus teu Gender=Masc|Number=Plur|Person=2|Poss=Yes|PronType=Prs
|
155 |
+
ti ti Case=Dat|Number=Sing|Person=2|PronType=Prs
|
156 |
+
toda todo Gender=Fem|Number=Sing|PronType=Ind
|
157 |
+
todas todo Gender=Fem|Number=Plur|PronType=Ind
|
158 |
+
todo todo Gender=Masc|Number=Sing|PronType=Ind
|
159 |
+
todos todo Gender=Masc|Number=Plur|PronType=Ind
|
160 |
+
tu tu Case=Nom|Number=Sing|Person=2|PronType=Prs
|
161 |
+
tua teu Gender=Fem|Number=Sing|Person=2|Poss=Yes|PronType=Prs
|
162 |
+
tuas teu Gender=Fem|Number=Plur|Person=2|Poss=Yes|PronType=Prs
|
163 |
+
tudo tudo PronType=Ind
|
164 |
+
um um Gender=Masc|Number=Sing|PronType=Ind
|
165 |
+
uma um Gender=Fem|Number=Sing|PronType=Ind
|
166 |
+
umas um Gender=Fem|Number=Plur|PronType=Ind
|
167 |
+
uns um Gender=Masc|Number=Plur|PronType=Ind
|
168 |
+
você você Case=Nom|Number=Sing|Person=2|PronType=Prs
|
169 |
+
vocês você Case=Nom|Number=Plur|Person=2|PronType=Prs
|
170 |
+
vos vos Case=Acc|Number=Plur|Person=2|PronType=Prs
|
171 |
+
vos vos Case=Dat|Number=Plur|Person=2|PronType=Prs
|
172 |
+
vosmecê vosmecê Number=Sing|Person=2|PronType=Prs
|
173 |
+
vosmecês vosmecê Number=Plur|Person=2|PronType=Prs
|
174 |
+
vossa vosso Gender=Fem|Number=Sing|Person=2|Poss=Yes|PronType=Prs
|
175 |
+
vossas vosso Gender=Fem|Number=Plur|Person=2|Poss=Yes|PronType=Prs
|
176 |
+
vosso vosso Gender=Masc|Number=Sing|Person=2|Poss=Yes|PronType=Prs
|
177 |
+
vossos vosso Gender=Masc|Number=Plur|Person=2|Poss=Yes|PronType=Prs
|
178 |
+
várias vários Gender=Fem|Number=Plur|PronType=Ind
|
179 |
+
vários vários Gender=Masc|Number=Plur|PronType=Ind
|
180 |
+
vós vós Case=Nom|Number=Plur|Person=2|PronType=Prs
|
portTokenizer/README.md
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# portTokenizer
|
2 |
+
This repository has `portTok.py` program, a tokenizer for Portuguese text using Universal Dependencies (UD) format (CoNLL-U) to store the tokenized sentences.
|
3 |
+
|
4 |
+
This program receives as input a single textual file with the sentences, one per line, and generates a `.conllu` file with all sentences tokenized according to the CoNLL-U format.
|
5 |
+
|
6 |
+
The tokenization process performs usual tokenization tasks, as dealing with punctuations, but also performs the decomposition of contracted words (e.g. `da` is decontracted into `de`+ `a`), enclisis (e.g. `dizer-nos` is decomposed into `dizer`+`nos`), and mesoclisis (`ajudar-nos-ia` is decomposed into `ajudaria`+ `nos`), while the original form is kept in the CoNLL-U as a contracted token (see example below).
|
7 |
+
|
8 |
+
Another important feature of the tokenizer is the heuristic to disambiguate word forms that can either be a contracted word or not, as is the case of the pronoun `nos` and the contracted preposition and determiner `em`+`os`. The other dealt cases are the forms `consigo` and `com`+`si`, `pelo` and `por`+`o`, `pelos` and `por`+`os`, `pela` and `por`+`a`, `pelas` and `por`+`as`, and finally the case of `pra` that can either be an abbreviated form of `para` or `para`+`a`. To perform these disambiguations the tokenizer uses the PortiLexicon-UD, a Portuguese lexikon to examine the possible classes of neighboring words of the disambiguation candidates. An example of disambiguation is shown below in sentence examples that have one time the form `nos` employed as a pronoun and another time employed as the contracted preposition and determiner `em`+`o` (see example below).
|
9 |
+
|
10 |
+
This program also consults a list of known abbreviations in Portuguese that is read from the file `abbrev.txt`.
|
11 |
+
|
12 |
+
## Tokenization Example
|
13 |
+
|
14 |
+
For example, if the following sentences are the input of the tokenizer:
|
15 |
+
|
16 |
+
`A rua Dr. Flores é uma rua da cidade de Porto Alegre?`
|
17 |
+
|
18 |
+
`Provavelmente, 90% dos gaúchos vai dizer-nos que sim.`
|
19 |
+
|
20 |
+
`Até os que não moram nos bairros de Porto Alegre.`
|
21 |
+
|
22 |
+
The follwing CoNLL-U will be generated:
|
23 |
+
|
24 |
+
![conllu1](https://github.com/LuceleneL/portTokenizer/assets/81653183/45190e19-ecf1-451d-b7f2-f5dab7affeeb)
|
25 |
+
![conllu2](https://github.com/LuceleneL/portTokenizer/assets/81653183/d067587e-fa0d-4531-bbe5-178dcaf4ba5e)
|
26 |
+
![conllu3](https://github.com/LuceleneL/portTokenizer/assets/81653183/8a4bc06d-dcc4-4b5e-837c-d70993d7640b)
|
27 |
+
|
28 |
+
## Program Options
|
29 |
+
This program also performs, optionally, a verification of the matching punctuations (quotation marks, parenthesis, brackets, curly braces) eventually removing missing pairs.
|
30 |
+
|
31 |
+
Another option available is the removal of uppercased preambules in sentences, usually found as headlines in jornalistic texts, as for example the sentence:
|
32 |
+
|
33 |
+
`A CRONOLOGIA Governo concede visto de permanência a Battisti em 2015.`
|
34 |
+
|
35 |
+
Where the words `A CRONOLOGIA` is not a part of the sentence, and therefore the sentence can be trimmed by the removal of the headline words.
|
36 |
+
|
37 |
+
Another option available in the program is the definition of a model for the sentence identifier (SID) to be used in the produced CoNLL-U. For example if the model `S0000` is given, the sentences will be numbered as `S0001`, `S0002`, and so on.
|
38 |
+
|
39 |
+
## Usage example
|
40 |
+
`python3 portTok -o sents.conllu -m -t -s S0000 sents.txt`
|
41 |
+
|
42 |
+
This command fetch the input from files `sents.txt`, it performs the matching of paired punctuations (`-m`), performs the trim of sentence headlines (`-t`), and sets the SID model as `S0000` (`-s S0000`), saving the produced CoNLL-U in the file `sents.conllu` (`-o sents.conllu`).
|
43 |
+
|
44 |
+
# Contents
|
45 |
+
The main files in this repository are:
|
46 |
+
- `README.md` - this read explanatory file;
|
47 |
+
- `portTok.py` - the Python 3 program;
|
48 |
+
- `abbrev.txt` - list of known abbreviations in Portuguese;
|
49 |
+
- `sents.txt` - the input file to be used as example;
|
50 |
+
- `sents.conllu` - the output file generated reading the example input file.
|
51 |
+
|
52 |
+
As this program uses a Portuguese lexikon (PortLexicon-UD), this lexikon files are included here, namely:
|
53 |
+
- `lexikon.py` - a Python 3 package file with the `class UDlexPT`, plus the data files:
|
54 |
+
- `ADJ.tsv`
|
55 |
+
- `ADP.tsv`
|
56 |
+
- `ADV.tsv`
|
57 |
+
- `AUX.tsv`
|
58 |
+
- `CCONJ.tsv`
|
59 |
+
- `DET.tsv`
|
60 |
+
- `INTJ.tsv`
|
61 |
+
- `NOUN.tsv`
|
62 |
+
- `NUM.tsv`
|
63 |
+
- `PRON.tsv`
|
64 |
+
- `SCONJ.tsv`
|
65 |
+
- `VERB.tsv`
|
66 |
+
- `WORDmaster.txt`
|
67 |
+
|
68 |
+
# Acknowledgments
|
69 |
+
This work was carried out at the Center for Artificial Intelligence of the University of São Paulo (C4AI - [http://c4ai.inova.usp.br/](http://c4ai.inova.usp.br/)), with support by the São Paulo Research Foundation (FAPESP grant #2019/07665-4) and by the IBM Corporation. The project was also supported by the Ministry of Science, Technology and Innovation, with resources of Law N. 8.248, of October 23, 1991, within the scope of PPI-SOFTEX, coordinated by Softex and published as Residence in TIC 13, DOU 01245.010222/2022-44.
|
70 |
+
|
portTokenizer/SCONJ.tsv
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
caso caso _
|
2 |
+
como como _
|
3 |
+
conforme conforme _
|
4 |
+
conquanto conquanto _
|
5 |
+
contanto contanto _
|
6 |
+
embora embora _
|
7 |
+
enquanto enquanto _
|
8 |
+
pois pois _
|
9 |
+
porque porque _
|
10 |
+
quando quando _
|
11 |
+
quanto quanto _
|
12 |
+
que que _
|
13 |
+
se se _
|
14 |
+
segundo segundo _
|
portTokenizer/VERB.tsv
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:3c3ccbf94e0c6e7a1673722f6adceb36e75fde7a70fd5a1dc0edc5b7bcc69342
|
3 |
+
size 71016248
|
portTokenizer/WORDmaster.txt
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:0aadfccb3df079933e99f7034c76b8160942d91141e2159ce54aae53e80afb89
|
3 |
+
size 14866932
|
portTokenizer/__pycache__/lexikon.cpython-37.pyc
ADDED
Binary file (2.94 kB). View file
|
|
portTokenizer/abbrev.txt
ADDED
@@ -0,0 +1,397 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
dr.
|
2 |
+
dra.
|
3 |
+
sr.
|
4 |
+
sra.
|
5 |
+
prof.
|
6 |
+
profa.
|
7 |
+
Dr.
|
8 |
+
Dra.
|
9 |
+
Sr.
|
10 |
+
Sra.
|
11 |
+
Prof.
|
12 |
+
Profa.
|
13 |
+
DR.
|
14 |
+
DRA.
|
15 |
+
SR.
|
16 |
+
SRA.
|
17 |
+
PROF.
|
18 |
+
PROFA.
|
19 |
+
ilmo.
|
20 |
+
Ilmo.
|
21 |
+
ILMO.
|
22 |
+
bel.
|
23 |
+
Bel.
|
24 |
+
BEL.
|
25 |
+
eng.
|
26 |
+
Eng.
|
27 |
+
ENG.
|
28 |
+
reg.
|
29 |
+
Reg.
|
30 |
+
REG.
|
31 |
+
visc.
|
32 |
+
Visc.
|
33 |
+
VISC.
|
34 |
+
bar.
|
35 |
+
Bar.
|
36 |
+
BAR.
|
37 |
+
cond.
|
38 |
+
Cond.
|
39 |
+
COND.
|
40 |
+
séc.
|
41 |
+
Séc.
|
42 |
+
SÉC.
|
43 |
+
jr.
|
44 |
+
Jr.
|
45 |
+
JR.
|
46 |
+
ir.
|
47 |
+
Ir.
|
48 |
+
IR.
|
49 |
+
st.
|
50 |
+
St.
|
51 |
+
ST.
|
52 |
+
app.
|
53 |
+
App.
|
54 |
+
APP.
|
55 |
+
gov.
|
56 |
+
Gov.
|
57 |
+
GOV.
|
58 |
+
des.
|
59 |
+
Des.
|
60 |
+
DES.
|
61 |
+
gen.
|
62 |
+
Gen.
|
63 |
+
GEN.
|
64 |
+
gal.
|
65 |
+
Gal.
|
66 |
+
GAL.
|
67 |
+
cel.
|
68 |
+
Cel.
|
69 |
+
CEL.
|
70 |
+
col.
|
71 |
+
Col.
|
72 |
+
COL.
|
73 |
+
maj.
|
74 |
+
Maj.
|
75 |
+
MAJ.
|
76 |
+
ten.
|
77 |
+
Ten.
|
78 |
+
TEN.
|
79 |
+
cap.
|
80 |
+
Cap.
|
81 |
+
CAP.
|
82 |
+
capt.
|
83 |
+
Capt.
|
84 |
+
CAPT.
|
85 |
+
com.
|
86 |
+
Com.
|
87 |
+
COM.
|
88 |
+
brig.
|
89 |
+
Brig.
|
90 |
+
BRIG.
|
91 |
+
estac.
|
92 |
+
Estac.
|
93 |
+
ESTAC.
|
94 |
+
tel.
|
95 |
+
Tel.
|
96 |
+
TEL.
|
97 |
+
ave.
|
98 |
+
Ave.
|
99 |
+
AVE.
|
100 |
+
av.
|
101 |
+
Av.
|
102 |
+
AV.
|
103 |
+
trav.
|
104 |
+
Trav.
|
105 |
+
TRAV.
|
106 |
+
con.
|
107 |
+
Con.
|
108 |
+
CON.
|
109 |
+
jd.
|
110 |
+
Jd.
|
111 |
+
JD.
|
112 |
+
ed.
|
113 |
+
Ed.
|
114 |
+
ED.
|
115 |
+
lj.
|
116 |
+
Lj.
|
117 |
+
LJ.
|
118 |
+
cj.
|
119 |
+
Cj.
|
120 |
+
CJ.
|
121 |
+
apto.
|
122 |
+
Apto.
|
123 |
+
APTO.
|
124 |
+
apt.
|
125 |
+
Apt.
|
126 |
+
APT.
|
127 |
+
ingr.
|
128 |
+
Ingr.
|
129 |
+
INGR.
|
130 |
+
ap.
|
131 |
+
Ap.
|
132 |
+
AP.
|
133 |
+
dir.
|
134 |
+
Dir.
|
135 |
+
DIR.
|
136 |
+
min.
|
137 |
+
Min.
|
138 |
+
MIN.
|
139 |
+
sec.
|
140 |
+
Sec.
|
141 |
+
SEC.
|
142 |
+
kg.
|
143 |
+
Kg.
|
144 |
+
KG.
|
145 |
+
ml.
|
146 |
+
Ml.
|
147 |
+
ML.
|
148 |
+
km.
|
149 |
+
Km.
|
150 |
+
KM.
|
151 |
+
cm.
|
152 |
+
Cm.
|
153 |
+
CM.
|
154 |
+
vol.
|
155 |
+
Vol.
|
156 |
+
VOL.
|
157 |
+
PP.
|
158 |
+
pp.
|
159 |
+
Pp
|
160 |
+
pag.
|
161 |
+
Pag
|
162 |
+
PAG.
|
163 |
+
pág.
|
164 |
+
Pág
|
165 |
+
PÁG.
|
166 |
+
al.
|
167 |
+
Al.
|
168 |
+
AL.
|
169 |
+
etc.
|
170 |
+
i.e.
|
171 |
+
e.g.
|
172 |
+
cia.
|
173 |
+
Cia.
|
174 |
+
CIA.
|
175 |
+
co.
|
176 |
+
Co.
|
177 |
+
CO.
|
178 |
+
ltda.
|
179 |
+
Ltda.
|
180 |
+
LTDA.
|
181 |
+
ex.
|
182 |
+
Ex.
|
183 |
+
EX.
|
184 |
+
ac.
|
185 |
+
Ac.
|
186 |
+
AC.
|
187 |
+
dc.
|
188 |
+
Dc.
|
189 |
+
DC.
|
190 |
+
bros.
|
191 |
+
Bros.
|
192 |
+
BROS.
|
193 |
+
pq.
|
194 |
+
Pq.
|
195 |
+
PQ.
|
196 |
+
br.
|
197 |
+
Br.
|
198 |
+
BR.
|
199 |
+
cent.
|
200 |
+
Cent.
|
201 |
+
CENT.
|
202 |
+
ft.
|
203 |
+
Ft.
|
204 |
+
FT.
|
205 |
+
net.
|
206 |
+
Net.
|
207 |
+
NET.
|
208 |
+
no.
|
209 |
+
No.
|
210 |
+
NO.
|
211 |
+
nr.
|
212 |
+
Nr.
|
213 |
+
NR.
|
214 |
+
tr.
|
215 |
+
Tr.
|
216 |
+
TR.
|
217 |
+
mi.
|
218 |
+
Mi.
|
219 |
+
MI.
|
220 |
+
sta.
|
221 |
+
Sta.
|
222 |
+
STA.
|
223 |
+
sto.
|
224 |
+
Sto.
|
225 |
+
STO.
|
226 |
+
int.
|
227 |
+
Int.
|
228 |
+
INT.
|
229 |
+
inf.
|
230 |
+
Inf.
|
231 |
+
INF.
|
232 |
+
cult.
|
233 |
+
Cult.
|
234 |
+
CULT.
|
235 |
+
op.
|
236 |
+
Op.
|
237 |
+
OP.
|
238 |
+
aprox.
|
239 |
+
Aprox.
|
240 |
+
APROX.
|
241 |
+
it.
|
242 |
+
It.
|
243 |
+
IT.
|
244 |
+
ex.
|
245 |
+
Ex.
|
246 |
+
EX.
|
247 |
+
flex.
|
248 |
+
Flex.
|
249 |
+
FLEX.
|
250 |
+
ass.
|
251 |
+
Ass.
|
252 |
+
ASS.
|
253 |
+
pç.
|
254 |
+
Pç.
|
255 |
+
PÇ.
|
256 |
+
ind.
|
257 |
+
Ind.
|
258 |
+
IND.
|
259 |
+
vl.
|
260 |
+
Vl.
|
261 |
+
VL.
|
262 |
+
imp.
|
263 |
+
Imp.
|
264 |
+
IMP.
|
265 |
+
emp.
|
266 |
+
Emp.
|
267 |
+
EMP.
|
268 |
+
esq.
|
269 |
+
Esq.
|
270 |
+
ESQ.
|
271 |
+
dir.
|
272 |
+
Dir.
|
273 |
+
DIR.
|
274 |
+
ingr.
|
275 |
+
Ingr.
|
276 |
+
INGR.
|
277 |
+
pça.
|
278 |
+
Pça.
|
279 |
+
PÇA.
|
280 |
+
art.
|
281 |
+
Art.
|
282 |
+
ART.
|
283 |
+
sec.
|
284 |
+
Sec.
|
285 |
+
SEC.
|
286 |
+
a.
|
287 |
+
A.
|
288 |
+
b.
|
289 |
+
B.
|
290 |
+
c.
|
291 |
+
C.
|
292 |
+
d.
|
293 |
+
D.
|
294 |
+
e.
|
295 |
+
E.
|
296 |
+
f.
|
297 |
+
F.
|
298 |
+
g.
|
299 |
+
G.
|
300 |
+
h.
|
301 |
+
H.
|
302 |
+
i.
|
303 |
+
I.
|
304 |
+
j.
|
305 |
+
J.
|
306 |
+
k.
|
307 |
+
K.
|
308 |
+
l.
|
309 |
+
L.
|
310 |
+
m.
|
311 |
+
M.
|
312 |
+
n.
|
313 |
+
N.
|
314 |
+
o.
|
315 |
+
O.
|
316 |
+
p.
|
317 |
+
P.
|
318 |
+
q.
|
319 |
+
Q.
|
320 |
+
r.
|
321 |
+
R.
|
322 |
+
s.
|
323 |
+
S.
|
324 |
+
t.
|
325 |
+
T.
|
326 |
+
u.
|
327 |
+
U.
|
328 |
+
v.
|
329 |
+
V.
|
330 |
+
w.
|
331 |
+
W.
|
332 |
+
x.
|
333 |
+
X.
|
334 |
+
y.
|
335 |
+
Y.
|
336 |
+
z.
|
337 |
+
Z.
|
338 |
+
seg.
|
339 |
+
ter.
|
340 |
+
qua.
|
341 |
+
qui.
|
342 |
+
sex.
|
343 |
+
sab.
|
344 |
+
sáb.
|
345 |
+
dom.
|
346 |
+
Seg.
|
347 |
+
Ter.
|
348 |
+
Qua.
|
349 |
+
Qui.
|
350 |
+
Sex.
|
351 |
+
Sab.
|
352 |
+
Sáb.
|
353 |
+
Dom.
|
354 |
+
SEG.
|
355 |
+
TER.
|
356 |
+
QUA.
|
357 |
+
QUI.
|
358 |
+
SEX.
|
359 |
+
SAB.
|
360 |
+
SÁB.
|
361 |
+
DOM.
|
362 |
+
jan.
|
363 |
+
fev.
|
364 |
+
mar.
|
365 |
+
abr.
|
366 |
+
mai.
|
367 |
+
jun.
|
368 |
+
jul.
|
369 |
+
ago.
|
370 |
+
sep.
|
371 |
+
out.
|
372 |
+
nov.
|
373 |
+
dez.
|
374 |
+
Jan.
|
375 |
+
Fev.
|
376 |
+
Mar.
|
377 |
+
Abr.
|
378 |
+
Mai.
|
379 |
+
Jun.
|
380 |
+
Jul.
|
381 |
+
Ago.
|
382 |
+
Sep.
|
383 |
+
Out.
|
384 |
+
Nov.
|
385 |
+
Dez.
|
386 |
+
JAN.
|
387 |
+
FEV.
|
388 |
+
MAR.
|
389 |
+
ABR.
|
390 |
+
MAI.
|
391 |
+
JUN.
|
392 |
+
JUL.
|
393 |
+
AGO.
|
394 |
+
SET.
|
395 |
+
OUT.
|
396 |
+
NOV.
|
397 |
+
DEZ.
|
portTokenizer/lexikon.py
ADDED
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
# class UDlexPT - the PortiLexicon-UD it reads dic files from the current directory
|
3 |
+
# - it should contain WORDmaster.txt plus the 12 tags .tsv files
|
4 |
+
#
|
5 |
+
# member functions:
|
6 |
+
# UDlexPT - the constructor
|
7 |
+
# sget(self, word): # get the entries for a word - returns a list with 3-tuples (empty if absent)
|
8 |
+
# exists(self, word): # returns True if the word exists
|
9 |
+
# pget(self, word, tag): # get the entries of a word for a specific tag - return similar to sget
|
10 |
+
# pexists(self, word, tag): # returns True if this word has at least one entry for tag
|
11 |
+
# theTags(self, word): # returns an array of all tags of a word - empty if absent of the lexicon
|
12 |
+
|
13 |
+
from os import path
|
14 |
+
|
15 |
+
class UDlexPT:
|
16 |
+
def __init__(self): # creates the lexicon
|
17 |
+
self.tags = ["ADJ", "ADP", "ADV", "AUX", "CCONJ", "DET", "INTJ", \
|
18 |
+
"NOUN", "NUM", "PRON", "SCONJ", "VERB"]
|
19 |
+
self.master = {}
|
20 |
+
self.words = 0
|
21 |
+
self.entries = 0
|
22 |
+
nEnt = [0]*len(self.tags)
|
23 |
+
nNAE = [0]*len(self.tags)
|
24 |
+
nEnD = [0]*len(self.tags)
|
25 |
+
infile = open(path.dirname(__file__)+"/WORDmaster.txt")
|
26 |
+
for line in infile:
|
27 |
+
buf = line[:-1].split(",")
|
28 |
+
tg = buf[1].split(" ")
|
29 |
+
self.master.update({buf[0]:tg})
|
30 |
+
self.words += 1
|
31 |
+
### compute totals
|
32 |
+
if (len(tg) == 1):
|
33 |
+
nNAE[self.tags.index(tg[0])] += 1
|
34 |
+
for t in tg:
|
35 |
+
nEnt[self.tags.index(t)] += 1
|
36 |
+
infile.close()
|
37 |
+
self.t = []
|
38 |
+
i = 0
|
39 |
+
for t in self.tags:
|
40 |
+
self.t.append({})
|
41 |
+
infile = open(path.dirname(__file__)+"/"+t+".tsv")
|
42 |
+
for line in infile:
|
43 |
+
buf = line[:-1].split("\t")
|
44 |
+
entry = self.t[i].get(buf[0],"none")
|
45 |
+
if (entry == "none"):
|
46 |
+
self.t[i].update({buf[0]:[[buf[1],buf[2]]]})
|
47 |
+
else:
|
48 |
+
entry.append([buf[1],buf[2]])
|
49 |
+
self.t[i].update({buf[0]:entry})
|
50 |
+
self.entries += 1
|
51 |
+
nEnD[self.tags.index(t)] += 1
|
52 |
+
infile.close()
|
53 |
+
i += 1
|
54 |
+
print("UDlexPT read with", self.words, "distinct words and", self.entries, "entries")
|
55 |
+
print("{:5} & {:6} & {:6} & {:6} \\\\ \\hline".format("tag","total","amb","non-amb"))
|
56 |
+
accW, accN, accE = 0, 0, 0
|
57 |
+
for t in self.tags:
|
58 |
+
print("{:5} & {:6} & {:6} & {:6} & {:6} \\\\ \\hline".format(t, \
|
59 |
+
nEnt[self.tags.index(t)], \
|
60 |
+
nEnt[self.tags.index(t)]-nNAE[self.tags.index(t)], \
|
61 |
+
nNAE[self.tags.index(t)], \
|
62 |
+
nEnD[self.tags.index(t)]))
|
63 |
+
accW += nEnt[self.tags.index(t)]
|
64 |
+
accN += nNAE[self.tags.index(t)]
|
65 |
+
accE += nEnD[self.tags.index(t)]
|
66 |
+
print("{:5} & {:6} & {:6} & {:6} & {:6} \\\\ \\hline".format("total", self.words, self.words-accN, accN, accE))
|
67 |
+
def sget(self, word): # get the entries for a word
|
68 |
+
tags = self.master.get(word,"none")
|
69 |
+
if (tags == "none"):
|
70 |
+
return []
|
71 |
+
else:
|
72 |
+
ans = []
|
73 |
+
for t in tags:
|
74 |
+
a = self.t[self.tags.index(t)].get(word)
|
75 |
+
#if (a == None):
|
76 |
+
# input("fix WORDmaster for: "+word)
|
77 |
+
for n in a:
|
78 |
+
ans.append([n[0],t,n[1]])
|
79 |
+
return ans
|
80 |
+
def exists(self, word): # returns True if the word exists
|
81 |
+
tags = self.master.get(word,"none")
|
82 |
+
if (tags == "none"):
|
83 |
+
return False
|
84 |
+
else:
|
85 |
+
return True
|
86 |
+
def pget(self, word, tag): # get the entries of a word for a specific tag
|
87 |
+
a = self.t[self.tags.index(tag)].get(word,"none")
|
88 |
+
if (a == "none"):
|
89 |
+
return []
|
90 |
+
else:
|
91 |
+
ans = []
|
92 |
+
for n in a:
|
93 |
+
ans.append([n[0],tag,n[1]])
|
94 |
+
return ans
|
95 |
+
def pexists(self, word, tag): # returns True if this word has at least one entry for tag
|
96 |
+
a = self.t[self.tags.index(tag)].get(word,"none")
|
97 |
+
if (a == "none"):
|
98 |
+
return False
|
99 |
+
else:
|
100 |
+
return True
|
101 |
+
def theTags(self, word): # returns an array of all tags of a word - empty if absent of the dictionary
|
102 |
+
ts = self.master.get(word,"none")
|
103 |
+
if (ts == "none"):
|
104 |
+
return []
|
105 |
+
else:
|
106 |
+
return ts
|
107 |
+
|
portTokenizer/portTok.py
ADDED
@@ -0,0 +1,745 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# portTokenizer - tokenizador de sentenças em Portugues para um arquivo CoNLL-U
|
2 |
+
#
|
3 |
+
# Este programa recebe um arquivo de entrada textual com uma sentença
|
4 |
+
# por linha e gera um arquivo CoNLL-U devidamente tokenizado.
|
5 |
+
#
|
6 |
+
# Este programa utiliza um léxico de Português, PortiLexicon-UD através da
|
7 |
+
# chamada da classe UDlexPT incluída no arquivo "lexikon.py" disponível
|
8 |
+
# em conjunto com este arquivo ("portTok.py") e com os arquivos textuais
|
9 |
+
# do léxico ("ADJ.tsv", "ADP.tsv", "ADV.tsv", "AUX.tsv", "CCONJ.tsv",
|
10 |
+
# "DET.tsv", "INTJ.tsv", "NOUN.tsv", "NUM.tsv", "PRON.tsv", "SCONJ.tsv",
|
11 |
+
# "VERB.tsv", "WORDmaster.txt").
|
12 |
+
#
|
13 |
+
# Opções:
|
14 |
+
#
|
15 |
+
# -h help
|
16 |
+
# -o output file
|
17 |
+
# -m matches the paired punctuations
|
18 |
+
# -t trims headlines (heuristic)
|
19 |
+
# -s sentence id (sid) model
|
20 |
+
#
|
21 |
+
# Exemplo de utilização:
|
22 |
+
#
|
23 |
+
# portTok -o sents.conllu -m -t -s S0000 sents.txt
|
24 |
+
#
|
25 |
+
# Busca as sentenças no arquivo 'sents.txt',
|
26 |
+
# corrige pontuações casadas (aspas, parenteses, etc),
|
27 |
+
# remove possíveis MANCHETES que precedem as frases,
|
28 |
+
# usa S0000 como modelo de identificador de sentença e
|
29 |
+
# salva as sentenças devidamente tokenizadas no arquivo 'sents.conllu'
|
30 |
+
#
|
31 |
+
# last edit: 01/21/2024
|
32 |
+
# created by Lucelene Lopes - [email protected]
|
33 |
+
|
34 |
+
import sys, os
|
35 |
+
import lexikon
|
36 |
+
lex = lexikon.UDlexPT()
|
37 |
+
|
38 |
+
|
39 |
+
#################################################
|
40 |
+
### Captura de argumentos da linha de comando
|
41 |
+
#################################################
|
42 |
+
def parseOptions(arguments):
|
43 |
+
# default options
|
44 |
+
output_file, input_file, match, trim, model = "", [], False, False, "S0000"
|
45 |
+
i = 1
|
46 |
+
while i < len(arguments):
|
47 |
+
if (arguments[i][0] == "-"):
|
48 |
+
# ajuda (help) - mostra ajuda, nada é executado
|
49 |
+
if ((arguments[i][1] == "h") and (len(arguments[i])==2)) or \
|
50 |
+
(arguments[i] == "-help"):
|
51 |
+
print("Opções:\n-h ajuda\n-o arquivo de saída", \
|
52 |
+
"-m corrige pontuações casadas (aspas, parenteses, etc)", \
|
53 |
+
"-t remove possíveis MANCHETES que precedem as frases", \
|
54 |
+
"Exemplo de utilização:", \
|
55 |
+
"portTok -o sents.conllu -m -t -s S0000 sents.txt", \
|
56 |
+
"Busca as sentenças no arquivo 'sents.txt',", \
|
57 |
+
" corrige pontuações casadas (aspas, parenteses, etc),", \
|
58 |
+
" remove possíveis MANCHETES que precedem as frases", \
|
59 |
+
" usa S0000 como modelo de identificador de sentença e"
|
60 |
+
" salva as sentenças devidamente tokenizadas no arquivo 'sents.conllu''", \
|
61 |
+
sep="\n")
|
62 |
+
return None
|
63 |
+
# opção de correção (matching) de pontuações pareadas
|
64 |
+
elif ((arguments[i][1] == "m") and (len(arguments[i])==2)) or \
|
65 |
+
(arguments[i] == "-match"):
|
66 |
+
match = True
|
67 |
+
i += 1
|
68 |
+
# opção de remoção (trim) de manchetes no início da sentença
|
69 |
+
elif ((arguments[i][1] == "t") and (len(arguments[i])==2)) or \
|
70 |
+
(arguments[i] == "-trim"):
|
71 |
+
trim = True
|
72 |
+
i += 1
|
73 |
+
# opção de modelo de identificador de sentença (sid) - 0 para sem limite
|
74 |
+
elif ((arguments[i][1] == "s") and (len(arguments[i])==2)) or \
|
75 |
+
(arguments[i] == "-sid"):
|
76 |
+
try:
|
77 |
+
model = arguments[i+1]
|
78 |
+
i += 2
|
79 |
+
except:
|
80 |
+
print("modelo de identificador de sentença não informado - assumindo S000")
|
81 |
+
i += 1
|
82 |
+
# opção de arquivo de saída (um nome de arquivo)
|
83 |
+
elif ((arguments[i][1] == "o") and (len(arguments[i])==2)) or \
|
84 |
+
(arguments[i] == "-output"):
|
85 |
+
output_file = arguments[i+1]
|
86 |
+
i += 2
|
87 |
+
# opções inválidas - nada é executado
|
88 |
+
else:
|
89 |
+
print("Opção {} inválida, demais opções ignoradas, por favor execute novamente".format(arguments[i]))
|
90 |
+
return None
|
91 |
+
# arquivo de entrada - só é incluído se existir
|
92 |
+
else:
|
93 |
+
if (os.path.isfile(arguments[i])):
|
94 |
+
input_file = arguments[i]
|
95 |
+
i += 1
|
96 |
+
else:
|
97 |
+
print("O arquivo {} não foi encontrado, por favor execute novamente".format(arguments[i]))
|
98 |
+
return None
|
99 |
+
return [output_file, input_file, match, trim, model]
|
100 |
+
|
101 |
+
#############################################################################
|
102 |
+
# Increment a name index
|
103 |
+
#############################################################################
|
104 |
+
def nextName(name):
|
105 |
+
# increment the digits from right to left
|
106 |
+
ans = ""
|
107 |
+
while name != "":
|
108 |
+
digit, name = name[-1], name[:-1]
|
109 |
+
if digit == "9":
|
110 |
+
ans = "0" + ans
|
111 |
+
elif digit == "8":
|
112 |
+
ans = "9" + ans
|
113 |
+
return name+ans
|
114 |
+
elif digit == "7":
|
115 |
+
ans = "8" + ans
|
116 |
+
return name+ans
|
117 |
+
elif digit == "6":
|
118 |
+
ans = "7" + ans
|
119 |
+
return name+ans
|
120 |
+
elif digit == "5":
|
121 |
+
ans = "6" + ans
|
122 |
+
return name+ans
|
123 |
+
elif digit == "4":
|
124 |
+
ans = "5" + ans
|
125 |
+
return name+ans
|
126 |
+
elif digit == "3":
|
127 |
+
ans = "4" + ans
|
128 |
+
return name+ans
|
129 |
+
elif digit == "2":
|
130 |
+
ans = "3" + ans
|
131 |
+
return name+ans
|
132 |
+
elif digit == "1":
|
133 |
+
ans = "2" + ans
|
134 |
+
return name+ans
|
135 |
+
elif digit == "0":
|
136 |
+
ans = "1" + ans
|
137 |
+
return name+ans
|
138 |
+
else:
|
139 |
+
ans = "1" + ans
|
140 |
+
return name+ans
|
141 |
+
return "overflow"+ans
|
142 |
+
|
143 |
+
#############################################################################
|
144 |
+
# Trim the unwanted bits at the sentence - trimIt (step 1)
|
145 |
+
#############################################################################
|
146 |
+
def trimIt(s):
|
147 |
+
# generate the bits separated by blanks trimming blanks before, after, and multiples
|
148 |
+
bits = s.strip().replace(" ", " ").replace(" ", " ").split(" ")
|
149 |
+
start = 0
|
150 |
+
# remove itemize symbols
|
151 |
+
if (bits[0] in ["*", "★", "-", "—", "–", ">", "."]):
|
152 |
+
if (len(bits) == 1):
|
153 |
+
return ""
|
154 |
+
else:
|
155 |
+
start = 1
|
156 |
+
# remove (BELO HORIZONTE) ... kind
|
157 |
+
if (bits[start][0] == "(") and (bits[-1][-1] != ")"):
|
158 |
+
for i in range(len(bits)):
|
159 |
+
if (bits[i][-1] == ")"):
|
160 |
+
start = i+1
|
161 |
+
break
|
162 |
+
# remove CRONOLOGIA .... kind
|
163 |
+
i = start
|
164 |
+
while (i<len(bits)):
|
165 |
+
if (bits[i].isupper()):
|
166 |
+
start = i
|
167 |
+
i += 1
|
168 |
+
else:
|
169 |
+
break
|
170 |
+
if ((len(bits[start]) > 1) and (bits[start].isupper())) and \
|
171 |
+
(start+1 < len(bits)): # make sure the next after all upper
|
172 |
+
if (bits[start+1][0].isupper()): # is not a beginning of sentence
|
173 |
+
start += 1
|
174 |
+
ans = bits[start]
|
175 |
+
for i in range(start+1,len(bits)):
|
176 |
+
ans += " "+bits[i]
|
177 |
+
return ans
|
178 |
+
|
179 |
+
#############################################################################
|
180 |
+
# Clear matching punctuations - punctIt (step 2)
|
181 |
+
#############################################################################
|
182 |
+
def punctIt(s):
|
183 |
+
def notAlpha(sent):
|
184 |
+
ans = True
|
185 |
+
for c in sent:
|
186 |
+
if c.isalpha():
|
187 |
+
ans = False
|
188 |
+
break
|
189 |
+
return ans
|
190 |
+
doubleQuotes = s.count('"')
|
191 |
+
singleQuotes = s.count("'")
|
192 |
+
openParentes = s.count("(")
|
193 |
+
closParentes = s.count(")")
|
194 |
+
openBrackets = s.count("[")
|
195 |
+
closBrackets = s.count("]")
|
196 |
+
openCurBrace = s.count("{")
|
197 |
+
closCurBrace = s.count("}")
|
198 |
+
openAligator = s.count("<")
|
199 |
+
closAligator = s.count(">")
|
200 |
+
if ((doubleQuotes == 2 ) and (s[0] == '"') and (s[-1] == '"')) or \
|
201 |
+
((singleQuotes == 2 ) and (s[0] == "'") and (s[-1] == "'")) or \
|
202 |
+
((openParentes == 1 ) and (closParentes == 1 ) and (s[0] == "(") and (s[-1] == ")")) or \
|
203 |
+
((openBrackets == 1 ) and (closBrackets == 1 ) and (s[0] == "[") and (s[-1] == "]")) or \
|
204 |
+
((openCurBrace == 1 ) and (closCurBrace == 1 ) and (s[0] == "{") and (s[-1] == "}")) or \
|
205 |
+
((openAligator == 1 ) and (closAligator == 1 ) and (s[0] == "<") and (s[-1] == ">")):
|
206 |
+
S = s[1:-1]
|
207 |
+
else:
|
208 |
+
S = s
|
209 |
+
if (doubleQuotes % 2 != 0):
|
210 |
+
S = S.replace('"', '')
|
211 |
+
if (singleQuotes % 2 != 0):
|
212 |
+
S = S.replace("'", "")
|
213 |
+
if (openParentes != closParentes):
|
214 |
+
S = S.replace("(", "").replace(")", "")
|
215 |
+
if (openBrackets != closBrackets):
|
216 |
+
S = S.replace("[", "").replace("]", "")
|
217 |
+
if (openCurBrace != closCurBrace):
|
218 |
+
S = S.replace("{", "").replace("}", "")
|
219 |
+
if (openAligator != closAligator):
|
220 |
+
S = S.replace("<", "").replace(">", "")
|
221 |
+
if (S == "") or (notAlpha(S)):
|
222 |
+
return ""
|
223 |
+
elif (S[-2:] == "..") and S[-3:] != "...":
|
224 |
+
S = S[:-2]+"."
|
225 |
+
elif (S[-2:] in [":.", ";."]):
|
226 |
+
S = S[:-2]+"."
|
227 |
+
elif (S[-1] not in [".", "!", "?", ":", ";"]):
|
228 |
+
if (S[-1] in ["'", '"', ")", "]", "}", ">"]) and (S[-2] in [".", "!", "?", ":", ";"]):
|
229 |
+
S = S[:-2]+S[-1]+S[-2]
|
230 |
+
else:
|
231 |
+
S = S+"."
|
232 |
+
return S.replace(" ", " ").replace(" ", " ")
|
233 |
+
|
234 |
+
#############################################################################
|
235 |
+
# Decide if ambiguous tokens are contracted or not - desambIt (within step 3)
|
236 |
+
#############################################################################
|
237 |
+
def desambIt(token, bits, i, lastField, s, SID, tokens):
|
238 |
+
def stripWord(w):
|
239 |
+
start, end = 0, len(w)
|
240 |
+
for j in range(len(w)):
|
241 |
+
if (not w[j].isalpha()):
|
242 |
+
start = j+1
|
243 |
+
else:
|
244 |
+
break
|
245 |
+
for j in range(start,len(w)):
|
246 |
+
if (not w[j].isalpha()):
|
247 |
+
end = j
|
248 |
+
break
|
249 |
+
return w[start:end].lower()
|
250 |
+
# nos - em os - nos
|
251 |
+
if (token.lower() == "nos"):
|
252 |
+
if (i > 0):
|
253 |
+
preVERB = lex.pexists(stripWord(bits[i-1]), "VERB") or lex.pexists(stripWord(bits[i-1]), "AUX")
|
254 |
+
else:
|
255 |
+
preVERB = False
|
256 |
+
if (i < len(bits)-1):
|
257 |
+
posVERB = lex.pexists(stripWord(bits[i+1]), "VERB") or lex.pexists(stripWord(bits[i+1]), "AUX")
|
258 |
+
posNOUNDET = lex.pexists(stripWord(bits[i+1]), "NOUN") or lex.pexists(stripWord(bits[i+1]), "ADJ") or lex.pexists(stripWord(bits[i+1]), "DET")
|
259 |
+
if (posNOUNDET):
|
260 |
+
possible = lex.pget(stripWord(bits[i+1]), "NOUN")+lex.pget(stripWord(bits[i+1]), "ADJ")+lex.pget(stripWord(bits[i+1]), "DET")
|
261 |
+
agree = False
|
262 |
+
for feats in possible:
|
263 |
+
if ("Number=Sing" not in feats[2]) and ("Gender=Fem" not in feats[2]):
|
264 |
+
agree = True
|
265 |
+
break
|
266 |
+
if (not agree):
|
267 |
+
posNOUNDET = False
|
268 |
+
else:
|
269 |
+
posVERB = False
|
270 |
+
posNOUNDET = False
|
271 |
+
if (posVERB and not posNOUNDET):
|
272 |
+
tokens.append([token, lastField]) # don't break
|
273 |
+
else:
|
274 |
+
tokens.append([token, "c"+lastField]) # break
|
275 |
+
if (token.isupper()):
|
276 |
+
tokens.append(["EM","_"])
|
277 |
+
tokens.append(["OS","_"])
|
278 |
+
elif (token[0].isupper()):
|
279 |
+
tokens.append(["Em","_"])
|
280 |
+
tokens.append(["os","_"])
|
281 |
+
else:
|
282 |
+
tokens.append(["em","_"])
|
283 |
+
tokens.append(["os","_"])
|
284 |
+
# consigo - com si - consigo
|
285 |
+
elif (token.lower() == "consigo"):
|
286 |
+
if (i > 0):
|
287 |
+
prePRONADV = lex.pexists(stripWord(bits[i-1]), "PRON") or lex.pexists(stripWord(bits[i-1]), "ADV")
|
288 |
+
else:
|
289 |
+
prePRONADV = False
|
290 |
+
if (i < len(bits)-1):
|
291 |
+
posVERB = lex.pexists(stripWord(bits[i+1]), "VERB") or lex.pexists(stripWord(bits[i+1]), "AUX")
|
292 |
+
else:
|
293 |
+
posVERB = False
|
294 |
+
if (i < len(bits)-2):
|
295 |
+
doQue = ((bits[i+1] == "do") and (bits[i+2] == "que")) or ((bits[i+1] == "sua"))
|
296 |
+
else:
|
297 |
+
doQue = False
|
298 |
+
if ((prePRONADV) or (posVERB)) and (not doQue):
|
299 |
+
tokens.append([token, lastField]) # don't break
|
300 |
+
else:
|
301 |
+
tokens.append([token, "c"+lastField]) # break
|
302 |
+
if (token.isupper()):
|
303 |
+
tokens.append(["COM","_"])
|
304 |
+
tokens.append(["SI","_"])
|
305 |
+
elif (token[0].isupper()):
|
306 |
+
tokens.append(["Com","_"])
|
307 |
+
tokens.append(["si","_"])
|
308 |
+
else:
|
309 |
+
tokens.append(["com","_"])
|
310 |
+
tokens.append(["si","_"])
|
311 |
+
# pra - para a - para
|
312 |
+
elif (token.lower() == "pra"):
|
313 |
+
if (i < len(bits)-1):
|
314 |
+
posNOUNDET = lex.pexists(stripWord(bits[i+1]), "NOUN") or lex.pexists(stripWord(bits[i+1]), "ADJ") or lex.pexists(stripWord(bits[i+1]), "DET")
|
315 |
+
if (posNOUNDET):
|
316 |
+
possible = lex.pget(stripWord(bits[i+1]), "NOUN")+lex.pget(stripWord(bits[i+1]), "ADJ")+lex.pget(stripWord(bits[i+1]), "DET")
|
317 |
+
agree = False
|
318 |
+
for feats in possible:
|
319 |
+
if ("Number=Plur" not in feats[2]) and ("Gender=Masc" not in feats[2]):
|
320 |
+
agree = True
|
321 |
+
break
|
322 |
+
if (not agree):
|
323 |
+
posNOUNDET = False
|
324 |
+
else:
|
325 |
+
posNOUNDET = False
|
326 |
+
if (posNOUNDET):
|
327 |
+
tokens.append([token, "c"+lastField]) # break
|
328 |
+
if (token.isupper()):
|
329 |
+
tokens.append(["PARA","_"])
|
330 |
+
tokens.append(["A","_"])
|
331 |
+
elif (token[0].isupper()):
|
332 |
+
tokens.append(["Para","_"])
|
333 |
+
tokens.append(["a","_"])
|
334 |
+
else:
|
335 |
+
tokens.append(["para","_"])
|
336 |
+
tokens.append(["a","_"])
|
337 |
+
else:
|
338 |
+
tokens.append([token, lastField]) # don't break
|
339 |
+
# pela - por a - pela
|
340 |
+
elif (token.lower() == "pela"):
|
341 |
+
if (i < len(bits)-1):
|
342 |
+
posNOUNDET = lex.pexists(stripWord(bits[i+1]), "NOUN") or lex.pexists(stripWord(bits[i+1]), "ADJ") or lex.pexists(stripWord(bits[i+1]), "NUM") or lex.pexists(stripWord(bits[i+1]), "DET")
|
343 |
+
properNOUNDIGIT = bits[i+1][0].isupper() or bits[i+1][0].isnumeric()
|
344 |
+
else:
|
345 |
+
posNOUNDET = False
|
346 |
+
properNOUNDIGIT = False
|
347 |
+
if (posNOUNDET) or (properNOUNDIGIT):
|
348 |
+
tokens.append([token, "c"+lastField]) # break
|
349 |
+
if (token.isupper()):
|
350 |
+
tokens.append(["POR","_"])
|
351 |
+
tokens.append(["A","_"])
|
352 |
+
elif (token[0].isupper()):
|
353 |
+
tokens.append(["Por","_"])
|
354 |
+
tokens.append(["a","_"])
|
355 |
+
else:
|
356 |
+
tokens.append(["por","_"])
|
357 |
+
tokens.append(["a","_"])
|
358 |
+
else:
|
359 |
+
tokens.append([token, lastField]) # don't break
|
360 |
+
# pelas - por as - pelas
|
361 |
+
elif (token.lower() == "pelas"):
|
362 |
+
if (i < len(bits)-1):
|
363 |
+
posNOUNDET = lex.pexists(stripWord(bits[i+1]), "NOUN") or lex.pexists(stripWord(bits[i+1]), "ADJ") or lex.pexists(stripWord(bits[i+1]), "NUM") or lex.pexists(stripWord(bits[i+1]), "DET")
|
364 |
+
properNOUNDIGIT = bits[i+1][0].isupper() or bits[i+1][0].isnumeric()
|
365 |
+
else:
|
366 |
+
posNOUNDET = False
|
367 |
+
properNOUNDIGIT = False
|
368 |
+
if (posNOUNDET) or (properNOUNDIGIT):
|
369 |
+
tokens.append([token, "c"+lastField]) # break
|
370 |
+
if (token.isupper()):
|
371 |
+
tokens.append(["POR","_"])
|
372 |
+
tokens.append(["AS","_"])
|
373 |
+
elif (token[0].isupper()):
|
374 |
+
tokens.append(["Por","_"])
|
375 |
+
tokens.append(["as","_"])
|
376 |
+
else:
|
377 |
+
tokens.append(["por","_"])
|
378 |
+
tokens.append(["as","_"])
|
379 |
+
else:
|
380 |
+
tokens.append([token, lastField]) # don't break
|
381 |
+
# pelo - por o - pelo
|
382 |
+
elif (token.lower() == "pelo"):
|
383 |
+
if (i > 0):
|
384 |
+
preART = lex.pexists(stripWord(bits[i-1]), "DET")
|
385 |
+
if (preART):
|
386 |
+
possible = lex.pget(stripWord(bits[i-1]), "DET")
|
387 |
+
agree = False
|
388 |
+
for feats in possible:
|
389 |
+
if ("Number=Plur" not in feats[2]) and ("Gender=Fem" not in feats[2]):
|
390 |
+
agree = True
|
391 |
+
break
|
392 |
+
if (not agree):
|
393 |
+
preART = False
|
394 |
+
else:
|
395 |
+
preART = (stripWord(bits[i-1]) != "que") and (stripWord(bits[i-1]) != "dado") and (stripWord(bits[i-1]) != "tanto") and (stripWord(bits[i-1]) != "quanto") and (stripWord(bits[i-1]) != "mais")
|
396 |
+
else:
|
397 |
+
preART = False
|
398 |
+
if (i < len(bits)-1):
|
399 |
+
posNOUNDET = lex.pexists(stripWord(bits[i+1]), "NOUN") or lex.pexists(stripWord(bits[i+1]), "ADJ") or lex.pexists(stripWord(bits[i+1]), "DET")
|
400 |
+
posLower = not bits[i+1][0].isupper()
|
401 |
+
if (posNOUNDET):
|
402 |
+
possible = lex.pget(stripWord(bits[i+1]), "NOUN")+lex.pget(stripWord(bits[i+1]), "ADJ")+lex.pget(stripWord(bits[i+1]), "DET")
|
403 |
+
agree = False
|
404 |
+
for feats in possible:
|
405 |
+
if ("Number=Plur" not in feats[2]) and ("Gender=Fem" not in feats[2]):
|
406 |
+
agree = True
|
407 |
+
break
|
408 |
+
if (not agree):
|
409 |
+
posNOUNDET = False
|
410 |
+
else:
|
411 |
+
posNOUNDET = False
|
412 |
+
posLower = True
|
413 |
+
if (preART) and (not posNOUNDET) and (posLower):
|
414 |
+
tokens.append([token, lastField]) # don't break
|
415 |
+
else:
|
416 |
+
tokens.append([token, "c"+lastField]) # break
|
417 |
+
if (token.isupper()):
|
418 |
+
tokens.append(["POR","_"])
|
419 |
+
tokens.append(["O","_"])
|
420 |
+
elif (token[0].isupper()):
|
421 |
+
tokens.append(["Por","_"])
|
422 |
+
tokens.append(["o","_"])
|
423 |
+
else:
|
424 |
+
tokens.append(["por","_"])
|
425 |
+
tokens.append(["o","_"])
|
426 |
+
# pelos - por os - pelos
|
427 |
+
elif (token.lower() == "pelos"):
|
428 |
+
if (i > 0):
|
429 |
+
preART = lex.pexists(stripWord(bits[i-1]), "DET")
|
430 |
+
if (preART):
|
431 |
+
possible = lex.pget(stripWord(bits[i-1]), "DET")
|
432 |
+
agree = False
|
433 |
+
for feats in possible:
|
434 |
+
if ("Number=Sing" not in feats[2]) and ("Gender=Fem" not in feats[2]) and ("PronType=Art" in feats[2]):
|
435 |
+
agree = True
|
436 |
+
break
|
437 |
+
if (not agree):
|
438 |
+
preART = False
|
439 |
+
else:
|
440 |
+
preART = (stripWord(bits[i-1]) != "que") and (stripWord(bits[i-1]) != "dado") and (stripWord(bits[i-1]) != "tanto") and (stripWord(bits[i-1]) != "quanto") and (stripWord(bits[i-1]) != "mais")
|
441 |
+
else:
|
442 |
+
preART = False
|
443 |
+
if (i < len(bits)-1):
|
444 |
+
posNOUNDET = lex.pexists(stripWord(bits[i+1]), "NOUN") or lex.pexists(stripWord(bits[i+1]), "ADJ") or lex.pexists(stripWord(bits[i+1]), "DET")
|
445 |
+
posLower = not bits[i+1][0].isupper()
|
446 |
+
if (posNOUNDET):
|
447 |
+
possible = lex.pget(stripWord(bits[i+1]), "NOUN")+lex.pget(stripWord(bits[i+1]), "ADJ")+lex.pget(stripWord(bits[i+1]), "DET")
|
448 |
+
agree = False
|
449 |
+
for feats in possible:
|
450 |
+
if ("Number=Sing" not in feats[2]) and ("Gender=Fem" not in feats[2]) and ("PronType=Art" in feats[2]):
|
451 |
+
agree = True
|
452 |
+
break
|
453 |
+
if (not agree):
|
454 |
+
posNOUNDET = False
|
455 |
+
else:
|
456 |
+
posNOUNDET = False
|
457 |
+
posLower = True
|
458 |
+
if (preART) and (not posNOUNDET) and (posLower):
|
459 |
+
tokens.append([token, lastField]) # don't break
|
460 |
+
else:
|
461 |
+
tokens.append([token, "c"+lastField]) # break
|
462 |
+
if (token.isupper()):
|
463 |
+
tokens.append(["POR","_"])
|
464 |
+
tokens.append(["OS","_"])
|
465 |
+
elif (token[0].isupper()):
|
466 |
+
tokens.append(["Por","_"])
|
467 |
+
tokens.append(["os","_"])
|
468 |
+
else:
|
469 |
+
tokens.append(["por","_"])
|
470 |
+
tokens.append(["os","_"])
|
471 |
+
|
472 |
+
#############################################################################
|
473 |
+
# Tokenizing - tokenizeIt (step 3)
|
474 |
+
#############################################################################
|
475 |
+
def tokenizeIt(s, SID, outfile):
|
476 |
+
removable = ["'", '"', "(", ")", "[", "]", "{", "}", "<", ">", \
|
477 |
+
"!", "?", ",", ";", ":", "=", "+", "*", "★", "|", "/", "\\", \
|
478 |
+
"&", "^", "_", "`", "'", "~", "%"]
|
479 |
+
ignored = ["@", "#"]
|
480 |
+
digits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
|
481 |
+
contracts = {"à":["a","a"],
|
482 |
+
"às":["a","as"],
|
483 |
+
"ao":["a", "o"],
|
484 |
+
"aos":["a", "os"],
|
485 |
+
"àquela":["a", "aquela"],
|
486 |
+
"àquelas":["a", "aquelas"],
|
487 |
+
"àquele":["a", "aquele"],
|
488 |
+
"àqueles":["a", "aqueles"],
|
489 |
+
"comigo":["com", "mim"],
|
490 |
+
"contigo":["com", "ti"],
|
491 |
+
"consigo":["com", "si"],
|
492 |
+
"conosco":["com", "nós"],
|
493 |
+
"convosco":["com", "vós"],
|
494 |
+
"da":["de", "a"],
|
495 |
+
"das":["de", "as"],
|
496 |
+
"do":["de", "o"],
|
497 |
+
"dos":["de", "os"],
|
498 |
+
"dali":["de", "ali"],
|
499 |
+
"daqui":["de", "aqui"],
|
500 |
+
"daí":["de", "aí"],
|
501 |
+
"desta":["de", "esta"],
|
502 |
+
"destas":["de", "estas"],
|
503 |
+
"deste":["de", "este"],
|
504 |
+
"destes":["de", "estes"],
|
505 |
+
"dessa":["de", "essa"],
|
506 |
+
"dessas":["de", "essas"],
|
507 |
+
"desse":["de", "esse"],
|
508 |
+
"desses":["de", "esses"],
|
509 |
+
"daquela":["de", "aquela"],
|
510 |
+
"daquelas":["de", "aquelas"],
|
511 |
+
"daquele":["de", "aquele"],
|
512 |
+
"daqueles":["de", "aqueles"],
|
513 |
+
"disto":["de", "isto"],
|
514 |
+
"disso":["de", "isso"],
|
515 |
+
"daquilo":["de", "aquilo"],
|
516 |
+
"dela":["de", "ela"],
|
517 |
+
"delas":["de", "elas"],
|
518 |
+
"dele":["de", "ele"],
|
519 |
+
"deles":["de", "eles"],
|
520 |
+
"doutra":["de", "outra"],
|
521 |
+
"doutras":["de", "outras"],
|
522 |
+
"doutro":["de", "outro"],
|
523 |
+
"doutros":["de", "outros"],
|
524 |
+
"dum":["de", "um"],
|
525 |
+
"duns":["de", "uns"],
|
526 |
+
"duma":["de", "uma"],
|
527 |
+
"dumas":["de", "umas"],
|
528 |
+
"na":["em", "a"],
|
529 |
+
"nas":["em", "as"],
|
530 |
+
"no":["em", "o"],
|
531 |
+
"nos":["em", "os"],
|
532 |
+
"nesta":["em", "esta"],
|
533 |
+
"nestas":["em", "estas"],
|
534 |
+
"neste":["em", "este"],
|
535 |
+
"nestes":["em", "estes"],
|
536 |
+
"nessa":["em", "essa"],
|
537 |
+
"nessas":["em", "essas"],
|
538 |
+
"nesse":["em", "esse"],
|
539 |
+
"nesses":["em", "esses"],
|
540 |
+
"naquela":["em", "aquela"],
|
541 |
+
"naquelas":["em", "aquelas"],
|
542 |
+
"naquele":["em", "aquele"],
|
543 |
+
"naqueles":["em", "aqueles"],
|
544 |
+
"nisto":["em", "isto"],
|
545 |
+
"nisso":["em", "isso"],
|
546 |
+
"naquilo":["em", "aquilo"],
|
547 |
+
"nela":["em", "ela"],
|
548 |
+
"nelas":["em", "elas"],
|
549 |
+
"nele":["em", "ele"],
|
550 |
+
"neles":["em", "eles"],
|
551 |
+
"noutra":["em", "outra"],
|
552 |
+
"noutras":["em", "outras"],
|
553 |
+
"noutro":["em", "outro"],
|
554 |
+
"noutros":["em", "outros"],
|
555 |
+
"num":["em", "um"],
|
556 |
+
"nuns":["em", "uns"],
|
557 |
+
"numa":["em", "uma"],
|
558 |
+
"numas":["em", "umas"],
|
559 |
+
"pela":["por", "a"],
|
560 |
+
"pelas":["por", "as"],
|
561 |
+
"pelo":["por", "o"],
|
562 |
+
"pelos":["por", "os"],
|
563 |
+
"pra":["para", "a"],
|
564 |
+
"pras":["para", "as"],
|
565 |
+
"pro":["para", "o"],
|
566 |
+
"pros":["para", "os"],
|
567 |
+
"prum":["para", "um"],
|
568 |
+
"pruns":["para", "uns"],
|
569 |
+
"pruma":["para", "uma"],
|
570 |
+
"prumas":["para", "umas"]}
|
571 |
+
ambigous = ["nos", "consigo", "pra", "pela", "pelas", "pelo", "pelos"]
|
572 |
+
# ambigous = ["nos", "consigo", "pra", "pelo", "pelos"]
|
573 |
+
enclisis = ['me', 'te', 'se', 'lhe', 'o', 'a', 'nos', 'vos', 'lhes', 'os', 'as', 'lo', 'la', 'los', 'las']
|
574 |
+
terminations = ["ia", "ias", "as", "iamos", "ieis", "iam", "ei", "as", "a", "emos", "eis", "ão"]
|
575 |
+
tokens = []
|
576 |
+
bits = s.split(" ")
|
577 |
+
k = 0
|
578 |
+
for b in bits:
|
579 |
+
# deal with the pre (before) middle
|
580 |
+
pre = []
|
581 |
+
changed = True
|
582 |
+
while (changed) and (len(b) > 1):
|
583 |
+
changed = False
|
584 |
+
if (b[0] in removable) or ((b[0] == "$") and (b[1] in digits)) or ((b[0] == "-") and (b[1] not in digits)):
|
585 |
+
pre.append(b[0])
|
586 |
+
b = b[1:]
|
587 |
+
changed = True
|
588 |
+
# deal with the pos (after) middle
|
589 |
+
tmp = []
|
590 |
+
changed = True
|
591 |
+
while (changed) and (len(b) > 1):
|
592 |
+
changed = False
|
593 |
+
if (b[-1] in removable+["-"]):
|
594 |
+
tmp.append(b[-1])
|
595 |
+
b = b[:-1]
|
596 |
+
changed = True
|
597 |
+
pos = []
|
598 |
+
reticent = ""
|
599 |
+
for i in range(len(tmp)-1, -1, -1):
|
600 |
+
if (tmp[i] == "."):
|
601 |
+
if (reticent == ""):
|
602 |
+
reticent = "."
|
603 |
+
elif (reticent == "."):
|
604 |
+
reticent = ".."
|
605 |
+
elif (reticent == ".."):
|
606 |
+
pos.append("...")
|
607 |
+
reticent = ""
|
608 |
+
else:
|
609 |
+
if (reticent != ""):
|
610 |
+
pos.append(reticent)
|
611 |
+
reticent = ""
|
612 |
+
pos.append(tmp[i])
|
613 |
+
if (reticent != ""):
|
614 |
+
pos.append(reticent)
|
615 |
+
# deal with the middle
|
616 |
+
buf = b.split("-")
|
617 |
+
if (len(buf) == 1):
|
618 |
+
parts = pre+[b]+pos
|
619 |
+
# enclisis
|
620 |
+
elif (len(buf) == 2) and (buf[1] in enclisis):
|
621 |
+
if (buf[0][-1] == "á"):
|
622 |
+
parts = pre+["*^*"+b, buf[0][:-1]+"ar", buf[1]]+pos
|
623 |
+
elif (buf[0][-1] == "ê"):
|
624 |
+
parts = pre+["*^*"+b, buf[0][:-1]+"er", buf[1]]+pos
|
625 |
+
elif (buf[0][-1] == "í"):
|
626 |
+
parts = pre+["*^*"+b, buf[0][:-1]+"ir", buf[1]]+pos
|
627 |
+
elif (buf[0][-1] == "ô"):
|
628 |
+
parts = pre+["*^*"+b, buf[0][:-1]+"or", buf[1]]+pos
|
629 |
+
else:
|
630 |
+
parts = pre+["*^*"+b, buf[0], buf[1]]+pos
|
631 |
+
# mesoclisis - type I (e.g. dar-lo-ia)
|
632 |
+
elif (len(buf) == 3) and (buf[1] in enclisis) \
|
633 |
+
and (buf[0][-1] == "r") and (buf[3] in [terminations]):
|
634 |
+
parts = pre+["*^*"+b, buf[0]+buf[3], buf[1]]+pos
|
635 |
+
# mesoclisis - type II (e.g. dá-lo-ia)
|
636 |
+
elif (len(buf) == 3) and (buf[1] in enclisis) \
|
637 |
+
and (buf[0][-1] in ["á", "ê", "í", "ô"]) and (buf[3] in [terminations]):
|
638 |
+
if (buf[0][-1] == "á"):
|
639 |
+
parts = pre+["*^*"+b, buf[0][:-1]+"ar"+buf[3], buf[1]]+pos
|
640 |
+
elif (buf[0][-1] == "ê"):
|
641 |
+
parts = pre+["*^*"+b, buf[0][:-1]+"er"+buf[3], buf[1]]+pos
|
642 |
+
elif (buf[0][-1] == "í"):
|
643 |
+
parts = pre+["*^*"+b, buf[0][:-1]+"ir"+buf[3], buf[1]]+pos
|
644 |
+
elif (buf[0][-1] == "ô"):
|
645 |
+
parts = pre+["*^*"+b, buf[0][:-1]+"or"+buf[3], buf[1]]+pos
|
646 |
+
else:
|
647 |
+
parts = pre+[b]+pos
|
648 |
+
# transform parts into tokens to be added
|
649 |
+
i = 0
|
650 |
+
while (i < len(parts)):
|
651 |
+
if (i == len(parts)-1):
|
652 |
+
lastField = "_"
|
653 |
+
else:
|
654 |
+
lastField = "SpaceAfter=No"
|
655 |
+
if (parts[i][:3] == "*^*"):
|
656 |
+
if (i+3 == len(parts)):
|
657 |
+
tokens.append([parts[i][3:], "c_"])
|
658 |
+
else:
|
659 |
+
tokens.append([parts[i][3:], "cSpaceAfter=No"])
|
660 |
+
i += 1
|
661 |
+
tokens.append([parts[i], "_"])
|
662 |
+
i += 1
|
663 |
+
tokens.append([parts[i], "_"])
|
664 |
+
elif (parts[i] not in ambigous):
|
665 |
+
ans = contracts.get(parts[i].lower())
|
666 |
+
if (ans == None):
|
667 |
+
tokens.append([parts[i], lastField])
|
668 |
+
else:
|
669 |
+
tokens.append([parts[i], "c"+lastField])
|
670 |
+
if (parts[i].isupper()):
|
671 |
+
tokens.append([ans[0].upper(),"_"])
|
672 |
+
tokens.append([ans[1].upper(),"_"])
|
673 |
+
elif (parts[i][0].isupper()):
|
674 |
+
tokens.append([ans[0][0].upper()+ans[0][1:],"_"])
|
675 |
+
tokens.append([ans[1],"_"])
|
676 |
+
else:
|
677 |
+
tokens.append([ans[0],"_"])
|
678 |
+
tokens.append([ans[1],"_"])
|
679 |
+
else:
|
680 |
+
desambIt(parts[i], bits, k, lastField, s, SID, tokens)
|
681 |
+
i += 1
|
682 |
+
k += 1
|
683 |
+
# output the sentence with all the tokens
|
684 |
+
print("# sent_id =", SID, file=outfile)
|
685 |
+
print("# text =", s, file=outfile)
|
686 |
+
## printout tokens
|
687 |
+
toks = 0
|
688 |
+
for i in range(len(tokens)):
|
689 |
+
if (tokens[i][1][0] != "c"):
|
690 |
+
toks += 1
|
691 |
+
print(str(toks), tokens[i][0], "_", "_", "_", "_", "_", "_", "_", tokens[i][1], sep="\t", file=outfile)
|
692 |
+
else:
|
693 |
+
# contracted word
|
694 |
+
print(str(toks+1)+"-"+str(toks+2), tokens[i][0], "_", "_", "_", "_", "_", "_", "_", tokens[i][1][1:], sep="\t", file=outfile)
|
695 |
+
print(file=outfile)
|
696 |
+
return(toks)
|
697 |
+
|
698 |
+
#################################################
|
699 |
+
### Deal with a sentence, clean it, if required, then tokenize it
|
700 |
+
#################################################
|
701 |
+
def dealWith(outfile, sent, SID, match, trim):
|
702 |
+
if (trim):
|
703 |
+
sent = trimIt(sent)
|
704 |
+
if (match):
|
705 |
+
sent = punctIt(sent)
|
706 |
+
if (sent != ""):
|
707 |
+
return 1, tokenizeIt(sent, SID, outfile)
|
708 |
+
else:
|
709 |
+
return 0, 0
|
710 |
+
|
711 |
+
#################################################
|
712 |
+
### função principal do programa - busca argumentos e chama 'tokenize' para cada sentença da entrada
|
713 |
+
#################################################
|
714 |
+
def portTok():
|
715 |
+
if (len(sys.argv) == 1):
|
716 |
+
arguments = ["lix.conllu", "sents2.txt", True, True, "S0000"]
|
717 |
+
# arguments = ["sents.conllu", "sents.txt", True, True, "S0000"]
|
718 |
+
print("Assumindo default: 'sents.conllu' como arquivo de saída, 'sents.txt' como arquivo de entrada, correções, remoções e S0000 como sid.")
|
719 |
+
else:
|
720 |
+
arguments = parseOptions(sys.argv)
|
721 |
+
if (arguments != None):
|
722 |
+
if (arguments[0] == ""):
|
723 |
+
print("Assumindo 'sents.conllu' como arquivo de saída")
|
724 |
+
arguments[0] = 'sents.conllu'
|
725 |
+
if (arguments[1] == []):
|
726 |
+
print("Arquivo de entrada inválido - por favor corrija e tente novamente")
|
727 |
+
else:
|
728 |
+
outfile = open(arguments[0], "w")
|
729 |
+
print("# newdoc id = {}\n# newpar".format(arguments[0]), file=outfile)
|
730 |
+
infile = open(arguments[1], "r")
|
731 |
+
SID = arguments[4]
|
732 |
+
sTOTAL, tTOTAL = 0, 0
|
733 |
+
for line in infile:
|
734 |
+
SID = nextName(SID)
|
735 |
+
s, t = dealWith(outfile, line[:-1], SID, arguments[2], arguments[3])
|
736 |
+
if (s == 1):
|
737 |
+
sTOTAL += 1
|
738 |
+
tTOTAL += t
|
739 |
+
outfile.close()
|
740 |
+
infile.close()
|
741 |
+
print("Tokenização terminada com {} sentenças extraídas ({} tokens) e salvas em {}".format(sTOTAL, tTOTAL, arguments[0]))
|
742 |
+
else:
|
743 |
+
print("Problemas com parâmetros - por favor corrija e tente novamente")
|
744 |
+
|
745 |
+
portTok()
|
portTokenizer/sents.conllu
ADDED
The diff for this file is too large to render.
See raw diff
|
|
portTokenizer/sents.txt
ADDED
@@ -0,0 +1,284 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Com a possibilidade de uma condenação impedir sua candidatura em 2018, o ex-presidente Luiz Inácio Lula da Silva fez, nesta segunda (9), um discurso inflamado contra a Lava Jato, no qual disse saber que está "lascado", exigiu um pedido de desculpas do juiz Sergio Moro e afirmou que, mesmo fora da disputa pelo Planalto, será um cabo eleitoral expressivo para a sucessão de Michel Temer.
|
2 |
+
Segundo o petista, réu em sete ações penais, o objetivo de Moro é impedir sua candidatura no ano que vem, desidratando-o, inclusive, no apoio a um nome alternativo, como o do ex-prefeito de São Paulo Fernando Haddad (PT), caso ele não possa concorrer à Presidência.
|
3 |
+
"Eu sei que tô lascado, todo dia tem um processo.
|
4 |
+
Eu não quero nem que Moro me absolva, eu só quero que ele peça desculpas", disse Lula durante um seminário sobre educação em Brasília.
|
5 |
+
"Eles [investigadores] chegam a dizer:
|
6 |
+
'Ah, se o Lula não for candidato, ele não vai ter força como cabo eleitoral'.
|
7 |
+
Testem", completou o petista.
|
8 |
+
Para o ex-presidente, Moro usou "mentiras contadas pela Polícia Federal e pelo Ministério Público" para julgá-lo e condená-lo a nove anos e seis meses de prisão pelo caso do tríplex em Guarujá (SP).
|
9 |
+
O ex-presidente disse ainda não ter "medo" dos investigadores que, de acordo com ele, estão acostumados a "mexer com deputados e senadores" que temem as apurações.
|
10 |
+
"Eu quero que eles saibam o seguinte: se eles estão acostumados a lidar com deputado que tem medo deles, a mexer com senadores que têm medo deles, quero dizer que tenho respeito profundo por quem me respeita, pelas leis que nós ajudamos a criar, mas não tenho respeito por quem não me respeita e eles não me respeitaram", afirmou o petista.
|
11 |
+
De acordo com aliados, Lula não gosta de discutir, mesmo que nos bastidores, a chance de não ser candidato ao Planalto e a projeção do nome de Haddad como plano B do PT tem incomodado os mais próximos ao ex-presidente.
|
12 |
+
O ex-prefeito, que estava no evento nesta segunda, fez um discurso rápido, de menos de dez minutos, em que encerrou dizendo esperar que Lula assuma a Presidência em 2019.
|
13 |
+
"Espero que dia 1º de janeiro de 2019 esse pesadelo chamado Temer acabe e o senhor assuma a Presidência da República", disse Haddad.
|
14 |
+
'DEMÔNIO DO MERCADO' Lula voltou a fazer um discurso mais agressivo em relação ao mercado e disse que "não tem cara de demônio", mas quer que o respeitem "como se fosse".
|
15 |
+
"Não tenho cara de demônio, mas quero que eles me respeitem como se eu fosse, porque eles sabem que a economia não vai ficar subordinada ao elitismo da sociedade brasileira", disse o ex-presidente.
|
16 |
+
O petista rivalizou ainda com o deputado Jair Bolsonaro (PSC-RJ), segundo colocado nas últimas pesquisas empatado com Marina Silva, e disse que se ele "agrada ao mercado", o PT tem que "desagradar".
|
17 |
+
A Folha publicou nesta segunda (9) reportagem em que mostrou que o deputado ensaia movimento ao centro no debate econômico, adotando um discurso simpático aos investidores do mercado financeiro.
|
18 |
+
Para Oumou Sangaré, cantora e ativista malinesa, o sofrimento da mulher é universal.
|
19 |
+
"Canto com todas as minhas forças e vejo mulheres chorando ao meu redor", disse durante um encontro na Casa da Cultura de Paraty, no Rio de Janeiro, neste domingo (8).
|
20 |
+
Herdeira da tradição musical de sua família -sua avó foi uma "grande estrela" do país africano-, ela conta que começou a cantar na rua para ajudar nas finanças de casa após o divórcio dos pais, que deixou seis filhos dependentes de sua mãe, também cantora.
|
21 |
+
"Eu vi uma mulher que sofria para se defender sozinha e alimentar os filhos e às vezes isso era muito duro, tinha dias em que ela se retirava no quarto para chorar", recorda.
|
22 |
+
Ela conta que o desejo de fazer a mãe feliz a incentivou, inclusive, a abandonar os estudos para se dedicar à música.
|
23 |
+
Ainda que seu canto fosse as dores da matriarca, Sangaré conta ter percebido que as mulheres que a ouviam também se viam decifradas nele.
|
24 |
+
"Quando uma mulher dá à luz, ela está entre a vida e a morte, mas ela o faz para que o mundo engrandeça, por que esse mesmo mundo não pode encarar os problemas dela?", questiona.
|
25 |
+
"É por isso que decidi ser escrava de todas as mulheres que sofrem."
|
26 |
+
Sangaré, que se diz uma "muçulmana relax", tornou-se uma notória ativista na luta pela igualdade de gêneros, batalhando contra a circuncisão feminina e o casamento e a poligamia compulsórios -sem contar seu trabalho com a ONU pela erradicação da fome em países africanos.
|
27 |
+
Com o discurso de empoderamento pelo trabalho -"desenvolvam-se e sejam úteis para sua família e seu país", ela repete com frequência-, resolveu dar o exemplo, criando uma rede hoteleira e uma concessionária de carros e plantando milho, cebola e laranja.
|
28 |
+
Os aspectos que moldaram a história de Sangaré estão impressos nos títulos de seus álbuns.
|
29 |
+
Além do que leva o seu nome, "Moussolou", o de estreia, significa "mulher";
|
30 |
+
"Ko Sira", "o casamento de hoje";
|
31 |
+
"Worotan", "preço por uma noiva";
|
32 |
+
"Seya", "alegria";
|
33 |
+
"Kounadia", "a boa estrela".
|
34 |
+
TRADIÇÃO SONORA Foi o mais recente, "Mogoya" (as pessoas da atualidade), que a cantora apresentou em Paraty, neste sábado (7), como parte da programação do Mimo Festival -o evento, gratuito, reuniu cerca de 25 mil pessoas com suas atrações gratuitas durante o fim de semana.
|
35 |
+
Com letras em bambara, um dos diversos idiomas de Mali, Sangaré se consagrou como ícone do wassoulou, estilo musical derivado do folclore de uma região homônima da África Ocidental.
|
36 |
+
No repertório que trouxe para cá, ela mistura o ritmo com batidas eletrônicas e conta que a atualização tinha como intuito atingir novas gerações e público do mercado global.
|
37 |
+
A cantora mostrou a potência de sua voz, amparada por uma banda parte africana e parte europeia que incluía um kamale ngoni -instrumento típico do wassoulou semelhante a um berimbau e moldado com uma cabaça- e uma dupla de backing vocals hipnotizantes.
|
38 |
+
Três reportagens da Folha foram vencedoras do Prêmio Petrobras de Jornalismo, anunciado na noite desta segunda-feira (9).
|
39 |
+
O jornal ganhou a premiação nas categorias Economia, com a criação do REM-F (Ranking de Eficiência dos Municípios-Folha), Regional SP-Sul, com uma série de reportagens sobre dados sigilosos do governo Geraldo Alckmin (PSDB), e Ciência e Tecnologia, com o especial "Tudo sobre o mosquito".
|
40 |
+
A vencedora do Grande Prêmio foi a reportagem "Terra bruta - Pistolagem, devastação e morte no coração do Brasil", do jornal "O Estado de S. Paulo".
|
41 |
+
Criado em 2013, o Prêmio Petrobras de Jornalismo está em sua quarta edição.
|
42 |
+
Ele teve neste ano 11 categorias nacionais e regionais, além de dois prêmios especiais.
|
43 |
+
Nenhuma das categorias é voltada especificamente às reportagens sobre política.
|
44 |
+
DOCUMENTOS SECRETOS DE ALCKMIN Vencedora na categoria Regional SP-Sul, a série de investigações publicadas pela Folha em outubro de 2015 revelou que a gestão Alckmin havia tornado sigilosas centenas de informações do transporte público metropolitano.
|
45 |
+
O trabalho é de autoria dos repórteres Artur Rodrigues, André Monteiro e Fabricio Lobel.
|
46 |
+
A classificação das informações impossibilitava a consulta pública de 157 documentos num prazo de 25 anos.
|
47 |
+
A população não poderia ter acesso a relatórios que explicassem, por exemplo, os motivos exatos de atrasos em obras de linhas e estações.
|
48 |
+
À época, como atualmente, todas as linhas em expansão do Metrô de São Paulo e da CPTM estavam atrasadas.
|
49 |
+
A reportagem motivou a abertura de uma investigação pelo Ministério Público e o pedido de explicações pelo Tribunal de Contas do Estado.
|
50 |
+
Dois dias após a publicação do material pelo jornal, o governo paulista revogou os decretos de sigilo e se comprometeu a revisar todos os termos semelhantes impostos até então.
|
51 |
+
Após a decisão, as reportagens identificaram outras áreas da gestão Alckmin em que também havia sido imposto o sigilo de informação.
|
52 |
+
Entre elas estavam dados sobre procedimentos e projetos técnicos e operacionais do abastecimento de água de São Paulo, além de dados da Polícia Militar e da Administração Penitenciária.
|
53 |
+
RANKING DE EFICIÊNCIA DOS MUNICÍPIOS O Ranking de Eficiência dos Municípios-Folha (REM-F), projeto publicado em agosto de 2016, antes das eleições municipais, trouxe uma ferramenta virtual, criada em conjunto com o Datafolha, que mostra quais prefeituras entregam mais serviços básicos à população usando menor volume de recursos financeiros.
|
54 |
+
O ranking, com participação de Alessandro Janoni, Fernando Canzian, Marcelo Soares, Mario Kanno e Renata Nunes, leva em conta indicadores de saúde, educação e saneamento para calcular a eficiência da gestão em relação à sua receita disponível.
|
55 |
+
Foram avaliados 5.281 municípios, ou 95% do total de 5.569 existentes no Brasil.
|
56 |
+
Além do índice, o projeto também incluiu visitas a 16 cidades brasileiras, de diferentes regiões e níveis de eficiência apurados pelo ranking.
|
57 |
+
O MOSQUITO Coordenado pelos jornalistas Marcelo Leite e Mariana Versolato, o pacote de reportagens sobre o mosquito Aedes aegypti foi publicado em dezembro de 2016, em meio à crise do vírus da zika.
|
58 |
+
Com participação de uma equipe de 21 profissionais, tem também entre seus autores os jornalistas Cláudia Collucci, Lalo de Almeida, Patricia Campos Mello, Reinaldo José Lopes e Gabriel Alves.
|
59 |
+
O material contém textos sobre diferentes aspectos da questão que comoveu o Brasil e o mundo, chegando a ser declarada como uma emergência internacional pela Organização Mundial da Saúde.
|
60 |
+
O primeiro capítulo "O vírus da zika" é o resultado de uma viagem ao berço da doença, o continente africano, com visitas ao Senegal e a Uganda, onde fica a floresta Zika, que deu nome ao vírus.
|
61 |
+
Em seguida, o material traz relatos sobre mães e seus filhos e filhas, que nasceram com microcefalia.
|
62 |
+
A reportagem explicita os percalços de quem não tinha muita informação do que fazer naquele momento tão crítico.
|
63 |
+
O especial ainda discute o impacto da doença nos EUA e as novidades no combate ao mosquito Aedes aegypti e à doença propriamente dita.
|
64 |
+
A Disney divulgou na noite desta segunda-feira (9) o novo trailer de "Star Wars:
|
65 |
+
Os Últimos Jedi", oitavo episódio da saga.
|
66 |
+
O trailer era aguardado pelos fãs e se tornou um dos tópicos mais comentados no Twitter no horário de seu lançamento.
|
67 |
+
Assista ao trailer de 'Os Últimos Jedi' Assista ao trailer de 'Os Últimos Jedi' Em "O Despertar da Força" (2015), episódio mais recente, a personagem Rey (Daisy Ridley) descobre que tem a Força e procura por Luke Skywalker (Mark Hamill) para começar seu treinamento Jedi.
|
68 |
+
A história do novo episódio continua desse ponto, e cenas do trailer mostram a relação entre Rey e Skywalker.
|
69 |
+
Com direção de Rian Johnson, o filme será lançado em 14 de dezembro no Brasil.
|
70 |
+
O nono episódio, ainda sem título, encerra a nova trilogia em 20 de dezembro de 2019.
|
71 |
+
O estúdio também divulgou novo poster do filme.
|
72 |
+
Poster O CBSS, banco da holding Elopar dos sócios Bradesco e Banco do Brasil, está fazendo parcerias com fintechs, prevendo em 2018 alcançar 30% de um mercado de rápido crescimento e que já empresta mais de R$ 1 bilhão por ano.
|
73 |
+
Inicialmente, os acordos usarão o modelo mais praticado no mercado, com fintechs captando pedidos de empréstimos e filtrando o perfil de risco dos tomadores, operação conhecida no jargão do mercado como "lead" e pela qual as fintechs são remuneradas, quase sempre por bancos de médio porte e cooperativas de crédito, que de fato concedem os financiamentos.
|
74 |
+
"Nós temos funding competitivo e em boa quantidade e as fintechs conseguem originar crédito com um custo muito menor do que faríamos por meios físicos", disse à Reuters o presidente do Banco CBSS, Carlos Giovane.
|
75 |
+
A primeira parceria é com a Bom Pra Crédito, marketplace no qual cerca de 500 mil interessados em tomar empréstimo pessoal submetem todo mês pedidos que são distribuídos para cerca de 25 bancos oferecerem propostas.
|
76 |
+
Além desse acordo, já em andamento, negociações estão em curso com outras quatro fintechs especializadas em crédito:
|
77 |
+
Guia Bolso, Lendico, Finanzero e Wecash, previstas para estarem operacionais ainda em 2017.
|
78 |
+
O movimento marca a primeira aproximação operacional, mesmo que de forma indireta, de grandes bancos com fintechs, que nos últimos dois anos emergiram como potenciais rivais no crédito pessoal, ao oferecerem taxas de juros muito menores do que as praticadas no sistema financeiro.
|
79 |
+
Segundo o presidente da Bom Pra Crédito, Ricardo Kalichsztein, ser parceiro é melhor.
|
80 |
+
O CBSS, no caso, oferecerá empréstimos pessoais sem garantia com taxas a partir de 3,9% ao mês.
|
81 |
+
A taxa média do sistema financeiro foi de 7,2% ao mês, segundo dados do Banco Central referentes a agosto.
|
82 |
+
A iniciativa acontece em meio a uma audiência pública aberta pelo Banco Central para regulamentar a atuação das plataformas digitais de crédito.
|
83 |
+
A proposta do BC é classificar essas fintechs em duas categorias, a que empresta com capital dos próprios acionistas e a que conecta investidores a tomadores de recursos, prática conhecida como peer to peer lending.
|
84 |
+
Na avaliação de especialistas do setor, dependendo da forma como vier a regulação, o modelo atual de parcerias pode ser esvaziado, uma vez que bancos podem preferir ter plataformas digitais próprias, enquanto algumas fintechs poderiam ter um braço financeiro para operar de ponta a ponta.
|
85 |
+
"As fintechs começarão a se perguntar se vale a pena virar banco", disse Rubens Vidigal Neto, sócio do PVG Advogados.
|
86 |
+
Atento a esse movimento, o CBSS já visualiza aprofundar a aproximação com as fintechs.
|
87 |
+
Num primeiro momento, as conversas envolvem proposta de remuneração mais atrativa, na qual o banco pode repassar às parceiras mais do que apenas um valor pela originação de negócios.
|
88 |
+
Mas com pelo menos uma delas as conversas já evoluíram para participação societária.
|
89 |
+
"Estamos em negociações finais para sermos sócios de uma delas (fintech)", disse Giovane, sem dar mais detalhes.
|
90 |
+
A entrada do CBSS no crédito digital é motivada, dentre outros fatores, pelo interesse dos sócios em acelerar a rentabilização do negócio, disse o executivo.
|
91 |
+
Após ter obtido as aprovações do Banco Central no ano passado para atuar como banco, o CBSS vem deslanchando uma série de iniciativas para vender produtos financeiros, incluindo por meio da financeira Ibi, de parcerias com redes varejistas e o lançamento de um plataforma digital própria de cartão de crédito, a Digio.
|
92 |
+
Essa plataforma começa a operar ainda este mês um marketplace, inclusive com produtos como os da Apple Store.
|
93 |
+
A partir de novembro, a Digio incluirá oferta de crédito pessoal.
|
94 |
+
Todas essas frentes consumiram investimentos que levam mais tempo para dar retorno.
|
95 |
+
O banco, que tinha patrimônio de R$ 410 milhões em junho, já opera no azul desde o mês passado, mas o plano é começar a ter lucro.
|
96 |
+
"As parcerias com as fintechs no crédito são um negócio que permite retorno quase imediato", disse Giovane.
|
97 |
+
O vocalista da banda irlandesa U2, Bono, fez uma pergunta espinhosa ao presidente argentino, Mauricio Macri, em encontro que ambos mantiveram na Casa Rosada, sede do governo argentino, nesta segunda-feira (9).
|
98 |
+
O músico, que se apresenta com seu grupo nesta terça (10) e quarta (11) no país, quis saber como estão as investigações do desaparecimento do artesão Santiago Maldonado, ocorrida dia 1º de agosto deste ano na Patagônia.
|
99 |
+
O sumiço de Maldonado se transformou em um dos temas da campanha para as eleições legislativas que ocorrem no próximo dia 22.
|
100 |
+
Marchas e protestos vêm ocorrendo em várias cidades desde então, e há cartazes pedindo o "reaparecimento com vida" do ativista.
|
101 |
+
Maldonado havia se juntado a um protesto de indígenas mapuche que reivindicam um território na Província de Chubut, no sul do país, hoje sob posse da companhia italiana Benetton.
|
102 |
+
Na ocasião, houve enfrentamento da Gendarmeria (polícia de fronteiras argentina) com os manifestantes, e testemunhas alegam que Maldonado foi levado pelos agentes.
|
103 |
+
O governo, por meio da Secretaria de Segurança Pública, à qual a Gendarmeria responde, alega que essa afirmação é falsa e, desde então, tem realizado intensas buscas pela região para encontrar Maldonado.
|
104 |
+
A ex-presidente Cristina Kirchner, candidata ao Senado pela oposição, tem usado a imagem de Maldonado em campanha, dizendo ser o "primeiro desaparecido político do governo Macri".
|
105 |
+
Apesar da pergunta, Bono e Macri se trataram de forma cordial.
|
106 |
+
Após o encontro, o cantor disse que havia "sentido que o presidente está comprometido na missão de encontrar Maldonado".
|
107 |
+
E acrescentou que vinha ao país "reforçar o pedido para que o caso seja esclarecido, em nome da Anistia Internacional".
|
108 |
+
Além disso, Bono afirmou que ambos trataram de alguns temas da pauta da próxima reunião do G-20, que ocorrerá na Argentina no ano que vem.
|
109 |
+
O país assume em dezembro a presidência rotativa do grupo que congrega as 20 maiores economias.
|
110 |
+
"As pessoas pensam que esses eventos são apenas encontros com jantares luxuosos.
|
111 |
+
Mas, neste caso, haverá um grande espaço dedicado ao debate da necessidade de se ajudar as mulheres que estão em situação de pobreza e às mais de 130 milhões de meninas em todo o mundo que não vão à escola", afirmou Bono.
|
112 |
+
O italiano Cesare Battisti disse nesta segunda-feira (9) que tem liberdade para sair do Brasil quando quiser.
|
113 |
+
"Eu não tenho refúgio político.
|
114 |
+
Eu sou um imigrante, com visto permanente no país.
|
115 |
+
Eu posso sair desse país quando e como quero.
|
116 |
+
Não tenho nenhuma restrição", afirmou ele em entrevista à TV Tribuna, afiliada da TV Globo.
|
117 |
+
Battisti foi detido na semana passada acusado de evasão de divisas ao tentar atravessar a fronteira com a Bolívia portando dólares e euros no valor equivalente a pouco mais de R$ 23 mil.
|
118 |
+
Na sexta-feira (6), o desembargador José Marcos Lunardelli, do TRF-3 (Tribunal Regional Federal da 3ª Região), concedeu um habeas corpus ao italiano, preso em Mato Grosso do Sul.
|
119 |
+
Ele chegou a São Paulo no sábado (7).
|
120 |
+
A entrevista à emissora foi gravada em Cananeia (SP), cidade onde Battisti está morando.
|
121 |
+
"Ia estar fugindo de quê?
|
122 |
+
O país onde estou protegido é aqui", afirmou ele, negando que tivesse a intenção de fugir do país.
|
123 |
+
"Não é verdade o que se fala, que eu não tinha o direito de sair do país."
|
124 |
+
A defesa do italiano já vinha afirmando que não há impedimento para que ele, na condição de refugiado, realize viagem, mesmo que seja para o exterior.
|
125 |
+
Segundo os advogados, sua situação jurídica no Brasil está plenamente legalizada há quase dez anos.
|
126 |
+
"Eu tenho todo o direito de cidadão brasileiro", disse Battisti à TV.
|
127 |
+
"O decreto do Lula não pode ser revogado.
|
128 |
+
Depois de cinco anos acabou o prazo."
|
129 |
+
Battisti fugiu da Itália e, em 2004, veio para o Brasil.
|
130 |
+
Foi preso em 2007 e, em 2009, o STF (Supremo Tribunal Federal) autorizou a extradição, que foi negada pelo ex-presidente Luiz Inácio Lula da Silva em 2010, no último dia de seu governo.
|
131 |
+
Antes da prisão na semana passada, o Ministério da Justiça já havia encaminhado ao presidente Michel Temer um parecer no qual tratava sobre a extradição de Battisti.
|
132 |
+
Agora a Subchefia para Assuntos Jurídicos (SAJ) do Planalto está elaborando uma avaliação que deve ficar pronta na quarta-feira (11).
|
133 |
+
A partir daí, cabe a Temer tomar uma decisão sobre o caso.
|
134 |
+
A expectativa é que ele delibere sobre isso logo após a entrega da análise jurídica, mas oficialmente não há prazo.
|
135 |
+
A pasta da Justiça enviou na sexta-feira (6) um parecer próprio ao Planalto, em que afirmava não haver nenhum obstáculo jurídico que impeça a extradição.
|
136 |
+
É a partir desse texto que o documento da SAJ deve ser redigido.
|
137 |
+
CRONOLOGIA O caso Battisti Década de 1970 Envolve-se com grupos de luta armada de extrema-esquerda Década de 1980 Foge da Itália e passa a maior parte do tempo no México.
|
138 |
+
É condenado à prisão perpétua pela Justiça italiana, acusado de quatro homicídios Década de 1990 Se exila em Paris (França), protegido por legislação do governo Mitterrand 2004 Sem Miterrand, França aprova extradição para Itália; foge em direção ao Brasil, onde vive clandestino 2007 É preso no Rio 2009 Ministério da Justiça dá a ele status de refugiado político, mas STF aprova extradição 2010 Lula, então presidente, decide pela permanência de Battisti no Brasil 2011 STF valida decisão de Lula, e Battisti é solto.
|
139 |
+
Governo concede visto de permanência a ele 2015 Juíza da 20ª Vara Federal de Brasília atende a pedido do Ministério Público e determina a deportação de Battisti.
|
140 |
+
A defesa recorre da decisão 2017 Na quarta (4.out), é detido em Corumbá (MS).
|
141 |
+
Consegue habeas corpus na sexta (6.out) Pela primeira vez desde que assumiu o comando da seleção brasileira há quase 16 meses, o técnico Tite afirmou que já pensou em continuar no cargo após a Copa.
|
142 |
+
Ele assumiu o posto em junho de 2016 após a demissão de Dunga.
|
143 |
+
O treinador iniciou o seu trabalho fora da zona de classificação para a Copa do Mundo, mas com uma arrancada surpreendente conseguiu nove vitórias consecutivas e dois empates e obteve a vaga no Mundial com antecipação.
|
144 |
+
O treinador ainda coleciona mais duas vitórias e uma derrota em jogos amistosos.
|
145 |
+
"Pensar eu pensei [seguir após Mundial], mas ainda é utopia, temos que crescer muito a mentalidade para esse tipo de coisa acontecer.
|
146 |
+
Temos que evoluir como técnicos, como dirigentes e como formadores de opinião.
|
147 |
+
Eu cobiço o que a Alemanha tem, que consegue deixar tanto tempo um treinador para trabalhar", afirmou Tite.
|
148 |
+
Na entrevista, o treinador falou sobre o o duelo contra o Chile, marcado para esta terça-feira (10), às 20h30, no Allianz Parque, pela última rodada das eliminatórias para a Copa do Mundo.
|
149 |
+
Uma vitória da seleção brasileira pode ajudar a Argentina a se classificar sem a repescagem ao Mundial.
|
150 |
+
O time dirigido por Sampaoli enfrenta o eliminado Equador em Quito.
|
151 |
+
Atualmente, o Chile ocupa a terceira posição com 26 pontos.
|
152 |
+
Já a Argentina está na sexta posição com 25 pontos.
|
153 |
+
Entre os dois times estão Colômbia, quarta colocada (26 pontos), e o Peru, quinto colocado (25 pontos).
|
154 |
+
"Vamos fazer o que é mais importante para nós, para a dignidade de um povo, da imprensa.
|
155 |
+
Não é nada de extraordinário, que é fazer o melhor.
|
156 |
+
Os outros vão colher o fruto do trabalho que fizeram", disse o treinador.
|
157 |
+
"A classificação será determinada com o trabalho feito nos 18 jogos.
|
158 |
+
Não será merecimento por apenas um jogo e sim pela sequência", completou.
|
159 |
+
Tite fará apenas duas mudanças em relação ao time que empatou com a Bolívia.
|
160 |
+
O goleiro Ederson, que terá a primeira oportunidade como titular, entra no lugar de Alisson, enquanto Marquinhos ocupa a vaga de Thiago Silva.
|
161 |
+
Na lateral esquerda, Alex Sandro será mantido.
|
162 |
+
"Não posso desestruturar a equipe em demasia.
|
163 |
+
Mexo no goleiro, na lateral [mantém o Alex Sandro] Normalmente são duas mudanças.
|
164 |
+
Se mexer demais, perde a organização, a coordenação e a preparação para o Mundial.
|
165 |
+
Quando começa a mexer nos três setores, essa oportunidade se perde em função da falta de estrutura.
|
166 |
+
Por isso que tomei o cuidado de não mexer excessivamente.
|
167 |
+
Porque aí você vira ''Professor Pardal'', completou.
|
168 |
+
O STF (Supremo Tribunal Federal) negou na quinta-feira (5) um recurso para analisar um pedido de impeachment contra o ministro Gilmar Mendes.
|
169 |
+
O caso foi levado ao Supremo em janeiro por um grupo de juristas, que entrou com um mandado de segurança contestando decisão do então presidente do Senado, Renan Calheiros (PMDB-AL), que, em setembro de 2016, arquivou um pedido de impeachment contra Gilmar.
|
170 |
+
Para os juristas, Renan não poderia arquivar sumariamente o pedido de impeachment:
|
171 |
+
A) por não ter competência legal para tanto, eis que tal competência é da Mesa do Senado;
|
172 |
+
B) por estar legalmente impedido (por suspeição) de praticar o ato hostilizado".
|
173 |
+
Segundo eles, o ato deveria ser anulado e reavaliado.
|
174 |
+
O documento é assinado por Celso Antonio Bandeira de Mello, Fabio Konder Comparato, Sérgio Sérvulo da Cunha, Eny Raimundo Moreira, Roberto Átila Amaral e Alvaro Augusto Ribeiro Costa.
|
175 |
+
Relator do caso, Edson Fachin negou o pedido do grupo, que recorreu.
|
176 |
+
Para Fachin, "embora os impetrantes discordem das conclusões a que chegou o então presidente do Senado, não cabe a esta corte rever seu mérito, apenas verificar a legalidade dos atos e dos procedimentos por ele praticados, no exercício legítimo de sua função constitucional".
|
177 |
+
O caso foi julgado no plenário virtual do STF entre os dias 29 de setembro e 5 de outubro.
|
178 |
+
Gilmar não participou e nem o ministro Marco Aurélio, que se declarou suspeito.
|
179 |
+
Os outros ministros votaram contra o prosseguimento da ação.
|
180 |
+
O aplicativo de mensagens instantâneas WhatsApp disponibilizou para download sua versão para negócios anunciada em setembro.
|
181 |
+
Em fase de testes, o serviço está sendo usado por algumas empresas selecionadas por meio de um pré-cadastro no site da empresa.
|
182 |
+
Com o WhatsApp Business, as companhias podem registrar suas contas com telefones fixos e configurar um perfil público, com verificação semelhante à que já é usada nas redes sociais e informações mais detalhadas do que as previstas hoje no serviço tradicional, como endereço, descrição e site do negócio.
|
183 |
+
Também é possível estabelecer horários específicos em que o Whatsapp estará ativo e definir uma resposta automática para os clientes.
|
184 |
+
A ideia é separar os perfis pessoais dos corporativos, que hoje funcionam de maneira "bastante rudimentar", como definiu a empresa quando comunicou sobre o lançamento do novo serviço.
|
185 |
+
Para as grandes companhias, segundo a mesma nota, o WhatsApp quer fazer do aplicativo uma solução para operar em escala - para fornecer notificações sobre horários de voo, no caso das companhias aéreas, por exemplo, confirmações de entrega e outras atualizações.
|
186 |
+
Em entrevista ao jornal americano The Wall Street Journal logo após o anúncio do novo serviço, o chefe de operações do WhatsApp Matt Idema confirmou que há intenção de cobrar das empresas pelo serviço futuramente, sem dar mais detalhes sobre como isso funcionaria ou quanto custaria.
|
187 |
+
Executivos da companhia já haviam afirmado que o lançamento de um serviço para empresas fazia parte da estratégia para monetizar o aplicativo.
|
188 |
+
No Brasil, estão testando o WhatsApp Business companhias como o banco Itaú, que integrou o aplicativo à sua plataforma de atendimento aos clientes do serviço Personalitté Digital, e a companhia aérea holandesa KLM, que disponibilizou o serviço para aqueles que, no momento da reserva ou do check-in feito no site da empresa, selecionarem a opção para receber informações via WhatsApp.
|
189 |
+
Em julho, o aplicativo, lançado em 2009 e adquirido por US$ 19 milhões pelo Facebook em 2014, comemorou a marca de um bilhão de usuários ativos por dia.
|
190 |
+
Pouco mais de 10% desse total, 120 milhões, estão no Brasil.
|
191 |
+
A procuradora-geral da República, Raquel Dodge, defendeu a manutenção das prisões de Joesley Batista e Ricardo Saud, executivos da JBS.
|
192 |
+
Em dois documentos enviados na noite de sexta-feira (6) ao STF (Supremo Tribunal Federal), Dodge afirma que há risco de que eles fujam ou atrapalhem as investigações.
|
193 |
+
Ela aponta também a possibilidade de que eles voltem a cometer crimes.
|
194 |
+
Em 14 de setembro, o ministro Edson Fachin, relator do caso JBS no Supremo, converteu a prisão de Batista e de Saud de temporária (5 dias) para preventiva, sem prazo definido.
|
195 |
+
Para Dodge, a liberdade de Joesley e Saud oferece risco às investigações, pois eles são suspeitos de ocultar fatos e de sonegar provas que comprometem outras pessoas.
|
196 |
+
"É irretocável a sua anterior decisão, que, antes de deferir a prisão temporária do ora agravante, determinou a suspensão cautelar da eficácia do acordo de colaboração premiada previamente firmado", escreveu Dodge.
|
197 |
+
Segundo a procuradora-geral, "estão presentes os pressupostos e requisitos indispensáveis à decretação da prisão preventiva, sendo esta necessária a garantir a ordem pública (evitar reiteração delitiva) e por conveniência da instrução penal (risco de destruição ou ocultação de provas)".
|
198 |
+
"Necessária, portanto, a prisão preventiva também para proteção da ordem pública, em vista da gravidade em concreto dos crimes em apuração, da personalidade do agente e da necessidade de prevenir a reiteração delitiva, já que o esquema criminoso é sistêmico."
|
199 |
+
Dodge destaca que os executivos têm dinheiro para fugir do país.
|
200 |
+
No caso de Saud, ela ressalta que ele possui cidadania paraguaia e que não havia contado aos procuradores que tem uma conta bancária no Paraguai.
|
201 |
+
ACORDO DE DELAÇÃO Ela destaca que as decisões pelas prisões preventivas foram feitas de maneira correta, uma vez que seu antecessor, Rodrigo Janot, rescindiu os acordos de delação de Batista e Saud.
|
202 |
+
Tanto para Janot como para Dodge, houve descumprimento de uma cláusula do acordo de delação que trata de omissão de má-fé, o que justificou rever os benefícios.
|
203 |
+
O centro da crise da delação da JBS é uma gravação, datada de 17 de março, em que Joesley e Saud falam de possível atuação do ex-procurador Marcello Miller no acordo de delação quando ainda atuava no Ministério Público -ele deixou o cargo oficialmente em 5 de abril.
|
204 |
+
O áudio foi entregue pelos delatores à PGR no dia 31 de agosto.
|
205 |
+
Dodge diz que em nenhum momento os delatores contaram ter sido instruídos por Miller durante as negociações do acordo.
|
206 |
+
ÁUDIO Ela também destaca que possivelmente os delatores não tinham a intenção de entregar um áudio de uma conversa gravada acidentalmente e que embasou a prisão.
|
207 |
+
"Até o momento, os indícios sugerem que a omissão destes fatos foi intencional, premeditada e de má-fé", diz Dodge.
|
208 |
+
"Pairam dúvidas, inclusive, se o arquivo de áudio 'PIAUI RICARDO 3 17032017.WAV' foi entregue às autoridades por engano ou se foi mais uma estratégia da defesa, pois poderiam ter conhecimento de que a Polícia Federal teria conseguido recuperar o arquivo apagado dos equipamentos eletrônicos entregues pelos delatores."
|
209 |
+
Ela diz ainda que o acordo de colaboração premiada firmado com o Ministério Público Federal "não pode ser utilizado para blindar o colaborador de forma absoluta da aplicação da lei".
|
210 |
+
"Os fatos de que se tem notícia são gravíssimos, o caso é emblemático e sem precedentes na história do país, de forma que as investigações devem ser conduzidas com seriedade e cercadas de extrema cautela pelo Ministério Público e pelo Poder Judiciário."
|
211 |
+
A procuradora-geral também já se manifestou pela manutenção da prisão de Wesley Batista,, irmão de Joesley e também sócio da JBS, decretada pela Justiça Federal em São Paulo no âmbito de uma investigação sobre uso de informações privilegiadas para lucrar no mercado financeiro -prática conhecida como "insider trading".
|
212 |
+
O governo da Califórnia decretou nesta segunda-feira (9) estado de emergência na região do vale de Napa, no norte do Estado, que passa por incêndios florestais ainda fora de controle que já deixaram 10 pessoas mortas.
|
213 |
+
As chamas, que começaram nas reservas naturais, avançaram nos últimos dias com ventos de 80 km/h e chegaram às cidades.
|
214 |
+
Mais de 1.500 imóveis comerciais e residenciais foram destruídos e 20 mil pessoas, desalojadas.
|
215 |
+
Segundo as autoridades californianas, ao menos 14 focos de incêndio concentrados em uma faixa de 300 km de extensão estão sob combate na região.
|
216 |
+
Nenhum deles ainda foi controlado.
|
217 |
+
Além da mata e das construções, também estão ameaçadas as vinícolas desta região, uma das principais produtoras de vinho dos EUA.
|
218 |
+
São oito os condados mais afetados, incluindo Napa, Sonoma, Yuba e Mendocino.
|
219 |
+
Incêndios na Califórnia A cidade de Santa Rosa, a maior da região, foi uma das mais atingidas.
|
220 |
+
Casas, um supermercado e um hotel foram destruídos e parte da cidade precisou ser esvaziada.
|
221 |
+
No fim da tarde, as autoridades decretaram toque de recolher pelo risco de saques.
|
222 |
+
"É um inferno como você nunca viu antes", disse à agência de notícias Associated Press Marian Williams, que teve que deixar sua casa como seus vizinhos de madrugada quando o fogo chegou às vinícolas de Kenwood.
|
223 |
+
"Eu pude sentir o calor do fogo se aproximando quando peguei meu carro.
|
224 |
+
As árvores estavam queimando como tochas."
|
225 |
+
"Podíamos ver o céu ficando vermelho.
|
226 |
+
Só percebemos que vinha o incêndio no último segundo.
|
227 |
+
Tinha fumaça por todos os lados", disse Jesús Torres, de Anaheim, à rede de televisão CBS.
|
228 |
+
O maior número de mortos, sete, foi registrado em Sonoma.
|
229 |
+
Outras duas mortes ocorreram em Napa e uma em Mendocino.
|
230 |
+
O diretor do departamento florestal californiano, Ken Pimlott, disse que há desaparecidos e outros feridos graves, mas sem mencionar números.
|
231 |
+
A área afetada pelas chamas chega a 176 km² e ao menos 114 mil residências estão sem energia elétrica.
|
232 |
+
A fumaça espessa dos incêndios pode ser avistada de San Francisco, a quase cem quilômetros do vale de Napa.
|
233 |
+
O presidente do Banco Nacional de Desenvolvimento Econômico e Social (BNDES), Paulo Rabello de Castro, negou nesta segunda-feira que tenha havido irregularidades nos empréstimos concedidos pela instituição ao grupo JBS.
|
234 |
+
O executivo disse que o banco tem mecanismos de monitoramento, mas não pode ser "babá de empresário".
|
235 |
+
"Aqui com certeza não houve irregularidades; mas o tomador tem que ter responsabilidade de usar condizente os recursos", afirmou Rabello de Castro a jornalistas.
|
236 |
+
As afirmações acontecem após reportagens da mídia local nos últimos dias terem afirmado que a JBS, que está no centro de um escândalo de corrupção, usou parte dos recursos tomados com o BNDES para fins distintos do previsto.
|
237 |
+
"Acho que esse dinheiro foi usado efetivamente no negócio, mas à medida que os recursos eram investidos iam caindo como um caminhão deixando grãos de soja caindo pelo caminho.
|
238 |
+
Não é o BNDES que vai correr atrás do caminhão", adicionou.
|
239 |
+
O BNDES emprestou mais de 8 bilhões de reais ao grupo para a compra de empresas entre 2007 e 2011 e há suspeitas de que parte desse dinheiro foi desviado, o que pode ter dado um prejuízo ao banco de mais de 1 bilhão.
|
240 |
+
Após a operação Bullish, da Polícia Federal, apontar supostos favorecimentos no repasse de recursos à JBS, o banco montou uma comissão interna sobre o assunto, mas não encontrou desvios cometidos por funcionários.
|
241 |
+
FINANCIAMENTO EXTERNO O banco vem sendo cobrado pela União a devolver gradualmente os mais de 500 bilhões de reais emprestados nos últimos anos.
|
242 |
+
Em setembro, o BNDES devolveu 33 bilhões e outros 17 bilhões serão devolvidos até o fim do ano.
|
243 |
+
Para diversificar as fontes de recursos, o banco pretende repensar o uso do Fundo de Amparo do Trabalhador (FAT), disse Rabello de Castro, adiantando que vai sugerir ao Codefat mudanças na forma de repasse de recursos ao banco.
|
244 |
+
Até 2007, a fonte principal era o FAT, seguida por empréstimos internacionais de órgãos multilaterais e captações domésticas.
|
245 |
+
"Vamos voltar o FAT como nossa principal fonte, talvez com sistema de remuneração diferente atualizado", disse o executivo.
|
246 |
+
Mas o BNDES deve voltar a buscar captações de recursos de organismos multilaterais como KFW, o banco dos Brics, o China Development Bank e Agência Francesa de Desenvolvimento.
|
247 |
+
Em novembro, Rabello de Castro visitará agências de rating nos EUA para tentar obter uma classificação melhor do que a do soberano para o banco.
|
248 |
+
"Nosso rating é pelo menos 3 pontos percentuais acima do rating soberano, para ser discreto", disse.
|
249 |
+
Sobre sua filiação ao PSC, Rabello de Castro não descartou uma candidatura presidencial em 2018, mas disse que uma decisão ainda não foi tomada.
|
250 |
+
O presidente-executivo da Apple, Tim Cook, destacou nesta segunda-feira (9) o papel de uma pequena empresa francesa por trás de recursos inovadores nos mais recentes iPhones, antes de uma reunião com o presidente Emmanuel Macron, que tem defendido maior rigor nos impostos sobre empresas de tecnologia.
|
251 |
+
Cook fez uma visita surpresa à Eldim, que desenvolve tecnologia óptica usada no sistema de reconhecimento facial dentro dos novos iPhone X, que devem chegar ao mercado no mês que vem a partir de 999 dólares.
|
252 |
+
O Face ID, como o recurso de reconhecimento facial do novo aparelho é conhecido, substituirá o sensor de impressão digital para destravar o telefone, e é um elementos da campanha da Apple para se diferenciar de dispositivos concorrentes.
|
253 |
+
"Parabéns por seu trabalho!", disse Cook em sua conta oficial no Twitter, em francês.
|
254 |
+
Uma foto dele conversando com funcionários da Eldim também foi publicada.
|
255 |
+
Cook depois se reuniu com Macro, que tem defendido que a Apple e outras companhias de tecnologia, como a Amazon.com, paguem mais impostos na Europa.
|
256 |
+
"Parabéns à Europa por agir com determinação para fazer com que regras tributárias e a justiça sejam respeitadas", tuitou Macron na semana passada, saudando autoridades da União Europeia por levarem a Irlanda, estado-membro do bloco, à Justiça para cobrar 13 bilhões de euros em impostos retroativos da Apple.
|
257 |
+
Um representante da presidência francesa disse que Macron e Cook não debateram sobre o passado e descreveram as conversas sobre regulamentação de plataformas e de políticas tributárias como construtivas e promissoras.
|
258 |
+
Questionado se haviam discutido a proposta francesa de cobrar impostos sobre a receita de grande companhias de tecnologia, e não sobre o lucro, o assessor de Macron disse que "eles não discutiram questões específicas."
|
259 |
+
A Volkswagen projeta um crescimento de 40% no Brasil nos próximos quatro anos, afirma Pablo Di Si, novo presidente da montadora, anunciado nesta segunda-feira (9).
|
260 |
+
"A economia vai seguir crescendo.
|
261 |
+
Observamos um descolamento da política e da econômica no país."
|
262 |
+
O aumento da demanda argentina também deverá garantir a alta das exportações, que, no caso da montadora, foi de 62% no acumulado deste ano até setembro, diz o executivo -que vem justamente da sede argentina da companhia.
|
263 |
+
"Precisamos melhorar a competitividade para exportar também a novos mercados emergentes, como Turquia, Egito, Chile."
|
264 |
+
A empresa prevê 20 lançamentos até 2020 no Brasil.
|
265 |
+
O primeiro deles, o novo Polo, já foi colocado no mercado, e o segundo, o sedã Virtus, será lançado em janeiro de 2018.
|
266 |
+
Outros produtos serão anunciados no próximo ano, afirma ele, que não deu mais detalhes.
|
267 |
+
Grande parte do investimento de R$ 7 bilhões previsto até 2020 será destinado à melhoria de produção e aos fornecedores, segundo Di Si.
|
268 |
+
"A cadeia também passou por uma retração.
|
269 |
+
Um dos maiores perigos é que o fornecimento não acompanhe a retomada."
|
270 |
+
Em relação ao fim do Inovar-Auto e uma possibilidade de aumento das importações de componentes, Di Si afirma que é preciso de os fornecedores locais tenham mais competitividade.
|
271 |
+
"O Rota 2030 também ajudará a desenvolver o restante da indústria", diz.
|
272 |
+
A nova gestão também planeja modernizar a distribuição.
|
273 |
+
Hoje, são 530 as concessionárias da Volkswagen.
|
274 |
+
"É preciso ter uma forma menos burocrática e mais rápida de se relacionar com os clientes.
|
275 |
+
O objetivo é aumentar as vendas para sonhar em assumir a liderança."
|
276 |
+
A empresa é hoje líder em exportações, mas está na terceira posição em vendas no mercado nacional, com 12% de participação.
|
277 |
+
A General Motors lidera (18,2%), seguida pela Fiat (13%).
|
278 |
+
Outro plano em estudo pela montadora é iniciar a importação de veículos elétricos para o Brasil em 2018.
|
279 |
+
"Antes, porém, é preciso ter certeza que haverá estações de carregamento elétrico, e em quais Estados.
|
280 |
+
É preciso ter um ecossistema.
|
281 |
+
Depois disso, é preciso capacitar a rede de concessionárias."
|
282 |
+
CAMINHÕES A Volkswagen Caminhões e Ônibus anunciou nesta segunda (9) que decidiu cancelar as férias coletivas de funcionários da sua fábrica em Resende, no Rio de Janeiro, pela primeira vez em seis anos, motivada por sinais de retomada na demanda por veículos pesados pelo lançamento da família de modelos leves urbanos, disse o presidente da companhia para a América Latina, Roberto Cortes.
|
283 |
+
"A Bolsa se valorizou 77% nos últimos seis meses, o risco Brasil caiu, o real está estável e as taxas de juros à metade do que eram.
|
284 |
+
De outubro a dezembro, estamos esperando um aumento de 25% nas vendas", afirmou o executivo.
|