Módulos de conversão grafema-fonema (G2P em ambas modalidades internal-word e cross-word), separação silábica e identificador de vogal tônica.
Compilação feita em versão javac 1.8.0_162
.
Instalação de dependências no Ubuntu/Debian:
$ sudo apt-get install openjdk-8-jdk
$ sudo apt-get install openjdk-8-jre
O jar pode ser executado pela linha de comando (terminal) com:
$ java -jar fb_nlplib.jar
Caso nenhuma instrução seja dada, uma mensagem de ajuda é exibida:
Usage 1: java -jar falalib.jar -{v|s|g} <PALAVRA>
Usage 2: java -jar falalib.jar -{v|s|g} <PALAVRA> -o <SAIDA>
Usage 3: java -jar falalib.jar -{v|s|g} -i <ENTRADA>
Usage 4: java -jar falalib.jar -{v|s|g} -i <ENTRADA> -o <SAIDA>
Usage 5: java -jar falalib.jar -c{C} <FRASE>
Usage 6: java -jar falalib.jar -c{C} <FRASE> -o <SAIDA>
Usage 7: java -jar falalib.jar -c{C} -i <ENTRADA>
Usage 8: java -jar falalib.jar -c{C} -i <ENTRADA> -o <SAIDA>
Usage 9: java -jar falalib.jar -{v|s|g}{c}{C} -i <ENTRADA> -t <NUMERO>
Usage 10: java -jar falalib.jar -{v|s|g}{c}{C} -i <ENTRADA> -o <SAIDA> -t <NUMERO>
<PALAVRA>: palavra do Português Brasileiro em caixa baixa
<SAIDA>: nome para o arquivo destino contendo o resultado do processamento
<ENTRADA>: nome do arquivo de entrada, deve conter uma palavra por linha
<FRASE>: frase entre aspas, por exemplo: "a casa era amarela"
<NUMERO>: número inteiro maior que 0
Lista de flags:
-i --input (caso entrada seja arquivo)
-o --output (caso saída seja arquivo)
-c --cross (caso crossword deva ser usado)
-C --vcross (caso a saída do crossword deva ser detalhada)
-a --ascii (caso a saída deva conter apenas caracteres ascii)
-v --vowel (para usar identificador de vogal tônica)
-s --syllab (para usar separador silábico)
-g --g2p (para usar o conversor grafema fonema)
-G --g2p-s (para retornar fonemas silabicamente separados)
-p --progress (mostra uma barra de progresso)
-t --threads (função multithread, para uso com -i{g|s|v})
-e --encoding (para usuário selecionar codificação do arquivo de entrada)
-h --help (para exibir ajuda para desenvolvedores)
A compilação do arquivo FalaBrasilNLP.java
não é obrigatória para utilizar as
funcionalidades biblioteca de utilitários do FalaBrasil, porém pode ser
utilizada como uma API. A compilação do arquivo FalaBrasilNLP.java
é dada por:
$ javac -cp ".:fb_nlplib.jar" FalaBrasilNLP.java
Já a execução do arquivo FalaBrasilNLP
:
$ java -cp ".:fb_nlplib.jar" FalaBrasilNLP
Caso a localização da lib seja alterada, para compilação do
FalaBrasilNLP.java
, altere o classpath de ".:fb_nlplib.jar"
para
".:/nova/localização/do/fb_nlplib.jar"
.
A ferramenta NLP, originalmente escrita em Java, foi recentemente utilizada em Python graças ao módulo PyJNIus, o qual permite carregar métodos Java em Python.
$ conda create --name fb-nlp-gen --file req_conda.txt
ou
$ conda create --name fb-nlp-gen python=3.7
$ conda activate fb-nlp-gen
$ conda install cython
$ conda install -c conda-forge pyjnius
$ conda install -c anaconda openjdk
Dependências:
$ sudo apt-get install python3 python3-pip
$ sudo -H pip3 install cython jnius pyjnius --upgrade
Execução feita em versão python 3.5.3
.
$ python3 FalaBrasilNLP.py /path/to/fb_nlplib.jar <PALAVRA>
Caso ocorram erros de execução, certifique-se de que sua variável de ambiente
JAVA_HOME
aponta para o Java 8 (ou exportada no .bashrc
ou setada
diretamente via os.environ
no script Python), e que a sua versão do PyJNIus é
a mais recente:
$ pip3 list | egrep -i 'jni|cython'
Cython 0.29.13
jnius 1.1.0
pyjnius 1.2.0
https://hub.docker.com/u/falabrasil
As imagens encontram-se disponíveis para download no docker hub e podem ser baixadas com os seguintes comandos:
$ docker pull falabrasil/g2p
$ docker pull falabrasil/syl
$ docker pull falabrasil/stress
Em contrapartida, é também perfeitamente possível gerar imagens baseadas no Alpine Linux a partir desse mesmo repositório utilizando os seguintes comandos:
$ docker build -t falabrasil/g2p:$(date +%Y%m%d) -f docker/g2p/Dockerfile .
$ docker build -t falabrasil/syl:$(date +%Y%m%d) -f docker/syl/Dockerfile .
$ docker build -t falabrasil/stress:$(date +%Y%m%d) -f docker/stress/Dockerfile .
A seguir, o uso é demonstrado em um arquivo recém escrito chamado wlist.txt
,
o qual deve ser passado como argumento ao stdin
do container:
$ cat << EOF > /tmp/wlist.txt
a
galinha
come
bolinha
EOF
Conversão grafema-fonema:
$ cat /tmp/wlist.txt | docker run --rm -i falabrasil/g2p
a a
galinha g a l i~ J a
come k o~ m i
bolinha b O l i~ J a
Separação em sílabas:
$ cat /tmp/wlist.txt | docker run --rm -i falabrasil/syl
a a
galinha ga-li-nha
come co-me
bolinha bo-li-nha
Identificação de vogal tônica:
$ cat /tmp/wlist.txt | docker run --rm -i falabrasil/stress
a 1
galinha 4
come 2
bolinha 4
docker run
funcionarem, as
imagens construídas com docker build
devem ser tagged com a tag latest
:
$ docker tag falabrasil/<MOD>:20211023 falabrasil/<MOD>:latest
@article{Siravenha08,
author = {Ana Siravenha and Nelson Neto and Valquíria Macedo and Aldebaro Klautau},
title = {Uso de Regras Fonol\'{o}gicas com Determina\c{c}\~{a}o de Vogal T\^{o}nica para Convers\~{a}o Grafema-Fone em {P}ortugu\^{e}s {B}rasileiro},
journal = {7th International Information and Telecommunication Technologies Symposium},
year = {2008}
}
@article{Neto2015,
author = {Neto, Nelson and Rocha, Willian and Sousa, Gleidson},
title = {An open-source rule-based syllabification tool for Brazilian Portuguese},
journal = {Journal of the Brazilian Computer Society},
year = {2015},
month = {Jan},
day = {28},
volume = {21},
number = {1},
pages = {1},
issn = {1678-4804},
doi = {10.1186/s13173-014-0021-9},
url = {https://doi.org/10.1186/s13173-014-0021-9}
}
@article{Neto10,
author = {Neto, Nelson and Patrick, Carlos and Klautau, Aldebaro and Trancoso, Isabel},
title = {Free tools and resources for Brazilian Portuguese speech recognition},
journal = {Journal of the Brazilian Computer Society},
year = {2011},
month = {Mar},
day = {01},
volume = {17},
number = {1},
pages = {53--68},
issn = {1678-4804},
doi = {10.1007/s13173-010-0023-1},
url = {https://doi.org/10.1007/s13173-010-0023-1}
}
Grupo FalaBrasil (2021) - https://ufpafalabrasil.gitlab.io/
Universidade Federal do Pará (UFPA) - https://portal.ufpa.br/
Daniel Santana - [email protected]
Cassio Batista - https://cassota.gitlab.io/