Commits

Amirouche Boubekki committed f7865f3

maman est genial

Comments (0)

Files changed (9)

 Modifications
 =============
 
- - Reformulation, grammaire et orthographe
+ - Reformulations, grammaire et orthographe
  - Reécriture du retour d'experience 
  - Reécriture de la conclusion
  - Reécriture de la présentation du projet Djaz
  - Reformulation de la description de Django
  - Retrait de l'organigramme de l'entreprise
- - Retrait des captures d'écran qui n'apportaient pas d'information supplémentaires
  - Correction de l'architecture cible Djaz
  - Correction de la pile applicative Djaz
+ - Reécriture de la méthode de classement à l'aide de PageRank
 
 Ma première proposition était de modifier l'administration proposée par Django
 pour afficher des widgets graphique permettant de visualiser la progression. Ceci
-impliquait d'entamer le lot 3 c'est pourquoi nous nous sommes contenter d'une
-commande django qui génère un fichier au format csv.
-
-Il m'a fallu concevoir la commande, cela impliquait
-pas d'autre partie du code hormis le code de transition du lot 3. C'était pour
-moi l'occasion de me familiariser avec le code du projet djaz ainsi que le code
-PHP. Il m'a aussi fallut m'adapter au workflow de travail.
+impliquait d'entamer le lot 3, c'est pourquoi nous nous avons choisi de crée une
+commande django qui génère un fichier au format csv. Cette proposition avait l'avantage
+d'éviter la modification du module qui gère les abonnements.
+C'était pour moi l'occasion de me familiariser avec le code du projet Djaz, de
+m'initier au code historique de la plateforme, j'ai pu ainsi intégrer l'équipe 
+Djaz.
 
 
 Améliorer le worlflow d'assurance qualité
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-J'ai réalisé un point sur les éléments en place pour s'assurer
+J'ai réalisé un point sur les éléments en place permettant de s'assurer
 le bon fonctionnement de la plateforme ainsi que sa pérennité en proposant des outils
-qui capturent un maximum de régression.
+qui capturent un maximum de régressions.
+
 
 Lancement des tests projets et sous-modules
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-La première étape était de pouvoir lancer tous les tests de la plateforme djaz
-à l'aide d'une seule commande. La difficulté résidait dans la possibilité offerte
-par django de lancer les tests de la plateforme uniquement pour un seul «projet django».
-D'autre part certains sous-modules ont leur propre méthode de lancement de test.
+Premièrement il fallait lancer tous les tests de la plateforme à l'aide d'une commande.
+La difficulté résidait d'une part dans la possibilité offerte par django de lancer les 
+tests uniquement pour un seul «projet django», d'autre part, certains sous-modules ont 
+leur propre méthode de lancement de tests.
 
-J'ai réaliser un script qui permet de lancer tous les tests en série avec la contrainte
+J'ai réalisé un script qui permet de lancer tous les tests en série avec la contrainte
 que les rapports ne soient pas analysables automatiquement.
 
 Accélérer les lancements des tests
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Le lancement des tests prennent 20 minutes sur la machine de préproduction, il m'a
-fallut évaluer la possibilité de lancer les tests plus rapidement.
+Le lancement des tests était trop long (20 minutes), mon travail a consisté à trouver
+des solutions pour réduire ce temps.
 
 Deux solutions existent:
 
- - Placer la base de donnée en RAM avec comme contrainte de ne pas pouvoir éteindre
-   la machine car il faudrais 1 heure pour recharger la base.
- - Limiter le nombre d'écriture sur disque avec la contrainte
-   que la base de donnée puisse être corrompu en cas de panne de la machine. Le temps de
-   chargement de la base est de deux heures.
+ - Placer la base de données en RAM avec comme contrainte de ne pas pouvoir éteindre
+   la machine car il faudrait 1 heure pour recharger la base.
+ - Limiter le nombre d'écritures sur disque avec la contrainte que la base de données
+   puisse être corrompue en cas de panne de la machine. Le temps de chargement de
+   la base est de deux heures.
 
 Ces deux solutions sont trop contraignantes pour la machine de préproduction. Nous
