[BOT] - Conditions de filtrage de messages

greg160 Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   -  
greg160 Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   -
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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 627 Date d'inscription   Statut Membre Dernière intervention   189
 
Je travaille en Java, je pensais l'avoir précisé mais non :(
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > greg160 Messages postés 627 Date d'inscription   Statut Membre Dernière intervention  
 
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 627 Date d'inscription   Statut Membre Dernière intervention   189
 
Non, je parle bien de Java
0
greg160 Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   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