LabXP 2014¶
O CoGrOO foi um dos projetos ministrados na disciplina de MAC0342 (Laboratório de Programação Extrema) no 1º semestre de 2014 do Instituto de Matemática e Estatística da USP.
Na disciplina o foco do projeto foi trabalhar no desenvolvimento do CoGrOO Comunidade (http://comunidade.cogroo.org/), buscando formas de aproximar o usuário leigo em programação do projeto.
A Equipe¶
- William Colen (cliente)
- Arthur Branco Costa (coach)
- Hilder Vitor Lima Pereira
- Ricardo Ferreira Guimarães
- Rodrigo Duarte Louro
- Talita Rodrigues Santos (trancou)
- Vinícius Garcia de Rezende
Histórias realizadas¶
Criação de uma nova aba no cabeçalho chamada "Léxico", partindo dela é possível chegar nas seguintes funcionalidades:
- Consultar palavras:
Realiza uma busca no dicionário de palavras utilizado pelo CoGrOO, o JSpell, retornando os radicais que a geram, suas características morfológicas (classe gramatical, gênero, número, transitividade do verbo, etc.)
- Inserção de palavras:
Na própria consulta, caso o usuário tenha digitado uma palavra que não conste no dicionário, é possível sugeri-la.
O usuário deve classificar a palavra conforme as solicitações das páginas e, por fim, ficará no aguardo da aprovação ou não dela por um administrador (algum linguista que queira se dedicar ao projeto)
- Edição de palavras (em desenvolvimento):
Por enquanto é possível ir para a opção "Editar palavra" e modificar apenas sua ortografia. Deixamos as edições de classes gramaticais ou outras características para implementações futuras.
Após o envio, a sugestão fica pendente até que um administrador aprove-a ou descarte-a.
- Palavras sugeridas:
Lista de palavras enviadas pelos usuários tanto na inserção quanto na edição, que estão aguardando aprovação de um administrador.
Histórias futuras¶
- Edição de palavras (classe gramatical, atributos e flags):
No curso atual, o desenvolvimento da edição de características morfológicas da palavra mostra-se simples, uma vez que deverá ser semelhante ao trecho da edição já desenvolvido.
- Remoção de palavras:
- Criação de regras gramaticais:
Pontos importantes da implementação:¶
WebServiceProxy¶
O objetivo inicial era criarmos funções de consulta, inserção, edição e deleção de palavras no dicionário.Para isso, o William forneceu um WebService que encapsula o JSpell devolvendo JSON como resultado de consulta.
Entre essas funções estão:
- analysis: retorna um JSON contendo a análise gramatical da palavra e suas derivadas
- commit: realiza um commit das alterações
- create: cria uma entrada nova
- delete: elimina a entrada do repositório
- load: cria um repositório default
- push: envia as alterações para o GitHub
- reload: recarrega o dicionário padrão
- retrieve: retorna as entradas no formato do JSpell para um dado lema
- try: faz a análise e flexões da entrada estando ela no JSpell ou não
- update: substitui a entrada no repositório
Para melhor manipulação dessas funções criamos um Proxy que faz a interface entre o código Java e o WebService.
DictionaryPatch¶
Para representar as alterações no dicionário modelamos o DictionaryPatch o qual é armazenado no banco de dados no Hibernate, ele é a classe principal com relação às operações e tarefas implementadas
ParserYaml¶
Classe responsável por parsear o aquivo port.yaml, que foi incluído no projeto a partir do repositório do JSpell
Com essa classe conseguimos obter do JSON as classificações corretas da palavra buscada no WebService em linguagem natural.
Ferramentas essenciais para o desenvolvimento¶
Maven, VRaptor, JSP, JavaScript