Google como mecanismo de geração de campos comuns

2 views
Skip to first unread message

Marcelo Mrack

unread,
Nov 16, 2006, 10:33:59 PM11/16/06
to treelayer-merlin
Campos comuns no Merlin dizem respeito a propriedades de beans que
ocorrem com maior frequencia em sistemas. Sao exemplos: id, nome,
descricao, status, observacoes, detalhes, dataNasc, dataNascimento,
nasc e outros que todo mundo conhece.

O Merlin utiliza heurísticas sobre campos comuns para tomar acoes de
forma pró-ativa.

Por exemplo. Seja as classes:

Pessoa { id, nome, dataNasc, naturalidade }

Cidade { id, nome, habitantes, estado }

Estado { id, nome, sigla }

Sendo um cadastro (adoro essa palavra) para pessoas, provavelmente
existira uma caixa de selecao (ou combobox) representando a
naturalidade (local de nascimento) dessa pessoa. Essa combobox aponta
para a classe Cidade. Isso é bem normal.

A pergunta aqui é: QUAL O ATRIBUTO DE CIDADE QUE APARECERÁ DENTRO DA
COMBOBOX? A resposta é Nome. Mas por que?

Porque "a gente quer assim", ora. Na verdade é bem assim mesmo: "a
gente quer assim".

O termo "a gente quer assim" denota contexto. Quando juntamos muitas
informacoes, geramos contexto. E o contexto é util.

Nesse caso, o contexto é sobre os campos, ou atributos das classes.
Considerando contexto das 3 classes dadas, o campo mais comum é Nome.
E porque é nome? Porque a gente quer assim....ahahha.

++++++
NOTA: E Id, tambem nao é um atributo comum? A resposta é Sim, ele é.
Mas antes dele ser um atributo comum, ele é um atributo identificador
(outro contexto) e por isso ele é descartado para essa heuristica.
Assim, sobra Nome.
Pera ai, e se eu tivesse um atributo "status" em cada classe, nao seria
outro atributo comum? Sim, seria, mas estaria no contexto dos atributos
de indicacao de status, como "ativo/inativo, on/off, 1/0, true/false" e
por ai vai. Contexto é a chave.
++++++

Essas heuristicas de contexto o Merlin ja usa. Mas hoje na palestra do
Bherti, me veio a mente o algoritmo de PageRank do Google, que nada
mais é colocar o elemento em contexto (com relacao a outros).

Assim, PORQUE NAO USAR O GOOGLE PARA IDENTIFICAR CAMPOS COMUNS?

Hoje, o Merlin tem uma propriedade inicial chamada "commomFields" que
é alimentada por uma lista ordenada de campos comuns, que o
programador configura (na verdade a configuracao inicial do merlin ja
vem com alguns campos, basta ajustar)

+++++
NOTA DE NOVO: Pô, mais uma configuracao? Calma...essa configurcao
inicial é o startpoint do mecanismo. Uma vez configurada, ou ajustada
via anotacoes na aplicacao, ela entra no sistema de historico e se
realimenta (como todas as configuracoes do merlin).
++++++

Continuando....Fui no Google e peguei as commonFields que eu tinha no
Merlin e submeti buscas sobre elas. Veja os resultados abaixo (usei
termos em inglex), em ordem:

1 lugar ) name : 3,9 x 10 ^ 9 resultados
2 lugar ) details : 2,13 x 10 ^ 9 resultados
3 lugar ) description: 1,6 x 10 ^ 9 resultados
4 lugar ) married: 1,1 x 10 ^ 9 resultados
5 lugar ) notes: 7,38 x 10 8 resultados

e outras mais...

O que significa isso tudo? Que minha ideia se confirmou: POSSO, AO
INVES DE DEFINIR EXPLICITAMETNE UM CONJUNTO INICIAL DE CONFIGURACAO VIA
COMMOMFIELDS, USAR O GOOGLE PARA MAPEAR ESSES COMMOMFIELDS INICIAIS PRA
MIM.

Assim, tiro mais um peso do programador. Tambem a configuracao inicial
pode ser criada usando heuristicas.

Para lingua portuguesa, os resultados sao esses:

detalhes 8.400.000 (1 lugar)
nome 8.040.000 (2 lugar)
notas 4.070.000 (3 lugar)
casado 1.490.000 (4 lugar)
descricao 1.080.000 (5 lugar)

Pô, mas ta errado isso....Nome deveria ficar em primeiro.
Calma....Aqui estao os resultados brutos. É importante adicionar os
pesos das palavras, que servirao como multiplicadores desse resultado.
No caso das 3 classes acima, nome ocorre 3x enquanto os outros termos
nao ocorrem nenhum. Isso nao significa que nome é 3x mais importante,
mas o fator Numero de ocorrencias no Google (ou outra metrica) versus
Peso do Termo indicara seguramente (assim espero, ahahaha) que Nome é
o valor que deve ir para a Combobox da naturalidade.

E o mesmo se aplica para o cadastro de Cidades, que deve ter uma combo
para o Estado. Ah, claro, e se o cara quiser que apareca a sigla do
Estado nessa combo e o nome completo dele no Tooltip ao passar o mouse?
Dai ele sobrescreve com

class Estado {

String nome;

@CommomField
String sigla

}

... e a partir dai o sistema de historico entra em funcionamento....


Falei que chega ahahahh.

Reply all
Reply to author
Forward
0 new messages