ReviewScope busca anomalias em avaliações usando embeddings e grafos em 21 mil textos

Depois de se mudar de cidade, o usuário do Habr passou a procurar uma boa padaria a partir das avaliações e começou a notar textos suspeitos — que pareciam ter sido escritos por uma IA ou simplesmente copiados. Isso o levou a criar uma ferramenta para pegar estranhezas nas avaliações: picos incomuns de atividade, mudanças brutas nas notas, textos repetidos e manipulação de avaliações. O ReviewScope roda localmente, armazena os dados no DuckDB e analisa arquivos CSV e JSON. O código é aberto. • **Quatro níveis de detecção de avaliações parecidas**: Exact (correspondências exatas), Fuzzy (proximidade lexical via RapidFuzz), Near (forte semelhança lexical via MinHash/LSH), Semantic (semelhança de significado via embeddings) • **Detecção de picos**: mediana móvel + MAD (desvio absoluto da mediana) em vez de média e desvio padrão • **Análise de mudanças de nota**: divergência de Jensen–Shannon para medir a mudança na distribuição de notas de 1 a 5 estrelas

Processado por IA de Хабр: Машинное обучение; editado por Hamidun News
ReviewScope busca anomalias em avaliações usando embeddings e grafos em 21 mil textos
Fonte: Хабр: Машинное обучение. Colagem: Hamidun News.
Ouvir artigo
Ficha técnica e números-chave
ParâmetroDados
Fonte originalХабр: Машинное обучение ↗
Editor-chefe
Detecção de picosmediana móvel + MAD (desvio absoluto da mediana) em vez de média e desvio padrão
Análise de mudanças de notadivergência de Jensen–Shannon para medir a mudança na distribuição de notas de 1 a 5 estrelas

Depois de se mudar, Ziverpup fez o que sempre faz: começou a procurar nos mapas onde comer e o que visitar. Quase todo lugar tem nota acima de quatro estrelas, então ele filtra pelas avaliações negativas — é ali que o quadro muda. Em uma padaria, notou uma avaliação estranha: em vez de descrever uma experiência real, o texto parecia uma resposta pronta de IA. Foi procurar casos parecidos e encontrou mais de um. Por exemplo, uma avaliação de uma casa de shawarma começava com o clássico "Isso é simplesmente demais!", seguido de uma lista padronizada: pão lavash, carne, molho, vegetais, tamanho da porção, a promessa de se tornar cliente fiel.

Um exemplo não prova nada por si só, mas a ideia ficou martelando: criar uma ferramenta para encontrar anomalias em avaliações. Ziverpup já tinha lidado com esse problema antes — como gerente, costumava analisar avaliações negativas e às vezes as relacionava a concorrentes. Mas o que mais lhe interessava eram os próprios autores: alguém que escreveu cinco avaliações sobre bares diferentes parece uma fonte de informação mais útil do que alguém cujo histórico inclui apenas uma loja de pneus perto de Togliatti e uma livraria em Voronej.

Só que construir uma lógica de confiança nos autores se mostrou mais complicado do que parecia: o número de avaliações, por si só, não torna alguém competente. Mudar de cidade pode ser só uma viagem, e uma única avaliação detalhada pode dizer mais do que cem frases genéricas.

Arquitetura e dados

O resultado foi o ReviewScope, uma ferramenta open-source para analisar avaliações, encontrar anomalias e textos repetidos, e investigar o histórico dos autores. GitHub: https://github.com/zinverno/reviewscope, demo: https://reviewscope-demo.streamlit.app/.

A ferramenta não baixa avaliações diretamente do Yandex Maps. Para a análise, é preciso uma exportação pronta em CSV ou JSON. O aplicativo normaliza os dados e os salva no DuckDB — tudo roda localmente, sem necessidade de um servidor separado. Cada avaliação contém os campos: review_id, place_id, place_name, place_category, reviewer_id, reviewer_name, rating, text, published_at, city, region, country, latitude, longitude. Nem todos os campos são obrigatórios. A interface, feita em Streamlit, mostra N/A quando faltam dados.

O pipeline funciona assim: CSV/JSON → Normalização → DuckDB → AnalysisEngine → interface Streamlit. O AnalysisEngine inclui quatro módulos.

Quatro camadas de análise de anomalias

Detecção de picos (burst detection). Uma padaria costuma receber uma ou duas avaliações por semana. Se em um único dia chegam trinta, quase todas com cinco estrelas, isso é estranho. Mas para um restaurante que recebe cinquenta avaliações por dia, essas mesmas trinta não significam nada. A solução: mediana móvel + MAD (desvio absoluto da mediana). O MAD mede o quanto os valores comuns se afastam do padrão típico. Um único dia extremo quase não altera essa estimativa — diferente da média e do desvio padrão, que são arrastados pelos valores fora da curva. O limite do z-score modificado está fixado em 3,5, com uma janela histórica de 30 dias.

Anomalias de mudança de nota. Encontrou-se um dia com um número incomum de avaliações. Todas são cinco estrelas? Ou são, na verdade, uma estrela? Para isso, foi adicionada a divergência de Jensen–Shannon, uma forma de medir a diferença entre duas distribuições de probabilidade. São comparadas as proporções de notas de uma a cinco estrelas em um período histórico e no período em torno do evento. O algoritmo detecta igualmente bem picos positivos e negativos.

Detecção de duplicatas — funciona em quatro níveis de correspondência: Exact (textos normalizados idênticos), Fuzzy (proximidade lexical via RapidFuzz), Near (forte semelhança lexical via MinHash/LSH), Semantic (semelhança de significado via embeddings). Os três primeiros níveis pareciam suficientes, mas quando um autor reformulava totalmente uma frase, os métodos lexicais falhavam. Os embeddings resolveram esse problema.

Métricas de avaliadores, pontuação de textos e agrupamento por temas completam o quadro. O autor incluiu indicadores próprios: atividade do avaliador, experiência na categoria, nível de detalhe dos textos e padrões incomuns no histórico de cada um.

Os testes foram feitos com 21 mil avaliações reais. Algumas hipóteses não sobreviveram à verificação, e um resultado que parecia convincente acabou sendo um erro de cálculo na taxa de crescimento quando a base era zero. Agora, nesses casos, o aplicativo mostra o número real de avaliações e informa que a taxa de crescimento não tem sentido naquele contexto.

Perguntas frequentes sobre a notícia

O que se sabe sobre Arquitetura e dados?

O resultado foi o ReviewScope, uma ferramenta open-source para analisar avaliações, encontrar anomalias e textos repetidos, e investigar o histórico dos autores. GitHub: https://github.com/zinverno/reviewscope, demo: https://reviewscope-demo.streamlit.app/. A ferramenta não baixa avaliações diretamente do Yandex Maps. Para a análise, é preciso uma exportação pronta em CSV ou JSON. O aplicativo normaliza os dados e os salva no DuckDB — tudo roda localmente, sem necessidade de um servidor separado. Cada avaliação contém os campos: review_id, place_id, place_name, place_catego

O que se sabe sobre Quatro camadas de análise de anomalias?

Detecção de picos (burst detection). Uma padaria costuma receber uma ou duas avaliações por semana. Se em um único dia chegam trinta, quase todas com cinco estrelas, isso é estranho. Mas para um restaurante que recebe cinquenta avaliações por dia, essas mesmas trinta não significam nada. A solução: mediana móvel + MAD (desvio absoluto da mediana). O MAD mede o quanto os valores comuns se afastam do padrão típico. Um único dia extremo quase não altera essa estimativa — diferente da média e do desvio padrão, que são arrastados pelos valores fora da curva. O limite do z-score

ZK
Zhemal Khamidun — CPO da Alpina Digital, gerente de produto do AlpinaGPT. Cria produtos de IA desde 2019. O Hamidun News é um projeto pessoal que virou um agregador em produção com mais de 6.000 leitores.
✦ Unified AI Workspace

Access Frontier LLMs & Multimodal AI in One Workspace

Discover NomadNet AI (nomadnet.ai) — unified access to frontier language models, research synthesis, and multimodal workflows.

Try NomadNet AI →Launch NomadNet Agent
O que você acha?
Carregando comentários…