Bonjour à tous,
Je cherche à classer des messages, extraits de fichiers EML puis rangés dans une base de données, dans des conversations. Ces messages ont un id, un sujet, que je nettoie et que je tronque à 15 caractères, et un numéro. Je travaille sur des bases de 10000 à 40000 messages, donc les fils de discussion peuvent être interrompus, puis repris plus tard ... etc. Voici ce que je fais :
1/ je demande 2 paramètres : un nombre de messages et une distance de levenshtein (expliqués plus bas)
2/ je fais une requête qui classe mes messages selon le sujet tronqué puis le numéro de messages : je range les messages dans des tableaux (je travaille en java) : id, sujet tronqué, numéro message
3/ je calcule la distance de levenshtein, qui est le nombre de caractères de différence, entre le message i et le message i-1
-> si cette distance est inférieure ou égale au paramètre voulu, je passe au 4/; sinon, je crée une nouvelle conversation
4/ je fais un test sur les numéro de messages i et i-1 :
a) si le numéro de message en cours est inférieur à la valeur absolue de la différence entre les 2 numéros de messages i et i-1 => je les range dans la même conversation
b) si non => je crée une nouvelle conversation
L'inconvénient principal est que pour calculer une vraie distance de levenshtein, il faudrait que je compare tous les sujets entre eux ... chose impossible à moins de laisser poireauter l'utilisateur pendant 10 heures ! -> donc comment faire pour la prendre quand même en compte
Bref, je suis un peu dubitatif quant à la manière d'optimiser tout ça, sachant que ça marche bien pour disons 80% des messages.
Je voulais donc savoir si il existe des algos déjà fait pour parvenir à un classement de messages, ou si vous avez des idées neuves à ce propos ? Merci d'avance !
PS : dans les fichiers EML que j'analyse, il y a des références aux précédents messages, aux réponses ... etc mais ce n'est pas fiable à 100% car cela dépend des clients mail de chacun
Partager