O documento apresenta o CoGrOO, um corretor gramatical para o português do Brasil que pode ser usado em suítes de escritório livres. O CoGrOO analisa textos, identifica possíveis erros gramaticais e sugere correções utilizando regras gramaticais e análise estatística de corpus de treinamento. Ele foi desenvolvido por pesquisadores da USP e vem sendo utilizado em diversos projetos de pesquisa.
Sistemas de Processamento de Linguagem Natural na PráticaWilliam Colen
Lições aprendidas na busca por insights em dados não estruturados
Apresentado no QConSP 2018
https://qconsp.com/sp2018/presentation/criando-sistemas-de-processamento-de-linguagem-natural-na-pratica
Palestra realizada no dia 10/02/2011 no X Encontro do Grupo de Usuários de Python na Livraria Cultura (Recife -Pernambuco). Palestra com o título: "Conhecendo Python e por que ela importa ? "
Lecture presented at February 09th at X Meeting of Pernambuco Python User Group at Livraria Cultura (Recife - Pernambuco - Brazil) with the title: ' Meeting Python and why does it care ? "
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
Apresentação utilizada na palestra realizada no dia 08/10/2014 na faculdade Meta, contendo uma introdução sobre a linguagem de programação Python, suas aplicações, empresas que utilizam e exemplos de uso aplicado a algumas situações, mostrando o potencial desta linguagem, que vai desde o acesso a bancos de dados, geração de sites, aplicações desktop e web multiplataformas (windows, linux, freebsd, MacOS), web, mineração de dados, inteligência artificial, até o desenvolvimento de aplicações mobile (android, iOS).
Sistemas de Processamento de Linguagem Natural na PráticaWilliam Colen
Lições aprendidas na busca por insights em dados não estruturados
Apresentado no QConSP 2018
https://qconsp.com/sp2018/presentation/criando-sistemas-de-processamento-de-linguagem-natural-na-pratica
Palestra realizada no dia 10/02/2011 no X Encontro do Grupo de Usuários de Python na Livraria Cultura (Recife -Pernambuco). Palestra com o título: "Conhecendo Python e por que ela importa ? "
Lecture presented at February 09th at X Meeting of Pernambuco Python User Group at Livraria Cultura (Recife - Pernambuco - Brazil) with the title: ' Meeting Python and why does it care ? "
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
Apresentação utilizada na palestra realizada no dia 08/10/2014 na faculdade Meta, contendo uma introdução sobre a linguagem de programação Python, suas aplicações, empresas que utilizam e exemplos de uso aplicado a algumas situações, mostrando o potencial desta linguagem, que vai desde o acesso a bancos de dados, geração de sites, aplicações desktop e web multiplataformas (windows, linux, freebsd, MacOS), web, mineração de dados, inteligência artificial, até o desenvolvimento de aplicações mobile (android, iOS).
Apresentando a Linguagem de Programação PythonPriscila Mayumi
Slides para apresentação da linguagem Python. Trabalho para a matéria "Novas Tecnologias" na Universidade Metodista de São Paulo. Lembrando que eu tive que estudar muito sobre, pois nunca tive um contato "suficiente" com Python.
Apresentação feita para introduzir Python a programadores de outras linguagens, mostrando alguns dos recursos da linguagem, programação funcional, orientação a objetos, list comprehensions, splicing, metaprogramação, dentre outras funcionalidades.
Código dos exercícios: https://github.com/BrunoCodeman/dojo_python
Telas -- bastante baseadas nas do Álvaro (http://alvarojusten.blogspot.com/) -- utilizadas no minicurso de Python realizado na PythOnCampus do dia 6 de junho de 2009, na UVA de Cabo Frio.
Slide da palestra sobre Python.
Programando em Python, 27 de Agosto às 19h (na Fuctura)
Por Richardson Lima, administrador de redes do grupo de pesquisas avançadas em redes de computadores, realidade virtual e multimídia na Universidade Federal de Pernambuco e desenvolvedor da comunidade Debian (sobre o curso)
BDD: Torne viva a documentação de seus sistemasVitor Mattos
Veremos um pouco de tudo, uma apresentação da importância de se fazer testes, testes unitários, testes funcionais, pirâmide de testes, como fazer com que os testes se tornem uma documentação viva de um sistema, como escrever testes com gherkin, a ferramenta behat para escrita de testes funcionais e uma pincelada rápida sobre CI, CD e como implementar a cultura de testes em ambientes hostis a testes.
Palestra apresentada no PHPRS 2017
Apresentando a Linguagem de Programação PythonPriscila Mayumi
Slides para apresentação da linguagem Python. Trabalho para a matéria "Novas Tecnologias" na Universidade Metodista de São Paulo. Lembrando que eu tive que estudar muito sobre, pois nunca tive um contato "suficiente" com Python.
Apresentação feita para introduzir Python a programadores de outras linguagens, mostrando alguns dos recursos da linguagem, programação funcional, orientação a objetos, list comprehensions, splicing, metaprogramação, dentre outras funcionalidades.
Código dos exercícios: https://github.com/BrunoCodeman/dojo_python
Telas -- bastante baseadas nas do Álvaro (http://alvarojusten.blogspot.com/) -- utilizadas no minicurso de Python realizado na PythOnCampus do dia 6 de junho de 2009, na UVA de Cabo Frio.
Slide da palestra sobre Python.
Programando em Python, 27 de Agosto às 19h (na Fuctura)
Por Richardson Lima, administrador de redes do grupo de pesquisas avançadas em redes de computadores, realidade virtual e multimídia na Universidade Federal de Pernambuco e desenvolvedor da comunidade Debian (sobre o curso)
BDD: Torne viva a documentação de seus sistemasVitor Mattos
Veremos um pouco de tudo, uma apresentação da importância de se fazer testes, testes unitários, testes funcionais, pirâmide de testes, como fazer com que os testes se tornem uma documentação viva de um sistema, como escrever testes com gherkin, a ferramenta behat para escrita de testes funcionais e uma pincelada rápida sobre CI, CD e como implementar a cultura de testes em ambientes hostis a testes.
Palestra apresentada no PHPRS 2017
Slides da palestra que fiz na SEMCOMP 2013 sobre o ecossistema .NET, seus pontos fortes, seus pontos fracos, como ele se situa no atual mercado e quais são as oportunidades de trabalho para os que escolherem essa plataforma.
Apresentação dividas em duas principais partes: 1 - Dicas para enriquecer sua carreira como desenvolvedor. 2 - Dicas de boas práticas no mundo do PHP para que se torne um profissional diferenciado.
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
Sistemas legados são o terror da maioria dos devs: código dos outros escrito muitas vezes sem seguir boas práticas e em uma linguagem quase completamente desconhecida. A proposta da palestra é discutir sobre:
o que é legado?
o que é linguagem não mainstream no contexto do dia a dia dos projetos?
indicar alguns caminhos a seguir quando se tem um legado a ser enfrentado, utilizando perl como exemplo de linguagem não mainstream.
Explorando O Potencial Das Linguagens De Programação Open SourceRafael Jaques
Palestra de Rafael Jaques no Software Freedom Day 2009 em Novo Hamburgo - RS acerca de como explorar o potencial das linguagens de programação de código aberto
1. O Corretor Gramatical CoGrOO
Apresentado no 5 de junho de 2012
IX EVIDOSOL e VI CILTEC-online
IX Encontro Virtual de Documentação em Software Livre
e VI Congresso Internacional de Linguagem e Tecnologia online
Arthur Branco Costa
William Colen
http://cogroo.sourceforge.net 1
2. O que é o CoGrOO?
CoGrOO é um corretor gramatical para
português do Brasil, que pode ser usado nas
principais suítes livres de escritório.
http://cogroo.sourceforge.net 2
3. Exemplo
● Usuário digita um texto
● O verificador executa
uma análise
gramatical, buscando
padrões de erros na
estrutura gerada
● O verificador sugere correções
http://cogroo.sourceforge.net 3
7. Analisador de Textos
● Delimitador de sentenças e tokens
● Etiquetador morfológico
● Identificador de sintagmas
● Identificador de sujeitos
● Etc...
http://cogroo.sourceforge.net 7
8. Analisador de Textos
● USP
● Pesquisa IME/Hospital AC Camargo: análise de laudos clínicos (CID)
● IME: auxilia a extração automática de ontologias de transcrições de
vídeos e entrevistas (OnAir)
● Poli: interação homem-máquina (robô sociável)
● UFMG
● Projeto Dados Semiótica: análise automatizada dos dados coletados
● PUC-PR
● Classificação automática de laudos clínicos (CID)
● UFPA
● Auxílio na transcrição e geração automática de texto (projeto Fale)
http://cogroo.sourceforge.net 8
9. Analisador de textos que vocês podem usar
● Análise automatizada inicial de corpus
● Parte de um processamento mais complexo
...
Livremente!
● Mas... cite nossos artigos :)
● Divulgue nosso trabalho
● Colabore com o desenvolvimento
http://cogroo.sourceforge.net 9
10. Como funciona?
● Processamento de Linguagem Natural probabilística +
sistema de regras:
● Aprendizado de máquina usando corpus na fase de análise
● Regras de erros são aplicadas nas estruturas resultantes
● Usa bibliotecas livres como Apache OpenNLP
(aprendizado de máquina), Jspell (léxico) e
Morfologik-Stemming (compactação do léxico)
Apache
http://cogroo.sourceforge.net 10
11. Como funciona?
http://ccsl.ime.usp.br/cogroo/comunidade/grammar
http://cogroo.sourceforge.net 11
12. Como funciona?
http://ccsl.ime.usp.br/cogroo/comunidade/grammar
http://cogroo.sourceforge.net 12
13. Como funciona?
http://ccsl.ime.usp.br/cogroo/comunidade/rules
http://cogroo.sourceforge.net 13
14. Recursos linguísticos: corpus para treinamento
● Usado no treinamento dos módulos estatísticos
● CoGrOO “aprende” português
● Usamos os corpora Bosque e Floresta Virgem do projeto
Floresta Sintática (abertamente distribuídos)
● Textos jornalísticos (Folha): sem primeira pessoa, linguagem jornalística
● Apesar de revisados ainda encontramos erros: o CoGrOO aprende
errado
● Os conhecimentos que ele obtém no treinamento são
usados para analisar novos textos.
http://cogroo.sourceforge.net 14
15. Recursos linguísticos: corpus para treinamento
SOURCE: CETENFolha n=904 cad="Esporte" sec="des" sem="94a"
CF904-1 Desorganização e violência marcam torneio que consolida o 'efeito Copa'.
A1
STA:fcl
=SUBJ:cu
==CJT:np
===H:n('desorganização' <np-idf> F S) Desorganização
==CO:conj-c('e' <co-subj>) e
==CJT:np
===H:n('violência' <np-idf> F S) violência
=P:vp
==MV:v-fin('marcar' PR 3P IND) marcam
=ACC:np
==H:n('torneio' <np-idf> M S) torneio
==N<:fcl
===SUBJ:np
====H:pron-indp('que' <rel> M S) que
===P:vp
====MV:v-fin('consolidar' <fs-rel> PR 3S IND) consolida
===ACC:np
====>N:art('o' <artd> M S) o
===='
====H:n('efeito' M S) efeito
====N<:np
=====H:prop('Copa' F S) Copa
===='
=.
http://cogroo.sourceforge.net 15
16. Recursos linguísticos: corpus para avaliação
● Corpus Metrô
● Textos extraídos do site institucional do Metrô de São Paulo.
● Erros anotados manualmente (aproximadamente 800 sentenças e 51
erros)
● Corpus Probi
● Desenvolvido pelo NILC (USP São Carlos – UFSCAR) para o projeto
ReGra (corretor gramatical proprietário do MS Office)
● 11.624 sentenças, 2.616 com alguma erros
http://cogroo.sourceforge.net 16
17. Recursos linguísticos: regras
● Desenvolvidas por linguistas
● Regras simples que podem ser descritas usando
sequência de tokens em um arquivo de configuração
http://cogroo.sourceforge.net 17
18. Recursos linguísticos: regras
● Regras mais complexas são desenvolvidas em linguagem
de programação
● Por exemplo, estamos trabalhando hoje no mecanismo
para regras de regência verbal
● Inspirado no artigo:
Software livre e gramática: regência verbal no revisor de textos do BrOffice
dos estudantes Luana Flávia Cotta Drumond, Cinara Kelly Alves Cruz e
Felipe da Fonseca Martins, para o UEADSL 2011.1
● As estudantes Cinara Cruz e Ana Paula Queiroz continuam colaborando
com o projeto.
http://cogroo.sourceforge.net 18
19. JSpell – o que é?
● Analisador morfológico:
Gera a partir de palavras básicas as suas derivações, utilizando-se de regras
simples.
Realizado pelo Projecto Natura, da universidade do Minho, Portugal;
● Como funciona:
● O banco de dados contém, por exemplo, a palavra alugar com algumas
etiquetas;
● Para cada etiqueta uma regra de formação de palavras lhe é aplicada;
● Assim, criam-se todas as suas conjugações verbais, bem como, as palavras:
alugador, alugável, subalugar e alugamento; e
● as derivações dessas, como: alugadoras, alugáveis, subalugou-se,
subalugadores, subalugá-lo-íamos, alugamentos, etc;
● Resultado: a partir da palavra alugar, foram geradas 209 palavras.
http://cogroo.sourceforge.net 19
20. JSpell
Vantagens:
● Abrangência: contém mais de 900.000 verbetes;
● Código Livre;
● Feito manualmente, a quantidade de erros é notoriamente menor que a
de geradores automáticos;
● Regras simples, de fácil compreensão e que podem ser redefinidas.
Problemas:
● Ainda contém alguns erros, algumas regras devem ser melhor
formuladas, devido à quantidade de exceções na língua portuguesa.
● Feito para português de Portugal: é necessário atualizar diversas
palavras.
Colabore conosco nessa parte! =]
http://cogroo.sourceforge.net 20
22. JSpell – funcionamento de uma flag
Flag: m → Adiciona o sufixo -mente nas “palavras válidas”
“CAT = adj, N = s” → palavras válidas: adjetivos no singular
que tenham a flag m.
Terminação Mudança de
Acréscimo do sufixo Exemplo
da palavra classificação
-O -O, AMENTE; “CAT = Adv”
(palavras terminadas (elimina a letra 'o' e (o adjetivo torna-se # Abertamente
com a letra 'o') acrescenta “amente”) um advérbio)
-U AMENTE; “CAT = Adv” # Cruamente
- [^V][^E][^L] MENTE;
(palavras que não (acrescenta o “CAT = Adv” # Anteriormente
acabam com -vel) sufixo -mente)
-ÁVEL, AVELMENTE;
- ÁVEL “CAT = Adv” # Miseravelmente
(perda do acento)
- ÍVEL -ÍVEL, IVELMENTE; “CAT = Adv” # Horrivelmente
http://cogroo.sourceforge.net 22
23. Obrigado pela oportunidade e pela atenção!
http://cogroo.sourceforge.net
http://ccsl.ime.usp.br
http://cogroo.sourceforge.net 23