Commit b72dc7ac authored by Wesnydy Ribeiro's avatar Wesnydy Ribeiro
Browse files

vlibras translation project 2020

parent a69ca8c4
......@@ -10,4 +10,8 @@ include vlibras_translate/pygtrie_CharTrie_names_pickle_wout_inter_3
include vlibras_translate/palavras_compostas_e_sinonimos
include vlibras_translate/lista_branca
include vlibras_translate/lugares.csv
include vlibras_translate/lugares
include vlibras_translate/famosos.csv
include vlibras_translate/famosos
include vlibras_translate/expressoes_com_palavras_removiveis
include vlibras_translate/abreviaturas
\ No newline at end of file
# VLibras Translate
![Version](https://img.shields.io/badge/version-v1.1.8-blue.svg)
![Version](https://img.shields.io/badge/version-v1.2.1-blue.svg)
![Platform](https://img.shields.io/badge/platform-Linux-lightgrey.svg)
![License](https://img.shields.io/badge/license-LGPLv3-blue.svg)
![VLibras](https://img.shields.io/badge/vlibras%20suite-2019-green.svg)
......@@ -24,7 +24,7 @@ O VLibras é um projeto desenvolvido no Laboratório de Aplicações de Vídeo D
- [Licença](#licença)
## Pré-requisitos
- Java 8 (com compilador)
- Java 8 (com compilador, idealmente utilizar o OpenJDK 8)
- Hunspell (`sudo apt-get install libhunspell-dev`)
- Cython (`pip install Cython`)
- Python 3
......@@ -160,6 +160,22 @@ vlibras-translate-file -p minha_pasta/texto_teste_ptbr1 minha_pasta/texto_teste_
-->
## Log
#### 1.2.1
- Nova opção para customizar modelo utilizado nas traduções neurais
#### 1.2.0
- Implementação de mecanismo de health-check para o tradutor neural
- Melhorias no tratamento de abreviações e números ordinais
- Correção ao requisitar traduções em modo headless
#### 1.1.11
- Atualizações e melhorias no módulo de tradução neural
- Correções no tratamento de números cardinais
- Correções nas ferramentas de pré-processamento
#### 1.1.10
- Correção de bugs envolvendo números e o processamento de glosas. Suporte para pré-processamento sem BPE
#### 1.1.8
- Correção de bugs
......
......@@ -2,19 +2,19 @@ import re
import setuptools
with open("README.md", "r", encoding='utf-8') as fh:
with open('README.md', 'r', encoding='utf-8') as fh:
long_description = fh.read()
version = re.search(r'https:\/\/img\.shields\.io\/badge\/version-v([\d\.]+)-blue\.svg', long_description).group(1)
version = re.search(r'https:\/\/img\.shields\.io\/badge\/version-v((?:[\d\.]|rc|dev|post|a|b)+)-blue\.svg', long_description).group(1)
setuptools.setup(
name="vlibras-translate",
name='vlibras-translate',
version=version,
author="MoraesCaio (LAVID-UFPB)",
author_email="caiomoraes.cesar@gmail.com",
description="VLibras (LAVID-UFPB) translation module for translating brazilian portuguese to LIBRAS.",
author='MoraesCaio (LAViD-UFPB)',
author_email='caiomoraes.cesar@gmail.com',
description='VLibras (LAViD-UFPB) translation module for translating brazilian portuguese to LIBRAS.',
long_description=long_description,
long_description_content_type="text/markdown",
url="http://www.vlibras.gov.br/",
long_description_content_type='text/markdown',
url='http://www.vlibras.gov.br/',
include_package_data=True,
entry_points={
'console_scripts': [
......@@ -30,20 +30,21 @@ setuptools.setup(
'psutil',
'hunspell;platform_system=="Linux"', # https://setuptools.readthedocs.io/en/latest/setuptools.html?highlight=install_requires#declaring-platform-specific-dependencies
'interruptingcow',
'loguru'
],
extras_require={
'deeplearning': ['vlibras-deeplearning'], # TODO: confirmar se será esse o nome do pacote
'deeplearning': ['vlibras-deeplearning>=1.1.0'],
},
packages=setuptools.find_packages(),
classifiers=[
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Operating System :: POSIX :: Linux",
"Operating System :: Microsoft :: Windows",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Development Status :: 5 - Production/Stable",
"Topic :: Text Processing :: Linguistic",
"Natural Language :: Portuguese (Brazilian)",
'License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)',
'Operating System :: POSIX :: Linux',
'Operating System :: Microsoft :: Windows',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Development Status :: 5 - Production/Stable',
'Topic :: Text Processing :: Linguistic',
'Natural Language :: Portuguese (Brazilian)',
],
)
......@@ -234,4 +234,4 @@ def main():
if __name__ == '__main__':
main()
main()
\ No newline at end of file
abade - Ab., Ab.e
abecedário - abc.
abril - abr.
absoluto - abs., absol.
acadêmico - acad., acadêm.
adjetivo - adj.
administração - adm.
advérbio - adv.
advogado - adv.º
aeronáutica - aeron.
agosto - ago.
agricultura - agr., agric.
alameda - Al.
alfabeto - alf.
álgebra - álg.
almirante - ALM., alm., Alm.te
altitude - alt., altit.
alvará - alv.
amigo - am.o
anatomia - anat.
antes de Cristo - a.C., A.C.
antônimo - antôn.
anual - an.
apartamento - ap., apart., apto., apt.º
aproximadamente - aprox.
arcebispo - arceb., arc.
aritmética - arit.
arqueologia - arqueol.
arquipélago - arquip.
arquitetura - arquit.
arquivo - arq.
artigo - art., art.o
assembleia - assem., assemb.
assinatura - ass.
assistência - assist.
associação - assoc.
astronomia - astr.
atenciosamente - at.te, atte.
audiovisual - av.
aumentativo - aum.
automóvel - aut., autom.
autores - AA.
auxiliar - aux.
avenida - Av.
bacharel - B.el
balística - balíst.
banheiro - W.C.
barão - Bar.
batalhão - btl.
Bíblia - Bíbl.
bibliografia - bibliogr., bibl.
biblioteca - bibliot.
bimensal - bim., bimen.
biofísica - biofís.
biografia - biogr.
biologia - biol.
bioquímica - bioq.
bispado - bisp., bispd.
boletim - bol.
bombeiros - bomb.
botânica - bot.
brasileiro - br., bras.
brigadeiro - Brig., brig., Brig.o
budismo - bud.
burocracia - bur., buroc.
caixa - cx.
capacidade - capac.
capitão - capt.
cerca de - ca.
ciência - ciênc.
científico - cient.
citação - cit.
clérigo - Cl.
código - cód.
código civil - cód. civil, cód. civ., C.C.
coletivo - colet.
comadre - com.e
comandante - comte.
comendador - Com.or
companhia - Cia., C.ia
conde - C.de
condessa - C.dessa
condutor - cond.
confederação - confed.
conferência - conf.
conselheiro - cons.º, consel., conselh.
constituição - Const.
construção - constr.
contabilidade - cont.
coronel - cel.
crédito - créd.
cronologia - cronol.
culinária - cul., culin.
decreto - dec.
decreto - decr.
definitivo - defin., definit.
democracia - democr.
densidade - dens.
departamento - dep.
departamentos - deps.
depois de Cristo - d.C., D.C.
deputado - Dep.
desconto - desc.
desembargador - desemb., Desemb., Des.or, Des.dor
desenho - des., desen.
dezembro - dez.
dicionário - dic.
diferente - dif.
Digníssimo - Dig.mo, DD.
diploma - dipl.
documento - doc.
documentos - docs.
dom - D.
dona - Da.
doutor - Dr.
doutora - Dra., Dr.ª
doutoras - Dras., Dr.as
doutores - Drs.
dúzia - dz.
eclesiástico - ecles.
economia - econ.
edição - ed.
edifício - edif.
editores - EE.
educação - educ.
elemento - elem.
eletricidade - eletr.
eletrônica - eletrôn.
em mão - E.M.
embaixador - Emb., emb., Emb.or
Eminência - Em.ª
enfermeiro - enf.
engenheiro - eng., eng.º
equivalente - equiv.
era cristã - E.C.
escritor - escr.
espécie - esp.
espera deferimento - E.D.
espera resposta - E.R.
estatística - estat., estatíst.
estrada - Est.
et cetera - etc.
Excelência - Ex.ª, Ex.a, Exa.
Excelentíssimo - Ex.mo, Exmo.
exclamação - excl., exclam.
exemplo - ex.
experiência - exper.
exportação - export.
expressão - expr.
fábrica - fáb.
faculdade - fac.
familiar - fam.
farmácia - farm.
fascículo - fasc.
federação - fed., feder.
feminino - fem.
fenômeno - fenôm.
fevereiro - fev.
figura - fg., fig.
filosofia - filos., fil.
finanças - fin.
fiscal - fisc.
física - fís.
folclore - folc., folcl.
folhas - fls.
formulário - form.
fotografia - fot., foto.
francês - fr.
frei - Fr.
fundação - fund.
futuro - fut.
general - G.al, Gen., gen.
gênero - gên.
geometria - geom.
geral - ger.
germânico - germ.
gíria - gír.
glossário - gloss.
governador - Gov.
governo - gov.
gráfico - gráf.
gramática - gram.
grande - grd.
gravura - grav.
habitante - hab.
hebraico - hebr.e
heráldica - herál., heráld.
herdeiro - herd.o
hidráulica - hidr., hidrául.
higiene - hig.
hipotético - hip.
história - hist.
honorário - hon.
honoris causa - h.c.
ibidem - ib., ibid.
idem - id.
igreja - igr.
ilustríssimo - Il.mo
imigração - imigr.
importação - import.
imprensa - impr.
in loco - In loc.
índice - índ.
indústria - ind., indúst.
informação - inform.
instituto - inst.
invariável - invar.
irregular - irreg.
isto é - i.e.
itálico - it., itál.
janeiro - jan.
jornal - jorn.
judaísmo - jud.
juiz - J.z
julho - jul.
junho - jun.
júnior - Jr.
jurídico - jur.
fora de combate - K.O.
laboratório - lab., laborat.
largura - larg.
latim - lat.
legislação - leg., legisl.
léguas - légs.
libra - lb.
limitada - Lt.da, Ltda., L.da
linguagem - ling.
literatura - lit., liter.
locução - loc.
lógica - lóg.
longitude - long.
madame - M.me, Mme.
maiúsculo - maiúsc.
major - maj.
março - mar.
marechal - mal.
matemática - mat.
máximo - máx.
mecânica - mec.
medicina - med.
médico - méd.
memorando - memo., memor.
mensal - mens.
meritíssimo - MM.
mestra - M.ª
mestre - Me.
meteorologia - met., meteor.
minha - m.ª
ministro - min.
minúsculo - minúsc.
senhor - Mr.
senhora - Mrs.
morfologia - morf., morfol.
muito - m.to
município - mun.
música - mús.
nacional - nac.
negativo - neg.
neologismo - neol.
Nordeste - N.E.
Noroeste - N.O., N.W.
Nossa Senhora - N. Sra., N. Sr.ª
Nosso Senhor - N. S.
novembro - nov.
Novo Testamento - N.T.
numeral - num.
numeral ordinal - num. ord.
obrigado - obr.o
observação - obs.
ocidente - ocid.
oficial - of.
oftalmologia - oft., oftalm.
óptica - ópt.
organização - org., organiz.
ortografia - ort., ortogr.
outubro - out.
padre - Pe.
página - pág.
páginas - págs., pp.
pago - pg.
palavra - pal.
particípio - part.
pastor - Pr.
pastora - Pra., Pr.ª
peça - pç., pça.
pede deferimento - P.D.
pejorativo - pej.
perfeito - perf.
peso bruto - P.B.
peso líquido - P.L.
Philosophiae Doctor - Ph.D.
plural - pl.
poético - poét.
polegada - pol.
política - polít.
por exemplo - p.ex., e.g.
por extenso - p. ext.
por mão própria - P.M.P.
português - port.
post mortem - p.m.
post scriptum - P.S.
prefeito - pref.
preposição - prep.
presidente - Pres., Presid.
produção - prod.
professor - prof.
professora - profa., prof.ª
pronome - pron.
quantidade - quant.
quantidade bastante - q.b.
quanto - q.to
quarteirão - quart.
quartel-general - Q.G.
quilate - ql.
química - quím.
quinzenal - quinz.
radical - rad.
rainha - R.ª, Ra.
referência - ref.
registro - rg.
relatório - relat.
religião - relig.
remetente - rem.te
república - rep., repúb.
descanse em paz - R.I.P.
residência - res.
reverendíssimo - Revmo., rev.mo
reverendo - rev., rev.o
rodovia - Rod.
rodoviária - Rdv.
santo - S.to, Sto.
sargento - sarg.
sinal de socorro - S.O.S.
secretaria - secr.
século - séc.
seguinte - seg.
sem data - s.d.
semestre - sem.
senhor - Sr.
senhora - Sr.ª, Sr.a, Sra.
senhoras - Sras., Sr.as
senhores - Srs., S.res, Sr.es
senhorita - Srt.ª, Sr.ta, Srta.
serviço - serv.
setembro - set.
símbolo - símb.
singular - sing.
sociedade - soc.
Sociedade Anônima - S.A.
sociologia - sociol.
substantivo feminino - s.f.
substantivo masculino - s.m.
Sudeste - S.E.
Sudoeste - S.O., S.W.
sufixo - suf.
também - tb.
tangente - tang.
tecnologia - tec., tecn., tecnol.
telecomunicações - telec., telecom.
telefone - tel., tele.
televisão - tv., telev.
temperatura - temp., temper.
tenente - Ten., T.te
terapêutica - terap., terapêut.
território - terr., territ.
título - tít.
tópico - tóp.
trabalho - trab.
tradução - trad.
tráfego - tráf.
transporte - transp.
travessa - Trav.
tribunal - trib.
trimestre - trim.
unidade - un.
uniforme - unif.
universidade - univ., univers.
uso externo - u.e.
uso interno - u.i.
velocidade - vel.
por exemplo - v.g.
verbo de ligação - v.lig.
verbo intransitivo - v.i.
verbo transitivo - v.t.
vereador - Ver.
versus - vs.
volume - vol.
volumes - vols.
Vossa Alteza - V.A.
Vossa Eminência - V.Ema., V.Em.a, V.Em.ª
Vossa Excelência - V.Exa., V.Ex.a, V.Ex.ª
Vossa Majestade - V.M.
Vossa Reverendíssima - V.Revma., V.Rev.ma
Vossa Santidade - V.S.
Vossa Senhoria - V.Sa., V.S.ª
xenofobia - xenof.
xerografia - xerog., xerogr.
xilogravura - xilog.
zoologia - zool.
zootecnia - zoot., zootec.
\ No newline at end of file
......@@ -227,4 +227,4 @@ def main():
if __name__ == '__main__':
main()
main()
\ No newline at end of file
......@@ -10,6 +10,7 @@
import argparse
import re
from loguru import logger
LATIN_CHARS = 'A-ZÁÉÍÓÚÀÂÊÔÃÕÜÇa-záéíóúàâêôãõüç'
......@@ -19,17 +20,31 @@ class CharPreprocessing:
sentence = self._fix_decimals(sentence)
# some ordinal numbers use '°' which can raise an exception on nltk
sentence = sentence.replace('°', 'º')
sentence = self.sub_range(sentence)
sentence = self.sub_SI_units(sentence)
sentence = self.remove_useless_chars(sentence, glosa=glosa)
sentence = self._fix_aelius_final_dot(sentence)
sentence = self.mesoclise_enclise_to_proclise(sentence)
return sentence
def remove_mesoclise_enclise(self, sentence):
def sub_range(self,sentence):
"""Subs range numbers - numbers for numbers até numbers."""
return re.sub(r'(\d+)(-)(\d+)',r'\1 até \3',sentence)
sentence = re.sub(rf'([{LATIN_CHARS}]+)-(lhes|lhe|nas|nos|vos|as|me|no|na|os|se|te|a|o)(-([{LATIN_CHARS}]+)|\b)', r'\1\4', sentence)
def sub_SI_units(self, sentence):
"""Rewrite SI units for full form."""
# TODO For future version
# re.sub(rf'([{LATIN_CHARS}]+)-(lhes|lhe|nas|nos|vos|as|me|no|na|os|se|te|a|o)(-([{LATIN_CHARS}]+)|\b)', r'\1\4 \2', sentence)
si_units = {'V':'Volts',
'M':'Metros',
'C':'Coulombs'}
for unit in si_units:
sentence = re.sub(fr'(\d+)(\s+)({unit})',fr'\1\2{si_units[unit]}',sentence)
return sentence
def mesoclise_enclise_to_proclise(self, sentence):
logger.debug(f'input: {sentence}')
sentence = re.sub(rf'([{LATIN_CHARS}]+)-(lhes|lhe|nas|nos|vos|as|me|no|na|os|se|te|a|o)(-([{LATIN_CHARS}]+)|\b)', r'\2 \1\4', sentence, flags=re.IGNORECASE)
logger.debug(f'output: {sentence}')
return sentence
# Fix for aelius tagging of multiple sentences
......@@ -125,7 +140,7 @@ class CharPreprocessing:
sentence = re.sub(r"'( ')+( ?)", "' ", sentence)
sentence = re.sub(r'#( #)+( ?)', '# ', sentence)
# remove linhas que não contenham palavras
sentence = re.sub(r'^([\"\'\#\.\?\! ](\[PONTO\]|\[INTERROGAÇÃO\]|\[EXCLAMAÇÃO\]))+$', '', sentence)
sentence = re.sub(r'^([\"\'\#\.\?\! ]|\[PONTO\]|\[INTERROGAÇÃO\]|\[EXCLAMAÇÃO\])+$', '', sentence)
return sentence
......@@ -148,4 +163,4 @@ def main():
if __name__ == '__main__':
main()
main()
\ No newline at end of file
......@@ -146,7 +146,7 @@ class dExtenso():
if self.trio_a_esquerda_eq_zero(trioLista, contador):
saida = ' e ' + saida
elif trioInt >= 100:
saida = ', ' + saida
saida = ' ' + saida
else:
saida = ' e ' + saida
else:
......@@ -173,4 +173,4 @@ if __name__ == '__main__':
# print '[uso] %s <numero>' % (sys.argv[0])
# else:
# # Valor 1 em quebradelinhas faz o extenso de
# # cada trio ser em uma linha separada.
# # cada trio ser em uma linha separada.
\ No newline at end of file
import time
#import psutil
# Health check used by the K8s pods.
import sys
import interruptingcow
from .cogroo4py.cogroo4py import Cogroo
#from os import path
#from subprocess import PIPE, Popen
from interruptingcow import timeout
from vlibras_deeplearning import deep_translation, model_utils
MAX_TIMEOUT = 10
DL_INSTANCE = None
def lemmatize_cogroo_check(time, word):
def _lemmatize_cogroo_check(word):
'''Test if cogroo4py is still responding to lemmatization requests.'''
# DEPRECATED for now: moving cogroo4py from py4j to pyjnius backend solved
# the intermittent timeout issue
return
from .cogroo4py.cogroo4py import cogroo
word_lemma = cogroo.lemmatize(word)
if not word_lemma:
raise Exception('cogroo4py returned an empty lemma')
def dl_translator_check(gr):
'''Test if the DL translator is responding to translation requests.'''
if not model_utils.can_translate():
# model still hasn't downloaded, can't test anything yet
return
global DL_INSTANCE
if not DL_INSTANCE:
DL_INSTANCE = deep_translation.DeepTranslation()
if