Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pressupor fuzzy-sets nos homófonos #1

Open
ppKrauss opened this issue Nov 26, 2017 · 0 comments
Open

Pressupor fuzzy-sets nos homófonos #1

ppKrauss opened this issue Nov 26, 2017 · 0 comments

Comments

@ppKrauss
Copy link
Contributor

A tabela gr-homofonos.csv atualmente apresenta na sua coluna "grau" um valor arbitrário, um score... Idealmente poderíamos utiliza-lo para outros fins, sendo o mais importante a conversão para fuzzy set, ou seja, tendo a coluna como realmente "grau de pertinência". Basta estabelecer uma convenção mais ampla:

grau grau_norm semântica
4 100% Homófono consensual, abrangência nacional
3 75% Homófono regionalmente, ou sem maior consenso
1 25% Homófono apenas em contexto de ruído (ex. telefone)

Nesta nova escala o "score 1" passa a ter um significado mais claro, de "praticamente não-membro", e todos os valores normalizados (grau_norm) são obtidos diretamente do grau, pela função grau/grau_max.

Os valores de grau 2 e 0 não são usados. O valor 2 resulta em 50%, ou seja, crossover point, que é indesejado na presente semântica. O valor zero é atribuído a qualquer coisa que seja não-membro, portanto "100% não-homófono".

Exemplos e operações

  • Seleção do fuzzy set dos homófonos de um canônico c. SELECT * FROM gr_homofonos WHERE canonico=c

  • Cardinalidade escalar do mesmo fuzzy set, expressa em percentual: SELECT round(100.0*sum(grau_norm)) FROM gr_homofonos WHERE canonico=c.

  • Interseção entre dois conjuntos: dois canônicos diferentes que eventualmente partilham, em certo grau, as mesmas homófonas. Por questão de consistência deve-se obrigar que os elementos das interseções de pares nunca tenham membros com grau de pertinência superior a 50%. Não podem ser totais (100%) pois senão descaracterizariam os canônicos. Mesmo sendo parciais, como num dos conjuntos a pertinência é de 75%, pode-se impor que no outro seja seu complemento, portanto 25% < 50%.

  • ...

Como se tratam de convenções, os valores grau_norm_max de qualquer conjunto fuzzy podem ser armazenados em cache, ou seja, no dataset.meta.info, dispensando queries complementares de agrupamento com consulta ao MAX(grau_norm).

Antes de apelar para bibliotecas sofisticadas, criar no schema do framework um kit simples de funções fuzzy-set, por sem convenção do resgate de cache:

  • dataset.f2jf(dataset_id,fuzzy_field) transforma coluna desejada (se normalizada ou com normalização definida) em uma representação JSONb para repesenta-lo como fuzzy-set. Usar jsonb_object(elementos,graus_norm) para gerar o objeto. Pode-se acrescentar um valor controlado (ex. "MAX") para usar como referência de normalização quando forem graus inteiros.

  • dataset.fsc(float[]) obtém a "fuzzy scalar cardinality" da array de graus normalizados (float) ... idem para argumento JSONb obtido da representação acima.

  • dataset.feq(JSONb, JSONb), "fuzzy equals" de dois membros para inferir igualdade.

  • dataset.fintersec(JSONb, JSONb) e dataset.funion(JSONb, JSONb) para interseção e união...

  • ... e só.


Referências e links úteis

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant