ReviewScope busca anomalías en reseñas mediante embeddings y grafos en 21.000 textos

Tras mudarse de ciudad, este usuario de Habr se puso a buscar una buena panadería a partir de reseñas y empezó a notar textos sospechosos: parecían escritos por una IA o directamente copiados. Eso lo llevó a crear una herramienta capaz de detectar rarezas en las reseñas: picos inusuales de actividad, cambios bruscos en las calificaciones, textos repetidos y manipulación de valoraciones. ReviewScope funciona en local, guarda los datos en DuckDB y analiza archivos CSV y JSON. El código es de acceso abierto. • **Cuatro niveles de detección de reseñas similares**: Exact (coincidencias exactas), Fuzzy (similitud léxica cercana mediante RapidFuzz), Near (fuerte similitud léxica mediante MinHash/LSH), Semantic (similitud de significado mediante embeddings) • **Detección de picos**: mediana móvil + MAD (desviación absoluta mediana) en lugar de la media y la desviación estándar • **Análisis de cambios en las calificaciones**: divergencia de Jensen–Shannon para medir el cambio en la distribución de valoraciones de 1 a 5 estrellas

Procesado por IA desde Хабр: Машинное обучение; editado por Hamidun News
ReviewScope busca anomalías en reseñas mediante embeddings y grafos en 21.000 textos
Fuente: Хабр: Машинное обучение. Collage: Hamidun News.
Escuchar artículo
Ficha técnica y cifras clave
ParámetroDatos
Fuente originalХабр: Машинное обучение ↗
Editor jefe
Detección de picosmediana móvil + MAD (desviación absoluta mediana) en lugar de la media y la desviación estándar
Análisis de cambios en las calificacionesdivergencia de Jensen–Shannon para medir el cambio en la distribución de valoraciones de 1 a 5 estrellas

Tras mudarse, Ziverpup hizo lo que suele hacer: ponerse a buscar en los mapas dónde comer y qué lugares visitar. Casi todos los sitios tienen una valoración superior a cuatro estrellas, así que filtra por reseñas negativas, que es donde el panorama cambia. En una panadería se topó con una reseña extraña: en lugar de describir una experiencia real, el texto parecía una respuesta prefabricada de una IA. Se puso a buscar casos similares y encontró más de uno. Por ejemplo, una reseña sobre un local de shawarma empezaba con el característico "¡Esto es una bomba!", seguido de una lista genérica: pan de lavash, carne, salsa, verduras, tamaño de la porción, la promesa de convertirse en cliente habitual.

Un solo ejemplo no prueba nada, pero la idea le quedó rondando: crear una herramienta para detectar anomalías en las reseñas. Ziverpup ya se había topado con este problema antes: cuando era gerente, revisaba reseñas negativas y a veces las vinculaba con la competencia. Pero lo que más le interesaba era el perfil de los autores: alguien que ha escrito cinco reseñas sobre distintos bares parece una fuente de información más útil que alguien cuyo historial solo incluye un taller de neumáticos cerca de Toliatti y una librería en Vorónezh.

Sin embargo, construir una lógica de confianza sobre los autores resultó más complicado de lo esperado: tener muchas reseñas no convierte a nadie en una fuente competente. Un cambio de ciudad puede ser simplemente un viaje, y una sola reseña detallada puede decir más que cien frases genéricas.

Arquitectura y datos

Así nació ReviewScope, una herramienta de código abierto para analizar reseñas, detectar anomalías y textos repetidos, e investigar el historial de los autores. GitHub: https://github.com/zinverno/reviewscope, demo: https://reviewscope-demo.streamlit.app/.

La herramienta no descarga reseñas directamente de Yandex Maps. Para el análisis se necesita una exportación previa en formato CSV o JSON. La aplicación normaliza los datos y los guarda en DuckDB: todo se ejecuta en local, sin necesidad de un servidor independiente. Cada reseña incluye los campos: review_id, place_id, place_name, place_category, reviewer_id, reviewer_name, rating, text, published_at, city, region, country, latitude, longitude. No todos los campos son obligatorios. La interfaz, construida con Streamlit, muestra N/A cuando faltan datos.

