Für diejenigen, die sich fragen, wie sie die Datenbank mit den Klassifizierungsergebnissen für die Module Community Sentiment und Toxicity anzeigen können, können sie dies mit dem Data Explorer-Plugin und der Tabelle classification_results tun.
Dies ist nützlich, um zu sehen, wie das KI-Plugin auf Ihrer Website funktioniert und Beiträge klassifiziert.
KI-Sentiment
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
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
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
Gibt es eine Möglichkeit, diese Abfrage zu filtern, um Beiträge aus einem bestimmten Thread zu erhalten? Im Moment scheint es, dass Beiträge aus der gesamten Community abgerufen werden, was zwar gut ist, aber auch umständlich ist, um einen bestimmten Beitrag/Thread zu finden, den man sucht, ganz zu schweigen davon, dass man das Zeilenlimit dafür erreicht.
Funktioniert das für bestimmte Themen? Sie müssen die Themen-ID in den Parametern angeben.
-- [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
Aber hier ist auch eine für einen bestimmten Beitrag, nur damit sich die Antwort nicht wie eine verschwendete Mühe anfühlt:
-- [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
Die topic_id und post_number können beide in der URL gefunden werden, daher ist es ziemlich benutzerfreundlich.
Ich denke, dies sollte auf die Kategorie-ID abzielen:
-- [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
Vielen Dank euch beiden! Wenn ich diese ausführe, werden ältere Themen/Themen-IDs nicht gefunden. Ich frage mich – findet die Sentimentanalyse nur bei neuen Beiträgen statt?
@JammyDodger wüsste es besser, aber ja, ich denke, die Sentimentanalyse funktioniert bei neuen Beiträgen. Ich glaube, um sie dazu zu bringen, die alten Beiträge zu verwenden, wären wahrscheinlich einige Rails-Befehle erforderlich, um sie durch das Sentimentmodell zu verarbeiten und in die Tabelle classification_results einzufügen (wo die Analyseergebnisse der neuen Beiträge gespeichert sind).
Nur neue Beiträge ab sofort. Wir können das Nachfüllen dieser Informationen in Betracht ziehen, nachdem wir mit der Berichterstattung über die Daten beginnen und diese validieren.
Könnte mir einer von euch (oder ein anderer brillanter Query-Experte) dabei helfen, dies ein wenig zu verfeinern? Ich hätte gerne Parameter für Daten, und diese Daten würden dem Postdatum entsprechen. Das Endziel wäre es, Änderungen im Laufe der Zeit betrachten zu können, während wir darauf warten, ob das Dashboard dies in Zukunft tun kann
Wenn Sie diese Abfragen verfeinern möchten, um Start- und Enddatumsparameter einzuschließen, könnten Sie eine Abfrage wie diese verwenden:
-- [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
Beispielergebnisse:
created_at
post
model_used
negative
neutral
positive
2023-11-08T21:21:23.913Z
post_id
sentiment
58
38
2
Der wichtige Teil, der hier hinzugefügt wurde, ist die Verknüpfung der posts-Tabelle mit der classification_results-Tabelle, damit wir Folgendes hinzufügen können:
AND p.created_at BETWEEN :start_date AND :end_date
zur WHERE-Anweisung, um die Beiträge nach ihrem created_at-Datum zu filtern.
Da die Abfragen für die Klassifizierung von emotion und toxicity ähnlich sind, könnten Sie diese Abfragen mit dieser Ergänzung modifizieren, um ebenfalls Start- und Enddatumsparameter einzuschließen.
Ich habe versucht, diese Abfrage zu verwenden (unsere Sentiment-Einstellung ist eingerichtet), aber sie gibt keine Ergebnisse zurück. Gibt es etwas, das ich zur Fehlerbehebung versuchen sollte?