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