Consultas sobre sentimientos comunitarios y toxicidad

Para aquellos que se preguntan cómo ver la base de datos de resultados de clasificación para los módulos de Community Sentiment y Toxicity, esto se puede hacer usando el plugin Data Explorer y la tabla classification_results.

Esto es útil para ver cómo está funcionando el plugin de IA en su sitio y clasificando las publicaciones.

Sentimiento de IA

SELECT target_id as post_id,
model_used,
classification->'negative' as negative,
classification->'neutral' as neutral,
classification->'positive' as positive
from classification_results
WHERE model_used = 'sentiment'
order by id desc

Emoción de IA:

SELECT target_id as post_id,
model_used,
classification->'neutral' as neutral,
classification->'sadness' as sadness,
classification->'surprise' as surprise,
classification->'fear' as fear,
classification->'anger' as anger,
classification->'joy' as joy,
classification->'disgust' as disgust
from classification_results
WHERE model_used = 'emotion'
order by id desc

Toxicidad de IA:

SELECT target_id as post_id,
classification->'toxicity' as toxicity,
classification->'severe_toxicity' as severe_toxicity,
classification->'obscene' as obscene,
classification->'identity_attack' as identity_attack,
classification->'insult' as insult,
classification->'threat' as threat,
classification->'sexual_explicit' as sexual_explicit
From classification_results
WHERE classification_type = 'toxicity'
order by id desc

8 Me gusta

¿Hay alguna forma de añadir un filtro a esta consulta para obtener las publicaciones de un hilo concreto? Ahora mismo, parece que está obteniendo publicaciones de toda la comunidad, lo cual está bien, pero también es engorroso encontrar una publicación/hilo concreto que se busca, sin mencionar que te encontrarás con el límite de filas para esto.

2 Me gusta

Hola @Samantha_O :wave:

¿Funciona esto para temas específicos? Tendrás que especificar el ID del tema en los parámetros.

-- [params]
-- int :topic_id = 

SELECT cr.target_id as post_id,
cr.model_used,
cr.classification->'negative' as negative,
cr.classification->'neutral' as neutral,
cr.classification->'positive' as positive
FROM classification_results cr
JOIN posts p ON p.id = cr.target_id
WHERE cr.model_used = 'sentiment'
AND p.topic_id = :topic_id
ORDER BY cr.id DESC
6 Me gusta

Ahh me ganaste. :slight_smile:

Pero aquí tienes uno para una publicación específica también, solo para no sentir que mi respuesta fue en vano:

-- [params]
-- topic_id :topic_id
-- int :post_number

SELECT
    cr.target_id as post_id,
    cr.model_used,
    cr.classification->'negative' as negative,
    cr.classification->'neutral' as neutral,
    cr.classification->'positive' as positive
FROM classification_results cr
  JOIN posts p ON p.id = cr.target_id
WHERE cr.model_used = 'sentiment'
  AND p.topic_id = :topic_id
  AND p.post_number = :post_number

El topic_id y el post_number se pueden encontrar ambos en la URL, por lo que es bastante fácil de usar.

Topic_id:

Post_number:

5 Me gusta

Creo que esto debería apuntar al category id:

-- [params]
-- int :category_id = 

SELECT cr.target_id as post_id,
cr.model_used,
cr.classification->'negative' as negative,
cr.classification->'neutral' as neutral,
cr.classification->'positive' as positive
FROM classification_results cr
JOIN posts p ON p.id = cr.target_id
JOIN topics t ON t.id = p.topic_id
WHERE cr.model_used = 'sentiment'
AND t.category_id = :category_id
ORDER BY cr.id DESC

5 Me gusta

¡Gracias a ambos! Cuando ejecuto estos, no encuentra temas/IDs de temas antiguos. Me pregunto, ¿el análisis de sentimiento solo ocurre en publicaciones nuevas?

editado para mayor claridad

2 Me gusta

@JammyDodger sabría mejor, pero sí, creo que el análisis de sentimiento funciona en las nuevas publicaciones. Creo que para que utilice las publicaciones antiguas probablemente se requerirían algunos comandos de Rails para procesarlas a través del modelo de sentimiento y en la tabla classification_results (donde están los resultados de los análisis de las nuevas publicaciones).

3 Me gusta

Funciona en nuevas publicaciones una vez que está activado. :+1: No estoy seguro si hay una opción de relleno para ello.

4 Me gusta

Solo nuevas publicaciones a partir de ahora. Podemos considerar rellenar esa información después de que comencemos a informar sobre los datos y los validemos.

6 Me gusta

¿Podría alguno de ustedes (o algún otro brillante experto en consultas) ayudarme a ajustar esto un poco? Me gustaría tener parámetros para las fechas y que esas fechas correspondan a la fecha de publicación. El objetivo final sería poder ver los cambios a lo largo del tiempo mientras espero a ver si el panel puede hacer eso en el futuro :crossed_fingers:

Hola Samantha:

Si quisieras refinar esas consultas para incluir parámetros de fecha de inicio y fin, podrías usar una consulta como esta:

-- [params]
-- date :start_date = 2023-01-01
-- date :end_date = 2024-01-01

SELECT 
p.created_at,
cr.target_id as post_id,
cr.model_used,
cr.classification->'negative' as negative,
cr.classification->'neutral' as neutral,
cr.classification->'positive' as positive
FROM classification_results cr
JOIN posts p ON p.id = cr.target_id
WHERE cr.model_used = 'sentiment'
AND p.created_at BETWEEN :start_date AND :end_date
ORDER BY cr.id DESC

Resultados de ejemplo:

created_at post model_used negative neutral positive
2023-11-08T21:21:23.913Z post_id sentiment 58 38 2

La parte importante que se agregó aquí es unir la tabla posts con la tabla classification_results para que podamos agregar:

AND p.created_at BETWEEN :start_date AND :end_date

A la declaración WHERE para filtrar las publicaciones por su fecha created_at.

Dado que las consultas de clasificación de emotion y toxicity son similares, podrías modificar esas consultas con esta adición para incluir también parámetros de fecha de inicio y fin. :slightly_smiling_face:

4 Me gusta
4 Me gusta

Añadiendo este también:

2 Me gusta

Intenté usar esta consulta (nuestra configuración de sentimiento está configurada) pero no devuelve ningún resultado. ¿Hay algo que deba intentar para solucionar problemas?

He actualizado las guías en Dashboard Report - Overall Sentiment y Dashboard Report - Post Emotion, ¿puedes intentarlo de nuevo con las consultas actualizadas?

3 Me gusta