[BOT] - Conditions de filtrage de messages

greg160 Messages postés 729 Statut Membre -  
greg160 Messages postés 729 Statut Membre -
Bonjour,

Je fais des streams sur la plateforme Twitch depuis plus d'un an, et j'utilise mes connaissances en programmation pour développer un bot qui me convient.

J'ai créé un algorithme qui filtre les messages, cependant après essai avec ma communauté, celui ci se révèle inefficace car trop strict, et n'intervient pas sur les bons messages.

L'algorithme est organisé par 3 filtres :

- Le premier pour le flood/ le spam (répétition de mots, caractères, etc...) : Celui ci semble fonctionner, cependant faire ceci fait intervenir le bot :

"cool pool doom" est un message bloqué car il y a répétition de "oo" 3 fois dans tout le message.

- Le deuxième lui filtre les majuscules.

- Le dernier la longueur, pour éviter d'avoir à lire des messages trop longs.

Les filtres sont activables/désactivables à souhait, et sont régis par une sensibilité qui va de 1 à 10.

Je ne souhaite pas avoir de réponse en code, juste quelque chose de ce genre :

Voici l'algorithme actuel :

Si le spam est activé :
Pour chaque caractère du message, si il est répété :
On incrémente le nombre de fois où des caractères sont répétés dans la phrase dans la valeur 'char_total_rep'
Tant qu'il continue d'être répété, on incrémente une valeur qui compte le nombre de répétitions
Lorsqu'il n'est plus répété, si il s'agit du caractère le plus répété, on enregistre le nombre de fois où il est répété dans la valeur 'char_max_rep'

Conditions de filtrage :
Si le caractère le plus répété l'est 3 + (10-sensibilité), alors on sévit.
Si le nombre de fois où un caractère est répété est supérieur à 4 + (10-sensibilité), on sévit.

Même principe pour chaque mot :
Si le mot le plus répété l'est 2 + (10-sensibilité), on sévit
Si le nombre de fois où un mot est répété est supérieur à 3 + (10 - sensibilité), on sévit.

Pour les majuscules, je compte juste le nombre de majuscules.
Si il y a plus de 5 + (10 - sensibilité), on sévit.

Pour la longueur, il y a deux choses :
- La longueur de chaque mot : Si il y a plus de 22 + (10 - sensibilité), alors on sévit (anticonstitutionnellement passe si la sensibilité est réglée sur 7)

- La longueur de la phrase : Si il y a plus de 140 + (10 - sensibilité) * 10 si la sensibilité est supérieur à 6, sinon 140 + (10 - sensibilité) * 100, alors on sévit.

Malheureusement, cet algorithme et ces conditions ne fonctionnent pas pour un filtrage correct, et je ne sais pas comment régler ce problème. Avez vous des idées ?

Merci d'avance



A voir également:

1 réponse

[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Salut greg160,

La façon la plus optimale de traiter cela serait d'utiliser un filtre bayésien, que tu entraînes à reconnaître le spam du ham, comme pour le spam d'e-mails.

Tu n'as pas précisé en quel langage du programmes... tu pourrais voir s'il n'existe pas une bibliothèque utilisable pour cela.

Par exemple, en Php :

https://github.com/benwaine/BayesPHP
(bibliothèque non testée)


Dal
0
greg160 Messages postés 729 Statut Membre 189
 
Je travaille en Java, je pensais l'avoir précisé mais non :(
0
KX Messages postés 19031 Statut Modérateur 3 020 > greg160 Messages postés 729 Statut Membre
 
En effet tu avais posté ta question dans le forum Java mais puisque tu "ne souhaite pas avoir de réponse en code" j'avais jugé bon de te déplacer dans le forum générique afin de recueillir le plus de réponses possibles à ton problème indépendamment du langage de chacun.

Au passage quand tu dis Java ne serait ce pas plutôt JavaScript ?
0
greg160 Messages postés 729 Statut Membre 189
 
Non, je parle bien de Java
0
greg160 Messages postés 729 Statut Membre 189
 
Et ce n'est pas vraiment que je ne veux pas de code, c'est que j'aimerais fixer quelque chose de solide avant de passer à la prog'
0