-ne pouvons pas courir le risque de perdre la base de donnée quand il faut au moins
-une heure pour la recharger. C'est une configuration utilisable en développement,
-car nous utilisons des bases plus légères.
+ne pouvions courir le risque de perdre la base de données vu le temps nécessaire
+pour la recharger. C'est une configuration utilisable en développement, car nous 
+utilisons des bases plus légères.
 
-Eviter les regressions fonctionnelles
+
+Éviter les régressions fonctionnelles
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Les tests unitaires sont efficaces contre certains bugs mais pas tous. Le test
-des fonctions activés par javascript ne sont pas possible pour cela il faut employer
-d'autre outils tel que `Selenium <http://seleniumhq.org/>`_. Selenium permet le test
-d'une application à l'intérieur d'un navigateur, ses tests couvrent un plus large
-spectre fonctionnelle et sont plus réaliste.
+des fonctions activées par Javascript ne sont pas possibles. Pour y remedier il 
+faut employer d'autre outils, `Selenium <http://seleniumhq.org/>`_ permet le test 
+d'une application à l'intérieur d'un navigateur. En effet, ces tests couvrent un 
+plus large spectre fonctionnel et sont plus réalistes.
 
 Jusqu'à maintenant, les fonctions qui bénéficieraient de cette amélioration n'ont
-pas été considérés assez nombreuses pour justifier le développement.
+pas été considérées assez nombreuses pour justifier le développement.
+
 
 Test de réponse positive
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
 Une autre façon de tester une application est de voir si celle-ci répond le bon
-code Http quand on requête ses urls. Pour cela un outils mis à notre disposition
-est  `django-kong <http://django-kong.readthedocs.org/en/latest/>`_. C'est une solution
-intermédiaire entre Selenium et les test de Django.
+code HTTP quand on requête ses urls. Pour ce faire, nous avons à notre disposition 
+le logiciel `django-kong <http://django-kong.readthedocs.org/en/latest/>`_. 
+C'est une solution intermédiaire entre Selenium et les tests de Django.
 
-Pour les mêmes raisons que précédemment cette solution n'a pas été mise en place.
+Pour les mêmes raisons que précédemment, cette solution n'a pas été mise en place.
 
-Sécuriser la génération d'image
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Le Libération possède un `reader <http://journal.liberation.fr/publication/liberation/715/#!/0_0>`_
-réalisé en HTML5 qui permet la lecture du journal en ligne. Les images
-du reader ne sont pas pré-générées pour des raisons de performance. Donc deux utilisateurs
+Sécuriser la génération d'images
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Le site Libération possède un `reader <http://journal.liberation.fr/publication/liberation/715/#!/0_0>`_
+réalisé en HTML5, il permet la lecture du journal en ligne. Les images
+du reader ne sont pas pré-générées pour des raisons de performance. Deux utilisateurs
 peuvent enclencher la génération d'une image au même moment et provoquer des erreurs
 d'écriture.
 
-C'était ma première expérience du développement de module qui travail en parallèle
+C'était ma première expérience du développement de modules qui travaillent en parallèle
 pour le web en utilisant le framework Django. La solution était d'utiliser des
 locks-fichiers avec un temps de vie pour assurer la reprise sur panne.
 
 Colonne de droite
 ^^^^^^^^^^^^^^^^^
 
-La colonne de droite est la colonne où se trouve des offres promotionnelles.
+La colonne de droite est dédiées aux offres promotionnelles.
 
 Cette application contient un unique modèle qui se charge de stocker la configuration
-de la colonne et ses bloques. En effet une colonne est representé par une table
-qui contient dans chaqu'une de ses les lignes les informations qui nous permettent
+de la colonne et ses bloques. En effet cette dernière est représentée par une table
+qui contient dans chacune de ses les lignes les informations qui nous permettent
 d'afficher un bloque.
 
 La description UML de ce module est représenté dans la figure 5.8.
 ^^^^^^^^^^^^^^^^^^
 
 Lors de cette mission j'ai du reproduire la fonction bibliothèque
-de monLibe. Il s'agit d'un point de vue technique concevoir le modèle, les vues
-ainsi que les templates tags. Ce module est indépendant du reste du code de libération,
-il est utilisé dans des projets hors djaz.
+de «Mon Libé». Il fallut concevoir le modèle, les vues ainsi que les templates. 
+Ce module est indépendant du reste du code de libération, il est utilisé dans 
+des projets hors Djaz.
 
-La description UML de ce module est représenté dans la figure 5.10.
+La description UML, de ce module, est représentée dans la figure 5.10.
 
   .. figure:: _static/uml_favoris.png
 
-    *Diagramme partiel de classe du module favorites*
+    *Diagramme partiel de classe du module «favorites»*
 
 L'implémentation dans djaz se fait en surchargeant les templates dans le projet
-django.
+Django.
 
 
 Dossiers à la demande
 ^^^^^^^^^^^^^^^^^^^^^
 
-Mirroir fonctionnelle des dossiers abonnées de l'espace monLibé, c'est une application
+Miroir fonctionnel des dossiers abonnées de l'espace «Mon Libé», c'est une application
 propre au projet djaz.
 
   .. figure:: _static/uml_fod.png
 
-    *Diagramme partiel de classe du module libefolderondemand*
+    *Diagramme partiel de classe du module «libefolderondemand»*
 
-Il a fallut aussi concevoir une interface graphique pour le suivit du processus de
-creation des dossiers.
+Il a fallut aussi concevoir une interface graphique pour le suivi du processus de
+création des dossiers.
 
 Bilan
 ^^^^^
 
-La conception, le développement et la maintenance sont aisé par le framework Django,
-et le Python. Django propose des patrons de conception pour aisé le developpement,
-tout en laissant assez de liberté pour pouvoir remplacer ou developper de nouvelle
-fonctionnalité dans le framework.
-Dans un contexte agile nous procédions par itération de conception de l'application,
-avec parfois des besoins qui remontait lors de l'utilisation. Cela demande un travail
-rigoureux de documentation de son code pour permettre de revenir dessus facilement à
-tout moment.
-La réalisation de la documentation comme le code c'est fait de manière
-itérative.
-Cette méthode de travail c'est trouvé renforcé avec l'adjonction de tests.
-Malgré le fait que je connaissait le Python et le Django, j'ai eu des difficulté pratique
+La conception, le développement et la maintenance sont aisés par le framework Django,
+et le Python. Django propose des patrons de conception pour faciliter le développement,
+tout en laissant assez de liberté pour remplacer ou développer de nouvelles fonctionnalités
+dans le framework.
+
+Dans un contexte agile nous procédions par itération.
+Cela demande un travail rigoureux de documentation de son code pour permettre de 
+revenir dessus facilement à tout moment. La réalisation de la documentation comme 
+le code c'est fait de manière itérative.
+
+Cette méthode de travail s'est trouvée renforcée avec l'adjonction de tests.
+Malgré le fait que je connaissais le Python et le Django, j'ai eu des difficultés pratiques
 concernant le travail en groupe et la gestion des sources. Hormis
 ce petit bémol, mon expérience a été positive et a renforcé mes convictions quant
 à l'intérêt du développement Web en Python.
 MonkeyPatch
 ^^^^^^^^^^^
 
-Ce travail était ma première expérience de travail en binôme en entreprise. Nous
-avons établit ensemble un plan pour évaluer les principales méthodes de theming.
-Après avoir évaluer séparément les principales méthodes et remplit une matrice
-de comparaison. Nous nous sommes échangés documents et ressources pour simuler
-la prise en main de l'outils à partir d'une documentation interne existante.
+Une Monkey-Patch (aussi nommé Monkey Patch, MonkeyPatch) traduit par modification-singe 
+est une façon de modifier ou d'étendre du code qui sera exécuté sans modifier le 
+code source original pour des langages de programmations dynamiques. 
 
 Voir `l'article wikipedia complet <http://fr.wikipedia.org/wiki/Monkey-Patch>`_
 
-Malédiction dimentionnelle
+Malédiction dimensionnelle
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-La malédiction dimentionnellle se réfère à l'ensemble des phénomènes qui apparaissent
+La malédiction dimensionnelle se réfère à l'ensemble des phénomènes qui apparaissent
 à haute dimension et qui n'apparaissent pas dans les dimensions 2 ou 3.
 
 Voir `l'article wikipedia anglais <http://en.wikipedia.org/wiki/Curse_of_dimensionality>`_
 Introduction
 ============
 
-Ce rapport rend compte du stage effectué de mai 2011 à septembre 2011 
-au sein de l'entreprise PilotSystems dans le cadre de la dernière année de Master 
-d'Informatique Avancée et Applications spécialité Intégration de Système Logiciel.
+Ce rapport rend compte du stage que j'ai effectué de mai 2011 à septembre 2011 
+au sein de l'entreprise Pilot Systems, dans le cadre de la dernière année de Master 
+d'Informatique, Avancée et Applications, spécialité Intégration de Système Logiciel.
 
 J'ai intégré l'équipe de Pilot Systems en tant que développeur web junior. J'ai
-choisit cette entreprise car elle soutient la cause open-source tout en participant
-a des projets d'envergures.
+choisi cette entreprise car elle soutient la cause open-source tout en participant
+à des projets d'envergure.
 
-Ma mission principale était de participer à la réalisation de la nouvelle plateforme qui propulse 
-notamment le site `Liberation.fr <http://www.liberation.fr>`_. 
+Ma mission principale était la réalisation de la nouvelle plateforme 
+qui propulse le site `Liberation.fr <http://www.liberation.fr>`_. 
 
-Ce rapport commence par la présentation de l'entrerprise, puis poursuit sur l'explication
-et l'analyse de chaque projet sur lesquels je suis intervenu.
+En premier lieu je présente de l'entreprise, en second lieu j'explique et j'analyse
+les projet sur lesquels je suis intervenu, pour conclure sur mon retour d'expérience.
 Pilot Systems est une entreprise de services en informatique basée à Paris.
 Elle propose de l’intégration, de la personnalisation et du support pour les
 logiciels libres. Elle dispose d’une infrastructure permettant l’hébergement de
-serveurs et de sites web. Pilot Systems dispense aussi des formations sur certaines
+serveurs et de sites Web. Pilot Systems dispense aussi des formations sur certaines
 technologies Open Source, en particulier Python, Django, Plone et Zope. Les objectifs
 de l’entreprise sont :
 
 Le tableau type veleda ou tableau noir permet de communiquer avec l'équipe ou un
 client sur un projet de façon dynamique. C'est un outil synchrone, intrusif. J'ai
 utilisé le tableau comme un outil
-

remerciements.rst

 fléchi.
 
 Je tiens à remercier M. Massat et l'ensemble de l'équipe pédagogique du Master 
-d'Informatique de l'Université de la Méditérranée d'Aix-Marseille II pour deux 
-années enrichissantes.
+d'Informatique de l'Université de la Méditérranée d'Aix-Marseille II.
 
 Je remercie David Sapiro, gérant de Pilot Systems, mon tuteur de stage Gaël Le Mignot,
-le résponsable d'équipe chez Libération Yohan Boniface, l'équipe de developpement 
+le responsable d'équipe chez Libération Yohan Boniface, l'équipe de développement 
 média digitaux de Libération ainsi que l'ensemble de l'équipe  Pilot Systems pour
 leur confiance, leurs conseils et plus généralement pour un cadre de travail agréable 
 et enrichissant.
 
-Je remercie également mes amis et toutes les personnes qui ont contribués de près
+Je remercie également mes amis et toutes les personnes qui ont contribué de près
 ou de loin à la réalisation de ce rapport.
 ------------
 
 Pilot Systems est une Société de Services en Logiciels Libres (SSLL). Elle est 
-composé de douze personnes. Son activité principale est le développement et l'hébergement
-d'application Web à l'aide des technologies Django & ZOPE.
+composée de douze personnes. Son activité principale est le développement et l'hébergement
+d'application Web à l'aide des technologies Django & Zope.
 
 Mission
 -------
 
-Ma mission principale était la conception et le développement d'application
+Ma mission principale était la conception et le développement d'applications
 Web pour le framework Django dans le cadre d'une mission au journal Libération. 
 J'ai contribué aux projets suivants:
 
    :align: right
    :height: 100px
 
-Rook est une application web qui complète l'expérience utilisateur de twitter.
-Il s'agit d'une application développé par Pilot Systems sur laquelle je suis 
+Rook est une application web qui complète l'expérience utilisateur de Twitter.
+Il s'agit d'une application développée par Pilot Systems sur laquelle je suis 
 intervenu en tant que consultant fonctionnel et technique.
 
 Cockpit
 Intégration dans le milieu du travail
 -------------------------------------
 
-Le stage m'a permis d'apprendre un métier passionnant qu'est le celui du développeur
-Web, ainsi que la rigueur qui va avec les projets en mode agile.
+Le stage m'a permis de completer mes compétances de développeur Web.
+J'ai aussi pu acquérir plus de rigueur dans la réalisation de projets agiles.
 
-La facette la plus enrichissante est la communication interne au projet et
-extra-projet qui nourrit les compétences de chacun.
+La facette qui a été la plus enrichissante est la fluidité des échanges
+qui nourrit les compétences de chacun.
 
 La communication avec les collaborateurs
 ----------------------------------------
 
-Les contacts humains sont une différence significative entre un projet école et
-une expérience professionnel. La communication avec les partenaires de projet
-interviens à toutes les étapes d'un projet.
-
-Tout le long du développement d'un module pour la plateforme djaz, l'équipe me
-conseillait sur mes choix d'implémentation au fur et à mesure que j'avançait
-dans mon travail. C'est un idéal de communication qu'y est possible dans
-les petites équipes de développement.
+J'ai constaté que les contacts humains participent grandement à la réalisation
+des projets. Ainsi, tout le long du développement d'un module pour la
+plateforme Djaz, l'équipe me conseillait sur mes choix d'implémentation 
+au fur et à mesure que j'avançais dans mon travail. 
 
 Organisation et planification des phases
 ----------------------------------------
 
-L'organisation souple des lots a permis de livrer à temps le projet. C'est une méthodologie
-de travail qui permet de faire des nouvelles versions souvent mais avec un coup
-relatif en terme de maintenance. Mon sentiment est que cela est une méthode réaliste
-de travail en ce quelle permet de capter l'attention des visiteurs tout en nourrissant
-en parallèle les fonctions du site.
+L'organisation souple des lots a permis de livrer à temps le projet. Cette 
+façon de procéder permet la mise en production de nouvelles fonctions de
+manières régulières avec a des coups relativement faibles en terme de
+maintenance.
 
-Ce stage m'a permis d'apprendre à jongler entre les outils, ainsi qu'avec les codes
-sources. Un bug peut survenir sur une application alors que je développe une autre,
-c'est un changement de contexte qu'il faut s'habituer à avoir. Ceci est mitigé
-par des règles établit au niveau du passage du code en stable, pour éviter ce genre
-de situation.
+Ce stage m'a appris à être plus flexible, à savoir m'organiser pour me être
+efficace sur plusieurs projets à la fois. 
 
 Bilan
 -----
 
 Lors de mon stage je me suis efforcé d'écouter, d'apprendre tout en fournissant
-tout mon savoir et mes compétences pour mener à bien les projets qui m'était confiés.
+tout mon savoir et mes compétences pour mener à bien les projets qui m'étaient confiés.
 
-La méthodologie agile et le travail par pair m'a aidé à comprendre rapidement
-les besoins du métier tout en montant en compétence avec les outils avec lesquels
-nous avons travaillé.
-
-Cela a été une opportunité pour moi de travailler sur un projet de cette ampleur,
-avec autant de responsabilités.
-
+La méthodologie agile et le travail par paire m'a aidé à comprendre rapidement
+les exigences du métier. J'ai pu ainsi améliorer mes compétences dans le
+maniement des outils de développement.
 Rook
 ====
 
-Rook est une application web qui complète l'expérience utilisateurs de twitter.
-Notamment à l'aide de mini-application qui rendent accessible des fonctions de 
-twitter autrement difficile d'accès. Il s'agit d'une application développée par 
-Pilot Systems sur laquelle je suis intervenu en tant que consultant fonctionnel 
-et technique. Je devais penser à de nouvelles fonctionnalités et proposer des moyens
-de les implémenter.
+Rook est une application Web qui complète l'expérience utilisateurs de twitter.
+A l'aide de mini-applications qui facilite l'utilisation de Twitter. Il s'agit d'une
+application développée par Pilot Systems sur laquelle je suis intervenu en tant que
+consultant fonctionnel et technique. Je devais penser à de nouvelles fonctionnalités 
+et proposer des moyens de les implémenter.
 
-La proposition est de reproduire le mur personnalisé de facebook et de regrouper les
-tweets par thème comme le fait Google News. 
+Ma proposition est de reproduire le mur personnalisé de Facebook et de regrouper les
+tweets par thèmes comme cela est fait dans Google News. 
 
 La première étape a été de dresser un état de l'art dans le domaine de la recommandation
 de contenu. Je me suis rendu compte que le domaine de recherche à l'origine de ce 
 type d'algorithme provenait le plus souvent de l'intelligence artificielle et plus 
-particulièrement du domaine des machines apprenantes ou algorithme d'aide à la décision. 
-J'ai continué mes lectures dans ce domaine. Les machines apprenantes 
-utilisent différents types d'algorithmes parfois basés sur des statistiques 
-parfois sur des mathématiques discrètes. Il y a une partie des algorithmes qui 
-utilisent de l'information sémantique tiré d'un traitement automatique de la 
-langue. La catégorisation est aussi un problème qui peut-être résolue à l'aide 
-d'une machine apprenante.
+particulièrement du domaine des machines apprenantes ou algorithmes d'aide à la décision. 
+Les machines apprenantes utilisent différents types d'algorithmes basés 
+sur des statistiques ou des mathématiques discrètes. Il y a une partie 
+des algorithmes qui utilisent de l'information sémantique tiré d'un traitement 
+automatique de la langue. 
 
-A partir de ces connaissances j'ai développé un programme cible qui doit permettre
-d'implémenter la recommandation de contenu en minimisant l'effet de démarrage à
-froid dans le cadre d'une implémentation dans Rook. 
+La catégorisation est aussi un problème qui peut-être résolu à l'aide d'une machine apprenante.
 
-Ce chapitre est partagé en trois parties, dans un premier temps je décris la base
-de connaissance et son support, ensuite les différentes méthodes qui permettront 
-de faire de la recommandation sur cette base de donnée, pour finir par un bilan 
+A partir de ces connaissances, j'ai conçu un programme qui doit permettre
+d'implémenter la recommandation de contenu, en minimisant l'effet de démarrage à
+froid, dans le cadre d'une implémentation dans Rook. 
+
+Ce chapitre se présente sous forme de trois parties, dans un premier temps je 
+décris la base de connaissances et son support, ensuite les différentes méthodes 
+qui permettront de faire de la recommandation, pour finir par un bilan 
 sur le travail fait.
 
 
 Les messages sur twitter ne font que 140 caractères, difficile dans ce cas de réaliser 
 une analyse sémantique ou même statistique à l'aide d'un algorithme tel que LDA [1].
 
-
 Un système apprenant a besoin d'informations, certains algorithmes fonctionnent
-mieux avec un grand nombre de donnée [2] et les algorithmes pour résoudre des
+mieux avec un grand nombre de donnée [2], et des algorithmes pour résoudre des
 problèmes avec de très nombreuses données existent [3].
 
-Nous désirons donc maximiser la quantité d'informations que nous capturons de l'environnement
-social twitter de l'utilisateur ainsi que de son interaction avec l'application.
-
-En entrée du système, nous avons l'environnement social, les tweets (ainsi que les hashtag) et 
-toutes les interactions avec les tweet:
+En entrée du système, nous avons l'environnement social, les tweets et toutes 
+les interactions avec les tweet:
 
   - personnes suivies
   - personnes suivantes
 
 Ceci ne résout pas le problème de l'analyse sémantique des tweets. En effet, avoir
 un grand nombre de données est une chose, et pouvoir les corréler en est une autre. 
-Pour nous aider dans ce travail nous allons augmenter notre base
-de connaissances issue du Web certaines ressources facilement exploitable tel que 
-Wikipedia à travers `dbpedia <http://dbpedia.org/About>`_ ou autres ressources 
-catégoriser par exemple `dmoz <http://www.dmoz.org/>`_ ou `Yahoo <http://www.yahoo.fr>`_.
-L'idée est de permettre d'enrichir le tweet avec des documents que l'on sait similaires
+Pour nous faciliter la tâche, nous allons augmenter notre base
+de connaissances issue du Web à l'aide de ressources facilement exploitables telles que 
+Wikipedia à travers `dbpedia <http://dbpedia.org/About>`_ ou les sites  
+catégorisées par exemple `dmoz <http://www.dmoz.org/>`_ ou `Yahoo <http://www.yahoo.fr>`_.
+L'idée est de permettre d'enrichir le tweet avec des documents considérés similaires
 à l'aide d'une recherche full-text [5].
 
 Bases
 |                        |                           |          |          |                 |
 +========================+===========================+==========+==========+=================+
 | Tuning et maintenance  |   oui                     |          |          |                 |
-| documenté              |                           |          |          |                 |
+| documentés             |                           |          |          |                 |
 |                        |                           |          |          |                 |
 +------------------------+---------------------------+----------+----------+-----------------+
 | Schema-less            |                           |    oui   |   oui    |       oui       |
 |                        |                           |          |          |                 |
 +------------------------+---------------------------+----------+----------+-----------------+
 | Nouvelles connexions   |                           |    oui   |   oui    |                 |
-| facile à créer         |                           |          |          |                 |
+| faciles à créer        |                           |          |          |                 |
 +------------------------+---------------------------+----------+----------+-----------------+
 | ACID                   |   oui                     |    oui   |   oui    | au niveau       |
 |                        |                           |          |          | document        |
 |                        |                           |          |          |                 |
 +------------------------+---------------------------+----------+----------+-----------------+
 
-Les données que nous allons devoir recueillir sont de natures différentes, elles 
+Les données que nous allons recueillir sont d'une part de natures différentes, elles 
 nécessiteront un grand nombre de tables et de connexions, d'autre part en tant que
-projet de recherche il est agréable de savoir que l'ajout d'attribut et de nouvelle
-connexion est facile. Les base neo4j et orientdb sont à privilegier.
+projet de recherche il est agréable de savoir que l'ajout d'attributs et de nouvelles
+connexions est facile. Les base neo4j et orientdb sont à privilégier.
 
 Système intelligent
 -------------------
 
-Notre besoin est de regrouper par catégorie les articles et de donner une note aux
-tweet entrant d'un utilisateur. C'est deux problèmes distincts mais qui peuvent se 
+Il s'agit de regrouper par catégorie les articles et de donner une note aux
+tweets entrant d'un utilisateur. Ce sont deux problèmes distincts mais qui peuvent se 
 recouper dans le cadre de la mise en place d'un système apprenant. 
 
-Categorisation
+Catégorisation
 ^^^^^^^^^^^^^^
 
 Il existe différentes méthodes pour faire de la catégorisation.
 
 On peut utiliser des informations sémantiques présentant des sites par regroupement
 thématique. Par exemple un blog qui a un lien depuis bitbucket a de
-forte chance d'être un blog technique. De plus, un compte twitter qui est lié depuis un blog, lui même
-lié depuis bitbucket a de forte chance d'avoir un contenu technique. De
-cette façon nous pouvons construire un système qui permet de déterminer une
+fortes chances d'être un blog technique. De plus, un compte twitter qui est lié depuis un blog, qui est 
+lié depuis bitbucket a de forte chance d'avoir un contenu technique. Conclusion,
+ nous pouvons construire un système qui permet de déterminer une
 ou des catégories pour chaque site en implémentant un algorithme logique ou en 
-utilisant une machine apprenante supervisée.
+utilisant une machine apprenante.
 
 Une machine apprenante supervisée est un algorithme apprenant qui prend en entrée
 un document et des catégories. Elle associe les documents aux catégories et 
 Le défaut des deux méthodes précédentes et qu'il est difficile de comprendre 
 pourquoi un résultat a été donné.
 
-Couplés à la méthode décrite dans [5] en utilisant [6] il est possible d'implémenter 
-un algorithme de type PageRank [7] qui génère des catégories comme réponse. Cette algorithme
-à le bénéfice de pouvoir être expliquer.
+Couplé à la méthode décrite dans [5] en utilisant [6] il est possible d'implémenter 
+un algorithme de type PageRank [7] qui classent les catégories liés à un tweet de façon
+pertinente pour l'utilisateur.
 
 Mur personnalisé
 ^^^^^^^^^^^^^^^^
 
-L'implémentation du mur personnalisé peut se faire à l'aide des mêmes méthodes que celle
-décrites précédemment. 
+L'implémentation du mur personnalisé peut se faire à l'aide des mêmes méthodes que celles
+décrites précédemment. Je me suis appliqué à comprendre le fonctionnement 
+de la machine apprenante qui résoudra ce problème. 
 
-Le point qui a retenu mon attention est celui de l'implémentation
-de la machine apprenante qui résoudra ce problème. Un très grand nombre de données
-peuvent être soumis à l'algorithme rendant son calcul non praticable, c'est la 
-malédiction dimensionnelle. L'optimisation envisagé est la génération d'un graphe 
-de catégories pour l'ensemble des documents présent dans la base à l'aide du résultat
+Un très grand nombre de données
+peuvent être soumises à l'algorithme rendant son calcul non praticable, c'est la 
+malédiction dimensionnelle. L'optimisation envisagée est la génération d'un graphe 
+de catégories pour l'ensemble des documents présents dans la base à l'aide du résultat
 de la catégorisation. Un document pour cette machine apprenante est le vecteur des
-contributions de chaque catégories à un tweet. On peut réduire la dimension de l'espace
-de projection en fonction des ressources.
+contributions de chaque catégories à un tweet. 
 
 Bilan
 -----
 
-Ce travail de recherche et développement a été très enrichissant pour moi. J'ai 
-mis-à-jour différentes méthodes et idées d'implémentations pour Rook. La recherche
-est un travail où il faut de la rigueur et ce projet supplémentaire m'a permis
-d'affiner mes techniques de travail. Par exemple, il est important d'avoir un bon
-support pour communiquer sur le projet rapidement. Le wiki et IRC ont beaucoup permis
-de communiquer sur ce projet. Un autre outils important est Google Notebook qui m'a
-permis d'organiser les informations et les idées de manière efficace.
+Ce travail de recherche et développement a été enrichissant. Il m'a permis
+de mettre au point différentes méthodes et idées de fonctions pour Rook.
+La recherche nécissite de la rigueur et ce projet
+supplémentaire m'a permis d'affiner mes techniques.