El flujo de trabajo es: CSV/JSON → Normalización → DuckDB → AnalysisEngine → interfaz de Streamlit. El AnalysisEngine incluye cuatro módulos.

Cuatro capas de análisis de anomalías

Detección de picos (burst detection). Una panadería típica suele recibir una o dos reseñas por semana. Si en un día llegan treinta, casi todas con cinco estrellas, eso resulta sospechoso. Pero para un restaurante que recibe cincuenta reseñas diarias, esas mismas treinta no significan nada. La solución: mediana móvil + MAD (desviación absoluta mediana). El MAD mide cuánto se alejan los valores habituales de lo típico. Un único día extremo apenas afecta esta estimación, al contrario de lo que ocurre con la media y la desviación estándar, que se desplazan ante los valores atípicos. El umbral del z-score modificado está fijado en 3,5, con una ventana histórica de 30 días.

Anomalías en los cambios de calificación. Supongamos que se detecta un día con un número inusualmente alto de reseñas. ¿Son todas de cinco estrellas? ¿O son mayoritariamente de una estrella? Para eso se incorporó la divergencia de Jensen–Shannon, una forma de medir la diferencia entre dos distribuciones de probabilidad. Se comparan las proporciones de valoraciones de una a cinco estrellas durante un periodo histórico frente al entorno del evento. El algoritmo detecta igual de bien los picos positivos y negativos.

Detección de duplicados: funciona en cuatro niveles de coincidencia: Exact (textos normalizados idénticos), Fuzzy (similitud léxica cercana mediante RapidFuzz), Near (fuerte similitud léxica mediante MinHash/LSH), Semantic (similitud de significado mediante embeddings). Los primeros tres niveles parecían suficientes, pero cuando un autor reformulaba por completo una frase, los métodos léxicos fallaban. Los embeddings resolvieron ese problema.

Métricas de autores, puntuación de textos y agrupación por temas completan el panorama. El autor añadió indicadores independientes: actividad del autor, experiencia en la categoría, nivel de detalle de los textos y patrones inusuales en su historial.

Las pruebas se realizaron sobre 21.000 reseñas reales. Algunas hipótesis no sobrevivieron a la validación, y un resultado que parecía convincente resultó ser un error de cálculo en la tasa de crecimiento cuando el valor base era cero. Ahora, en esos casos, la aplicación muestra el número real de reseñas e indica que la tasa de crecimiento no tiene sentido en ese contexto.

Preguntas frecuentes sobre la noticia

¿Qué se sabe sobre Arquitectura y datos?

Así nació ReviewScope, una herramienta de código abierto para analizar reseñas, detectar anomalías y textos repetidos, e investigar el historial de los autores. GitHub: https://github.com/zinverno/reviewscope, demo: https://reviewscope-demo.streamlit.app/. La herramienta no descarga reseñas directamente de Yandex Maps. Para el análisis se necesita una exportación previa en formato CSV o JSON. La aplicación normaliza los datos y los guarda en DuckDB: todo se ejecuta en local, sin necesidad de un servidor independiente. Cada reseña incluye los campos: review_id, place_id, pla

¿Qué se sabe sobre Cuatro capas de análisis de anomalías?

Detección de picos (burst detection). Una panadería típica suele recibir una o dos reseñas por semana. Si en un día llegan treinta, casi todas con cinco estrellas, eso resulta sospechoso. Pero para un restaurante que recibe cincuenta reseñas diarias, esas mismas treinta no significan nada. La solución: mediana móvil + MAD (desviación absoluta mediana). El MAD mide cuánto se alejan los valores habituales de lo típico. Un único día extremo apenas afecta esta estimación, al contrario de lo que ocurre con la media y la desviación estándar, que se desplazan ante los valores atíp

ZK
Zhemal Khamidun — CPO de Alpina Digital, product manager de AlpinaGPT. Crea productos de IA desde 2019. Hamidun News es un proyecto personal que creció hasta ser un agregador en producción con más de 6.000 lectores.
✦ 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
¿Qué te parece?
Cargando comentarios…