Skip to content
Snippets Groups Projects
Commit 2c9b338d authored by Hudelot's avatar Hudelot
Browse files

Update twitter

parent d07ab223
No related branches found
No related tags found
No related merge requests found
......@@ -142,6 +142,10 @@ En prenant en compte ce petit cahier des charges, ajouter les modules `tweet_col
Il s'agit ici, étant donnés ces 3 modules, d'identifier les principaux objets nécessaire pour la mise en place de votre collecte et de réfléchir à l'orchestration des différentes méthodes de collecte mais pas d'implémenter cela, ce qui est l'objet de la prochaine fonctionnalité (**Fonctionnalité 3** : Collecter des tweets relatifs à une election).
Dans l'établissement de votre stratégie, pour pourrez prendre en compte
Discutez en binôme ou en groupe de cette fonctionnalité, schématiser, spécifier et comme précédemment, prenez une photo de ce travail de conception et <span style='color:blue'> déposer ce travail dans le `WorkingDocs`de votre dépôt git. N'oubliez pas de faire un `commit` et de mettre à jour votre dépôt distant.</span>
......
......@@ -33,7 +33,7 @@ def get_candidate_queries(num_candidate, file_path):
```
N'oubliez d'ajouter des tests unitaires à votre projet avec pytest.
**N'oubliez d'ajouter des tests unitaires à votre projet avec pytest.**
## Etape 2 : Collecter les tweets via l'API `Search`
......
......@@ -103,7 +103,7 @@ Nous avons fini ici la fonctionnalité 1. Avant de passer à la fonctionnalité
+ <span style='color:blue'>Faire un commit</span>
+ <span style='color:blue'>Pousser (Push) votre code vers votre dépôt distant sur GitLab.</span>
Nous pouvons maintenant passer à la [**Fonctionnalité 2** : Collecter des tweets](./S1_twittercollect.md) pour la collecte des données en elles-mêmes.
## Un peu de prise de recul
......@@ -115,3 +115,7 @@ Plus globalement, que sommes-nous en train de faire ? Certaines [actualités ré
Prenez donc le temps de lire rapidement les [règles et les politiques](https://help.twitter.com/fr/rules-and-policies/twitter-api) d'accès aux données de Twitter.
Nous pouvons maintenant passer à la [**Fonctionnalité 2** : Collecter des tweets](./S1_twittercollect.md) pour la collecte des données en elles-mêmes.
# Fonctionnalité 4 : Stocker les tweets
L'objectif de cette fonctionnalité est double.
+ Il s'agit d'une part de pouvoir stocker les tweets collectés sur disque. Nous nous contenterons pour cela d'une **écriture sur disque** des fichiers `json` qui sont renvoyées par notre système de collecte.
+ Il s'agit ensuite de choisir une représentation des données pour pouvoir manipuler facilement ces différents fichiers et ainsi faciliter les phases de pré-traitement et d'analyse. Nous utiliserons pour cela la biblithèque [`pandas`](https://pandas.pydata.org/) et son concept de [`dataframe`](http://pandas.pydata.org/pandas-docs/stable/dsintro.html#dataframe) qui est très utilisée en analyse de données. C'est une des bibliothèques principales de l'écosystème data de python.
Nous allons ici encore procéder par étapes.
## Etape 1 : Stocker les tweets collectés sur disque.
Il s'agit ici d'écrire dans le module de collecte `tweet_collection` une fonction `store_tweets(tweets,filename):` permettant de sauvegarder sur disque les tweets collectés.
Cela peut sembler être une opération facile mais qui n'est pas automatique car elle néessite une étape de [sérialisation](https://fr.wikipedia.org/wiki/S%C3%A9rialisation) dans un fichier ce que l'on peut faire avec la méthode `json.dump()` du module `json` de la bibiothèque standard python.
Pour vous aider vous pouvez regarder cette documentation :
+ [https://realpython.com/python-json/](https://realpython.com/python-json/)
+ [http://sdz.tdct.org/sdz/serialisez-vos-objets-au-format-json.html](http://sdz.tdct.org/sdz/serialisez-vos-objets-au-format-json.html)
En plus d'écrire le programme de sérialisation des tweets collectés dans un fichier, vous pouvez aussi réfléchir à l'information que vous voulez réellement stocker et écrire dans votre fichier.
+ En effet, rappelez-vous ! Il y a [beaucoup d'informations](https://gist.github.com/dev-techmoe/ef676cdd03ac47ac503e856282077bf2) dans l'objet qui est renvoyé par tweepy et il n'est peut être pas utile pour ce projet de tout stocker. Il faut à minima sauvegarder le texte du tweet, sa date, les hashtags, son id mais d'autres informations peuvent être très utiles.
+ De plus, il vous faut un mécanisme pour pouvoir savoir à quel candidat ou personnalité le tweet ou l'ensemble des tweets fait référence. Vous pouvez par exemple mettre cela en oeuvre via un mécanisme de structuration et de nommage de vos fichiers *intelligents*
## Etape 2 : Création d'un dataframe `pandas` avec l'information utile.
Il s'agit maintenant d'utiliser pandas pour créer un `dataframe` contenant l'information que nous allons utiliser pour l'analyse en elle-même.
Pour cela, il faut d'abord que vous installiez [`pandas`](https://pandas.pydata.org/) soit en ligne de commande en utilisant la commande `pip3 install pandas` soit directement depuis PyCharmEdu.
Si vous ne connaissez pas cette bibliothèque, prenez les 15 min nécessaires pour faire ce [très court tutorial](https://pandas.pydata.org/pandas-docs/stable/10min.html)
Ecrivez maintenant une fonction qui prend en entrée un objet de type `Status`, le type de retour des données renvoyées par `tweepy` et qui construit à partir de cet objet un `dataframe` pandas avec les informations que vous saouhaitez garder.
\ No newline at end of file
......@@ -5,7 +5,7 @@ L'**objectif** de ce mini-projet est de developper, de manière très incrément
![Prédictions Citoyennes](./Images/graphlepenmacron.jpg)
Au travers de ce projet, vous decouvriez plusieurs principes du mouvement dit du [*Software Craftmanship*](https://www.octo.com/fr/publications/20-culture-code).
Au travers de ce projet, vous decouvrirez l'écosystème python pour travailler avec Twitter et faire de l'analyse de données textuelles mais aussi plusieurs principes du mouvement dit du [*Software Craftmanship*](https://www.octo.com/fr/publications/20-culture-code).
## Organisation du mini-projet
......@@ -34,8 +34,8 @@ Ce concept de MVP a été introduit par Eric Ries, l'auteur de [The Lean Startup
+ [**Fonctionnalité 4** : Stocker les tweets.](./S1_twitterstorage.md)
+ **Sprint 2** : **Représentation et analyse des tweets**
+ [**Fonctionnalité 5** : Pré-traiter l'ensemble des tweets pour ne garder que l'information utile.](./S2_Pretraitement.md)
+ [**Fonctionnalité 6** : Représentation des tweets.](./S2_TweetRepresentation.md)
+ [**Fonctionnalité 5** : Pré-traiter le texte des tweets pour ne garder que l'information utile.](./S2_Pretraitement.md)
+ [**Fonctionnalité 6** : Représentation du contenu textuel des tweets.](./S2_TweetRepresentation.md)
+ [**Fonctionnalité 7** : Associer un tweet à un candidat.](./S2_TweetAnalysis.md)
+ **Sprint 3** : **Ajout de l'analyse de l'opinion avec [Textblob](https://textblob.readthedocs.io/en/dev/)**
......@@ -48,16 +48,21 @@ Ce concept de MVP a été introduit par Eric Ries, l'auteur de [The Lean Startup
### Objectif 2 : Visualisation plus avancée des résultats de l'analyse (Amélioration du MVP) (JOUR 3)
**<span style='color:red'>(A venir)</span>**
+ **Sprint 5** : **Une application de visualisation de l'analyse avec [Dash](https://plot.ly/)**
+ [**Fonctionnalité 11** : Votre première application avec Dash](./S5_affichagegrille.md)
+ [**Fonctionnalité 12** : L'application Tweet Predictor](./S5_tweetpredictor.md)
+ **Sprint 6** : **Representing the word usages with [WordCloud](https://github.com/amueller/word_cloud)!**
+ **Sprint 6** : **Quel vocabulaire avec [WordCloud](https://github.com/amueller/word_cloud)!**
+ [**Fonctionnalité 13** : Prise en main de WordCloud](./S6_wordcloud.md)
+ [**Fonctionnalité 14** : WordCloud sur votre ensemble de twwetss](./2048_S6_configgrille.md)
### Objectif 3 : Ajout de l'analyse des sentiments (JOUR 4)
( A venir)
### Objectif 3 : Ajout de l'analyse des sentiments par apprentissage (JOUR 4)
**<span style='color:red'>(A venir)</span>**
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment