You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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...
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:
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çãograu/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, nodataset.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. Usarjsonb_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)
edataset.funion(JSONb, JSONb)
para interseção e união...... e só.
Referências e links úteis
The text was updated successfully, but these errors were encountered: