Skip to content

Normalização/canonicalização de entidades (NER) — facets, filtros e páginas de entidade #178

Description

@nitaibezerra

Contexto

As entidades nomeadas (NER) extraídas via LLM são armazenadas em news_features.features.entities como texto bruto e indexadas no Typesense (entities, entity_org|per|loc|misc) — ver #174 (Fase 0). São consumidas pelo graphql-api (entitySuggestions, filtro ArticleFilter.entities) e pelo portal (filtro na /busca, páginas /entidades/[slug], chips na tela da notícia).

Problema: sem canonicalização, a mesma entidade aparece como facets distintos. Exemplo real observado em produção:

  • Finep (40)
  • Financiadora de Estudos e Projetos (Finep) (14)
  • Financiadora de Estudos e Projetos (FINEP) (4)

Isso fragmenta contagens, polui o typeahead, duplica páginas de entidade e enfraquece o filtro/navegação cruzada.

Objetivo

Canonicalizar entidades para que variações (acrônimos, com/sem razão social, caixa, acentos, pontuação) colapsem numa entidade canônica única — melhorando facets, filtro, typeahead e páginas /entidades.

Abordagens a avaliar

  • Mapa de aliases + matching determinístico (acrônimo↔nome; normalização de caixa/acento/pontuação), versionado e reprocessável sobre os news_features existentes (sem re-rodar o LLM).
  • Cross-ref com a tabela agencies (158 órgãos com nomes canônicos) para canonicalizar instituições (ORG) governamentais.
  • (Complementar) melhorar a extração no enrichment (data-science/news_enrichment) com entity linking / nome canônico no prompt.
  • Definir o ponto de aplicação: novo campo entities_canonical na feature layer e/ou normalização em extract_entity_fields/indexing do Typesense.

Critérios de aceite

  • Variações conhecidas (ex.: Finep) colapsam numa entidade canônica nos facets/entitySuggestions.
  • Pipeline reprocessável (backfill dos ~19,5k artigos com entidades) sem re-rodar LLM.
  • Filtro entities, typeahead e /entidades/[slug] passam a usar o valor canônico.
  • Métrica antes/depois: redução do nº de facets distintos para entidades-âncora.

Referências

  • Fase 0 (indexação de entidades): feat: indexa entidades e view_count no Typesense #174
  • Consumo: graphql-api entitySuggestions / ArticleFilter.entities; portal /entidades/[slug] + filtro na /busca.
  • v1 atual = match por texto bruto (decisão consciente; este issue é o fast-follow planejado).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions