Animint
Site sur les anime manga
Août 2006
Les billets parus en Août 2006 sur le blog Animint
Filtre naïf de Bayes en Php
Par Pazu le Dimanche 20 août 2006 15:08 :: Webmastering
Notre annuaire de sites francophones présente toujours un petit souci au niveau des inscriptions via le formulaire de soumission. De plus en plus d’outils automatiques de soumission permettent à un webmestre lambda d’inscrire son site à une flopée d’annuaires, sans s’occuper de savoir si son inscription est pertinente ou pas. Ce n’est pas ce genre d’outils qui améliore le référencement, et même au contraire, cela peut pourrir vos scores si vous inscrivez votre site dans un mauvais annuaire. La problématique du référencement pourra faire l’objet d’un autre billet mais ce n’est pas le sujet abordé ici.
En pratique, nous nous retrouvons avec des soumissions aussi rocambolesques que de la charcuterie auvergnate trucmuche ou que de l’agence marocaine de voyages bidule. Autant d’entrées qui finissent directement au panier mais qui sont casse-pieds à traiter à la longue, étant donnée que nous effectuons une vérification manuelle pour valider chaque site.
Les stratégies possibles
Diverses stratégies s’offrent à nous pour palier au problème. La première est de bloquer les inscriptions automatiques en travaillant sur le formulaire proprement dit. Pendant une période, nous avons ajouté une image dont il fallait copier les caractères affichés dans un champ pour valider le formulaire. Nous pouvions aussi user du code javascript pour transformer le formulaire en un item estampillé Web 2.0 très à la mode. D’un autre côté, ces actions ne vont pas dans le sens d’un site privilégiant l’accessibilité et freinent les utilisateurs dont nous attendons les sites web. De plus, les agents de soumission automatique sont de plus en plus intelligents et rien ne garantie que ces obstacles restent longtemps efficaces. Sur ce point, le formulaire a été retravaillé pour freiner les robots basiques de soumission tout en restant transparent pour un utilisateur humain, sans qu’il ait une contrainte au niveau de l’activation du Javascript et des cookies dans son navigateur web.
En fait, nous nous sommes plutôt penchés sur le vrai problème, que le site soit soumis par un humain ou par un programme, c’est-à-dire rejeter les entrées hors sujets, donc plutôt à s’intéresser au contenu soumis qu’à la façon dont il est soumis. La solution consiste à ajouter un filtre anti-spam, de la même façon qu’il en existe pour le courrier électronique. Un outil comme spam-assassin, largement utilisé et reconnu pour son efficacité, s’appuie en gros sur deux types d’algorithme : Le premier gère des règles précises concernant le format du mail, les entêtes, l’encodage utilisé, etc. De là découle une première note pour le mail traité. Le second type de traitement, basé sur le théorème de Bayes, calcule la probabilité que le contenu du mail soit un spam, proprement dit. Le savant dosage des deux méthodes aboutit à déterminer si le mail est oui ou non un spam. Un tel outil n’est pas directement adaptable sur notre problème de soumission de liens. Tout d’abord pour des questions techniques mais également pour des questions logiques : A supposer que nous arrivons à définir des règles quant à la validité d’une inscription, elles n’ont rien à voir avec celles gouvernant la bonne syntaxe d’un mail électronique. De même, il y a spam et spam. Spam assassin aura une approche neutre quant à un mail en anglais tandis que nous, nous rejetons une soumission en anglais dans 100% des cas, vue que notre site est francophone. Par ailleurs, nous recensons les boutiques de vente en ligne de manga alors que dans un mail, un message commercial a de fortes chances d’être rejeté. Ici, ce ne sera pas forcément le cas. La base de connaissance ne peut pas être la même.
Cette base de connaissance est basée sur des mots. Dans le passé, les filtres se focalisaient sur des listes blanches et noires, qui suivant la liste où le mot d’un texte était trouvé, le texte était estampillé bon ou spam. Cette approche est très réductrice même si elle peut être un bon complément dans notre cas. Si nous sommes quasiment sûrs de rejeter une entrée avec le mot hardcore, il n’en est pas de même avec le mot boutique : boutique manga aura des chances de passer, contrairement à boutique de lingerie. Il faut raisonner en terme de probabilités. Le filtre s’appuie en fait sur la probabilité pour qu’un mot fasse partie du vocabulaire de spam ou non spam pour en déduire la probabilité du texte en entier quant à son statut de spam ou non spam.

Les équations
C’est là où le théorème de Bayes intervient : Il nous dit que la probabilité d’avoir du spam quand nous voyons les mots M1, M2, M3, etc. est égale à la probabilité d’observer du spam dans l’absolu multiplié par la probabilité de voir les mots M1, M2, M3, etc. dans un texte de spam, le tout divisé par la probabilité de voir les mots M1, M2, M3 dans un texte, quoiqu’il soit.
P(S | M1, M2, M3, …) = P (S) * P (M1, M2, M3, … | S) / P (M1, M2, M3, …)
Nous considérons que les probabilités pour chaque mot, qu’il fasse partie du vocabulaire spam, lorsque nous les observons dans la nature, sont décorellées. Ceci est faux dans l’absolu, étant donnée la richesse de notre langue et les associations de mots, mais cela nous permet d’écrire, avec cette vision naïve :
P (M1, M2, M3, …| S) = P (M1 | S) * P (M2 | S) * P (M3 | S) …
P (M1, M2, M3, …) = P (M1) * P (M2) * P (M3) …
C’est-à-dire que la probabilité de voir apparaître les mots M1, M2, M3 dans un spam, ou dans texte, est égale au produit de la probabilité de chacun de ces mots dans un spam, ou respectivement, dans un texte. Nous notons désormais P (S | D) = P (S | M1, M2, M3, …), M1, M2, M3, … constituant le document D à traiter.
Du coup, la formule devient
P (S | D) = (P (S) * P (M1 | S) * P (M2 | S) * P (M3 | S) …) / (P (M1) * P (M2) * P (M3) …)
Suivant le même principe, nous pouvons remplacer la classe spam, S, par la classe non spam, NS, dans la formule.
P (NS | D) = (P (NS) * P (M1 | NS) * P (M2 | NS) * P (M3 | NS) …) / (P (M1) * P (M2) * P (M3) …)
Le dénominateur Z = (P (M1) * P (M2) * P (M3) …) est commun aux deux formules et n’a donc pas d’incidence sur la probabilité qu’un texte avec les mots M1, M2, M3,.. soit un spam ou un non spam. L’enlever nous fait juste perdre un coefficient de normalisation de la valeur de P (NS | D) et de P (S | D).
De toute façon, en passant Z à gauche des équations, nous obtenons
Z = (P (NS) * P (M1 | NS) * P (M2 | NS) * P (M3 | NS) …) / P (NS | D) = (P (S) * P (M1 | S) * P (M2 | S) * P (M3 | S) …) / P (S | D)
D’où
P (NS | D) / P (S | D) = (P (NS) * P (M1 | NS) * P (M2 | NS) * P (M3 | NS) …) / (P (S) * P (M1 | S) * P (M2 | S) * P (M3 | S) …)
Les probabilités sont des nombres inférieurs à 1, voire beaucoup inférieur à 1. Si le nombre de mots est élevé, les multiplications ci-dessous peuvent rapidement devenir un problème de traitement au niveau de la machine, qui est limitée en terme de précision. Il est donc judicieux de passer à l’usage du logarithme népérien qui adoucit la profondeur des calculs.
Ln (P (NS | D) / P (N | D)) = Ln (P (NS) / P (S)) + Ln (P (M1 | NS) / P (M1 | S)) + Ln (P (M2 | NS) / P (M2 | S)) + (P (M3 | NS) / P (M3 | S)) + …
Un document D est un spam si bien entendu
P (NS | D) < P (N | D)
Donc si :
P (NS | D) / P (N | D) < 1.
Ce qui donne avec le logarithme népérien :
Ln (P (NS | D) / P (N | D)) < 0
Soit finalement si:
Ln (P (NS) / P (S)) + Ln (P (M1 | NS) / P (M1 | S)) + Ln (P (M2 | NS) / P (M2 | S)) + (P (M3 | NS) / P (M3 | S)) + … < 0
L’apprentissage
L’équation obtenue n’a d’utilité que si nous connaissons les valeurs de P (NS), P(S), P (M1 | NS), P(M2 | NS), P(M3 | NS), …, P(M1 | S), P(M2 | S), P(M3 | S), …etc.
Ces valeurs sont obtenues par apprentissage. En langage de probabilité, nous faisons des tirages et en déduisons les valeurs suite à l’observation. Pour revenir à quelque chose de moins théorique, l’apprentissage du spam et no spam, par un système, peut être simple.
Nous lui soumettons différents documents en lui signalant s’il s’agit d’un texte que nous classerions spam ou non spam. Il calcule le nombre d’occurrences pour chaque mot, pour chaque classe, spam et non spam, et il en déduit les probabilités d’avoir du spam, d’avoir du non spam, et pour chaque mot, la probabilité qu’un mot soit vu dans un spam ou dans un non spam.
Il faut une base solide pour que les valeurs soient significative et que vous ne preniez pas comme source, des probabilités marginales. Si mes souvenirs sont bons, en pratique, un filtre anti spam pour mail s’appuie sur quatre mille messages. Cependant, l’apprentissage et l’observation sont imparfaits. Il est peu vraisemblable d’ailleurs que vous puissiez fournir l’intégralité des mots en apprentissage au système. Si un mot est complètement inconnu, il n’est pas pris en compte pour l’équation. Cependant, vous rencontrerez les cas où vous aurez une probabilité pour un mot en classe spam, mais pas en classe non spam, ou bien l’inverse. Supposons que le mot Martinique a été trouvé parmi les spam mais que nous n’avons pas d’occurrence dans les non spam. P (Martinique | NS) = 0 et P (Martinique | S) = 1 dans ce cas. Dans l’absolu, c’est faux, car il se peut qu’il y ait un site manga qui aurait le mot Martinique dans sa description, par exemple. P (Martinique | NS) = 0 vient d’une observation imparfaite et vient plomber notre équation en donnant une valeur moins l'infini, faisant fi des autres facteurs qui auraient pu tirer la valeur dans un sens ou dans l’autre.
Ce qui est sûr en revanche, c’est que P (Martinique | NS) est faible, en tout cas plus faible que les probabilités observées. Dans l’équation, P (Martinique | NS) devient ainsi non nulle. C’est ce que nous appelons dans le jargon, un lissage de Laplace.
L'implémentation en PHP
Il existe quelques exemples sur le net de codage de filtre utilisant l’application naïve du théorème de Bayes. Dans notre cas, nous nous sommes limités à deux classes, spam et non spam mais nous pouvons avoir des applications avec plusieurs classes. Cela a l’inconvénient de compliquer les explications et de nous éloigner de notre but initial, qui est d'effectuer un choix binaire. Des recherches sur les mots clefs naive bayes theorem ou encore bayesian classifier devraient vous rapporter un bon nombre d’explications, généralement en anglais, hélas pour vous, si vous êtes anglophobe.
Un exemple intéressant pour débuter est celui trouvé en français sur le blog d’XHTML.net. Au-delà du codage des boucles de calcul, son auteur propose une implémentation complète avec formulaire et base de données derrière, avec une approche objet quant à la conception du code concernant les filtres bayesiens.
Mes quelques remarques
En ce qui concerne le code fourni sur XHTML.net
- Le code est un exercice complet donc comporte une partie de connexion et de gestion de la base de données. Si vous avez déjà une couche d’abstraction pour votre base de données, quelques retouches sont nécessaires.
- Le filtre prévoit l’utilisation d’une liste de mots à ignorer et ce, à juste titre. Un mot comme ‘site’ dans notre cas, n’a aucune incidence sur la décision de spam ou non spam. Autant ne pas en tenir compte avent de polluer notre base de connaissance avec. L’implémentation se limite à une insertion en dur dans le code, d’un tableau de mot. Il vous faudra coder la gestion de cette liste par la base de données. Rien de bien méchant.
- Les calculs des probabilités s’effectuent directement en produit, au lieu d’utiliser les logarithmes népériens. Même si une valeur est mise en facteur pour éviter les dépassements de précision, celle-ci n’est pas adaptée dès que vous avez plusieurs mots. Le mieux est sans doute d’insérer des fonctions log, qui transforment ensuite vos produits en sommes et vous donnent une réserve en terme de calculs.
- P(S) est déduite dans le code en faisant le rapport du nombre d’occurrence de mots trouvés en spam par le nombre total d’occurrences des mots. Elle n’est pas déduite du rapport du nombre de documents spam par le nombre total de documents.
- L’outil prend en compte dans les calculs les probabilités d’un mot même s’il n’a été rencontré qu’une fois. Même avec le coefficient de lissage de Laplace, les probabilités sont faussées. Dans notre version pour les liens, nous n’en tenons compte que si le mot a plusieurs occurrences.
- J’ai des doutes sur la valeur du coefficient choisi pour le lissage de Laplace. Un autre document sur le net proposait une valeur précise, mais visiblement empirique. Il faudrait le retrouver.

Ajouter un commentaire - Discuter de ce billet sur le forum - Lien permanent
Le manga de Nausicaä
Par Pazu le Vendredi 18 août 2006 20:05 :: Manga
Film, Miyazaki, 2006, Nausicaä, Manga
Au niveau de l’histoire elle-même, l’anime reste sensiblement éloigné du récit original. Sans faire perdre espoir en l’avenir des hommes, le manga est beaucoup plus sombre et si l’émotion imprègne le film, avec la présence de Nausicaä, il vient s’ajouter dans le manga des scènes d’horreur où des myriades d’enfants meurent, victimes de la guerre ou des toxines. Rien ne nous est épargné. Miyazaki a procédé aussi à quelques raccourcis dans son film et il n’a pas repris toute la richesse de l’intrigue géopolitique qui gouverne sa vision de la terre du futur. Dans le film, Nausicaa essaie de concilier les hommes avec la nature, un terme toujours très cher à Miyazaki. Dans le manga, au-delà de ce premier combat, nous avons l’impression qu’elle défie des dieux, en flirtant avec le surnaturel et le mysticisme.
En vous plongeant dans l’excellent dossier sur le manga de Nausicaä, disponible sur le site oomu.org, vous pourrez vous arrêter sur la liste des retouches faites entre la version en prépublication dans le magazine Animage, et la version définitive, en édition reliée. Elles sont nombreuses et dénotent un véritable souci de finition de la part de l’auteur, que ce soit dans la mise en scène ou dans le dessin. Cependant, pour vous ménager le plus de surprises, je vous conseillerai la lecture de ce dossier, qu’après avoir lu les sept tomes de la bande dessinée.

Ajouter un commentaire - Discuter de ce billet sur le forum - Lien permanent
Nausicaä au festival de Corbeil-Essonnes en 1992
Par Pazu le Dimanche 13 août 2006 19:19 :: Manifestations
Film, Tezuka, Studio Ghibli, Takahata, 1995, 1999, 2006, Japon, Orléans, Totoro, Nausicaä
La sortie prochaine au cinéma du film Nausicaä me fait souvenir de la première fois où j’ai eu la chance de le visionner. Je parle bien de la version intégrale et non pas de la version raccourcie, pour ne pas dire massacrée, qui était intitulée la Princesse des étoiles. C’était en 1992, pendant le 13ème festival pour enfants de Corbeil Essonne. Le festival, orienté cinéma au sens large, n’avait pas pour vocation de traiter des productions japonaises mais chaque année, pendant un mois, il permettait de faire découvrir les œuvres cinématographique d’un pays en particulier. En 1992, c’était au tour du Japon, avec un bon nombre de dessins animés et notamment deux studios à l’honneur : le studio Ghibli et le studio Tezuka.
À l’époque, la communication sur l’événement a été plutôt importante avec beaucoup d’affiches dans toutes les gares de la région et des relais dans les principaux médias du coin. On reconnaît que l’affiche officielle est construite à partir de matériel du long métrage Mon voisin Totoro mais il ne s’agit pas d’une capture du film, le personnage du film dans cette même scène, Satsuki, étant différente de celle de l’image.
Point de vue programmation, mise à part peut être la biennale d’Orléans en 1995, il faudra attendre le festival des nouvelles images du Japon en 1999 pour avoir un programme aussi riche : Les cinémas de Corbeil-Essonnes ont projeté l’intégralité des long métrages Ghibli parus jusqu’à alors, de Nausicaä à Omohide Poroporo, avec en plus des production indépendantes de la société Youmek telles que Goshu joue du violoncelle ou Jusqu’à ce que la Lune soit haute. Il y avait notamment bon nombre de courts et moyens métrages du studio Tezuka, dont beaucoup n’ont sans doute jamais été projetés à nouveau en France: Si la Légende de la forêt, Unico et Jumping ont quand même un succès d’estime auprès des français, que dire de l’obscure Course dans le vent ou du Chat vert.
Avec un tarif étudiant à cinq francs la séance, le plein tarif étant à dix francs, vous n’aviez guère de question à vous poser et vous pouviez vous permettre de tout voir. Les organisateurs n’avaient que des versions originales à projeter, bien sûr, et sans doute faute de moyen, aucune version n’était sous-titrée, pas même en anglais. Les studios japonais étaient encore moins ouverts sur l’étranger que maintenant. En fait, les dessins animés passaient en traduction simultanée : Une interprète était dans une cabine et traduisait le film à la volée. C’est un concept un peu difficile à s’imaginer maintenant mais cela se faisait régulièrement dans les conventions de japanimation, jusqu’au lancement des éditions occidentales dans le milieu des années quatre vingt dix.
Pour revenir au festival de Corbeil-Essonnes, non seulement il y a avait là un bon nombre d’œuvres exceptionnelles mais également des invités de marque, avec notamment Isao Takahata, qui faisait là, un de ses nombreux petits séjours en France. Ce dernier était d’ailleurs présent à la projection de Nausicaa et il nous a mentionné avant la séance que le film comportait quelques scènes d’animation dont il était content et qui valaient le coup d’œil. On aurait cru qu’il nous présentait un petit travail expérimental…

Commentaires(3) - Discuter de ce billet sur le forum - Lien permanent
The Japan Times
Par Pazu le Vendredi 11 août 2006 23:31 :: Japon
Nous avons une préférence pour le Japan Times, où la tradition de publication en langue anglaise est beaucoup plus ancrée que chez ses confrères, étant donné que le journal, qui a toujours été édité dans la langue de Shakespeare, a vu le jour en 1897. Vous retrouverez bon nombre des articles sur leur site en ligne : Vous avez par exemple une critique du dernier long métrage des studios Ghibli, Gedo Senki, en juillet dernier, ainsi qu'un petit mot sur Brave Story. Le Japan Time online a surtout la particularité très sympathique de proposer un accès à ses archives électroniques, gratuitement jusqu'à présent. Il suffit de s'inscrire sur leur site avec un email valide pour y pénétrer. C'est suffisamment rare pour que nous le signalions.

Ajouter un commentaire - Discuter de ce billet sur le forum - Lien permanent
Les pierres d'amour de Kiyomizu-dera
Par Pazu le Mardi 01 août 2006 23:16 :: Japon

Les visiteurs sont invités à effectuer la démarche suivante : Partir d'une pierre et atteindre la seconde en gardant les yeux fermés. Il est dit que ceux qui réussissent trouveront le grand amour.

La jeune fille ci-dessus vient de réussir l'épreuve avec brio mais elle s'est faite aidée par ses amies qui la guidaient à la voix. Dans ce cas, la croyance dit qu'elle aura également besoin d'aide pour parvenir à son véritable amour.
Ajouter un commentaire - Discuter de ce billet sur le forum - Lien permanent
31-05-08 22:37 bb king : c qd que vous nous filer les résultats de lanime rgand prix numéro 30?
31-03-08 22:13 Axou : mmmh du hentai ??? mdr
02-02-08 20:35 connexion12 : merci a tous laisser moi des commentaire
08-12-07 12:10 malick : je voudrai recevoir ce jeu hokuto
08-10-07 15:19 yaya : ta note" L'anime pour fan blasé" mdr
t'arrêtes de me décrire hein :p
29-08-07 18:34 Pazu : Ai no melody - la mélodie de l'amour, d'après le CD de la B.O. sorti en France.
29-08-07 14:26 jessica : J'aurai voulu savoir si vous saviez quel était le titre de la musique de fin du film Origine.
17-06-07 11:45 Pazu : Dans les librairies de BDs d'occasion (boulier, etc...) mais il y a peu de choix. Les depots ventes des conv sont mieux.
11-06-07 21:39 Amélie : Est-ce que qqun sait ou on peut trouver des mangas d'occasion à Paris?
09-06-07 14:31 Freddie : Y a plein de manga ici!
07-06-07 21:02 Pazu : Je vais essayer de décorreler la shoutbox des commentaires billet mais faur arrêter d'être bavare comme ça :)
06-06-07 21:08 Diyo : Impossible de laisser des commentaires sur le blog. Soit ils sont trop longs (et pourtant...), soit ils font référence à un site web (et pourtant)... C'est un peu strict... Bref, j'abandonne...
05-06-07 18:56 Pazu : Tous les liens sont désactivés dans les commentaires à cause des méchants robots spammeurs.
03-06-07 14:40 sed : bouh on ne peut pas mettre de trailers dans les commentaires ?? ben en tout cas skull man àl'air d'etre bien niveau graphisme ambiance rien qu'en visionnant les trailers :p quelqu'un à zyeuté les episodes ??
15-05-07 20:43 Pazu : J'ignore s'il y a site plus mondial à ce sujet là - Nous ne faisons déjà pas la Belgique ni la Suisse...
15-05-07 14:43 sanaa : salut a tous je veus savoir des infos s'il y a moyen de penser a vos fanes au MAROC et s'il aura une manifestation de japanimation.
12-04-07 17:25 Pazu : Vous avez la rubrique actualités du site pour voir les prochaines dates des conventions des mois à venir.
12-04-07 10:39 aymeric : je souhaites connaitre la prochaine exposition qui se tiendras dans le nord a vous lire merci
08-04-07 21:17 yoh : yeah le retour de la shout
02-04-07 15:32 0410yuna : Bonjour a tous! Je cherche des infos pour savoir quand aura lieu la prochaine manisfestation de japanimation sur lyon. Si quelqu'un a des renseignements merci de m'avertir.
17-03-07 16:31 Eichina : moi suis trop fan de shonen ai (ah ah ah) genre Kyo kara maou Gravitation, Loveless
01-03-07 00:09 Le+Mamelouk : Mon budget mangas a encore augmenté T_T
Faut que j'arrête de m'informer :p
28-02-07 23:34 Pazu : Chouette des lecteurs. Merci pour les compliments. Taifu a bien fait de nous envoyer ses nouveautés :P
28-02-07 21:19 Dromar : Merveilleuse idée en effet ^^
C'est un plaisir de lire tes critiques, particulièrement ces derniers temps.
28-02-07 20:41 Le Mamelouk : Merveilleuse idée que de nous faire découvrir des mangas peu connus ! :)
24-02-07 22:35 Marie-Pier Brien : Des Animes Manga
23-02-07 21:14 Makimimi : Vive le manga
10-02-07 10:41 Geoman : Sympa le blog manga
26-12-06 23:28 yoh : yojeux noel !
10-12-06 14:06 Pazu : La BO est sortie au Japon le 23/11 - c'est disponible sur des sites de vpc japonais comme www.cdjapan.co.jp
Tags
1995 1996 1999 2000 2001 2002 2003 2004 2005 2006 Série Film OAV Manga Paris Japon Strasbourg Orléans Novice Expert Culture Webmaster Dessin Fullmetal Alchemist Nausicaä Dragon Ball Naruto Miyazaki Toei Studio Pierrot