Vous êtes sur la page 1sur 55

INSEA

Première année
Filière: Biostatistique Démographie & Big Data

Systèmes d'information des données démographiques


et sources digitales

Prof. Chaimae DRIOUI

A.U: 2022-2023
Collecte bibliographique et analyse bibliométrique

❑ Introduction

❑ Partie 1: Collecte et gestion bibliographique

❑ Partie 2: Traitement des bases de données et analyse textuelle (Text

Mining) pour une revue systématique de littérature

2
Introduction

❑ « L’exercice académique d’un travail de recherche impose chercheur de s’inscrire dans le prolongement des

travaux antérieurs, d’en dégager les lignes de force, d’en résumer les questions essentielles et identifier

une ou plusieurs questions de recherche ».

Une étude ciblée, approfondie et critique des travaux antérieurs réalisés sur un thème particulier.

3
Introduction
❑ Analyse de sujet

Cerner le sujet : La méthode “QQQOCP” pour ne pas passer à côté des

questions de base…

✓ Qui ? = les personnes ou groupes de personnes visés par le

sujet

✓ Quoi ? = Quel est précisément l’objet de votre étude?

✓ Quand ? = Quelle est la période du sujet, et sa durée ?

✓ Où ? = Quelle est la zone géographique que vous avez choisi

de traiter ?

✓ Comment ? = Votre sujet implique t-il d’évaluer des moyens

mis en œuvre, éventuellement sur un terrain ?


Source: Polet, 2011, p. 5
✓ Pourquoi ? = les causes et les conséquences ? 4
Introduction
❑ Processus de la recherche → un processus itératif

Lecture
Recherche Synthèse de
approfondie
bibliographique littérature
[approche critique]

• Identifier les différents


• Établir une liste des mots • Raffinement de la liste aspects
clés des mots clés
• Décliner des questions
• Collecte bibliographique • Lecture approfondie des secondaires soulevées par
articles sélectionnés la question centrale
• Sélection des articles
selon des critères • Élaboration des fiches de • Repérer les différents
d’inclusion/d’exclusion lecture points de vue, les champs
de recherche.
L’interdisciplinarité est
toujours intéressante.5
Partie 1: Collecte et gestion bibliographique

6
Etapes de la collecte bibliographique

Précision des mots-clés (lecture de dizaines d’articles)

Moteurs de recherche: Scopus, PubMed, Web of science, Google Scholar, Microsoft Acedemic, Crossref…

Importation et fusion des bases de données


(possibilité de le faire sur le logiciel R)

Traitement de la base de données selon des critères inclusion/exclusion

Nombre final d’article/ gestion de la bibliographie


(Zotero, Mandely, …)

État de l’art des articles Des analyses textuelles (Text Mining)


sélectionnés

État de l’art des articles


sélectionnés 7
Précision des mots clés

Termes Termes Termes associés


Sujet de
génériques (plus spécifiques (termes de sens
recherche
larges) (plus précis) voisin)

Proposition d’approche Devops Intégration continue Metamodel


micro services appliquée à Microservices Déploiement continu Cluster
l’internet des objets à base IoT Cloud Ecosystème
Exemples

de Devops Edge Objects virtuels


Genre et fécondité au Genre Domination masculine Prise de décision
Maroc fécondité Empowerment des femmes Éducation
Nombre d’enfants Activité économique
Préférences reproductives Nombre idéal d’enfants
Contrôle de naissances Écart fécondité
…. réalisée-fécondité
idéale
8
Précision des mots clés

9
Précision des mots clés

Elaborer des équations de recherche à l’aide de deux principaux opérateurs:


❖ les opérateurs booléens

• ET (AND): pour les termes complémentaires= restreindre la recherche

• OU (OR): pour les termes équivalents= élargir la recherche

• SAUF (NOT): exclusion= restreindre la recherche

10
Précision des mots clés

❖ les opérateurs syntaxiques (ou linguistiques):

• « Guillemet » : recherche d’expression située entre les


guillemets
• *Troncature* : recherche des mots commençant ou se
terminant par celui comprenant l’étoile. Ex: hyperten*
comprend le mot hypertension
• (Parenthèse) : assemble des opérateurs booléens entre
eux.

11
Recherche simple/ Recherche avancée

• La recherche simple: interroge la base avec une équation de recherche à l’aide des opérateurs booléens et linguistiques

• La recherche avancée; un système de filtre et de catégorie permet d’affiner la recherche. Les champs d’indexation
choisis (auteur, revue, année…) apparaîtront dans le champ de recherche,

Après avoir obtenu les résultats de la recherche:

➢ Pas assez de références → élargir le champ de la recherche ou les mots clés

➢ Trop de références → restreindre la recherche grâce aux mots clés, aux opérateurs et aux catégories

12
Collecte des articles scientifiques

13
Collecte des articles scientifiques
❖ Google Scholar: https://scholar.google.com/

14
Collecte des articles scientifiques
❖ Science Direct: ScienceDirect.com | Science, health and medical journals, full text articles and books.

15
Collecte des articles scientifiques
❖ PubMed: https://pubmed.ncbi.nlm.nih.gov/advanced/

16
Collecte des articles scientifiques
❖ JSTOR: JSTOR: Advanced Search

17
Collecte des articles scientifiques
❖ L’application Publish or Perish (Harzing, A.W. , 2007)
➢ Lien de téléchargement: https://fr.freedownloadmanager.org/Windows-PC/Harzing-s-Publish-or-Perish-GRATUIT.html

18
Collecte des articles scientifiques

19
Collecte des articles scientifiques
Copy Results → Results for Excel with Header → Coller sur un fichier Excel

20
Collecte des articles scientifiques

21
Collecte des articles scientifiques
Utilisant un code sur R pour les moteurs de recherches dont API est accessible/gratuit

• Base de données PubMed

À travers le package « RISmed », il est possible d’importer les articles de la base de données PubMed selon les mots-clés
entrés par l’utilisateur.

install.packages (RISmed)
library (RISmed)

22
Collecte des articles scientifiques
• Code R pour collecter les articles de PubMed :

query_term <- "mots-clés " # identifier les mots-clés


start <- 2000 # Limiter les articles selon leur date de publication
end <- 2021
res <- EUtilsSummary(query_term, type='esearch', db="pubmed", datetype=‘pdat', mindate=start, maxdate=end,
retmax=10000)

QueryCount(res) # voir le nombre des articles trouvés

data <- EUtilsGet(res) # stocker les articles dans « data »

pubmed_data <- tibble ('id'=ArticleId(data), # convertir data au format tableau en ne retenant que certaines
'Title'=ArticleTitle(data), variables
'Abstract'=AbstractText(data),
'Year'=YearPubmed(data),
'country'=Country(data),
'Journal'=Title(data),
'Language'=Language(data))
23
Gestion Bibliographique

24
Gestion bibliographique: Zotero
Installer Zotero: Zotero | Downloads

25
Gestion bibliographique: Zotero

26
Gestion bibliographique: Zotero

27
Gestion bibliographique: Zotero

28
Gestion bibliographique: Zotero
Citer les références bibliographiques dans un article ou un rapport de thèse

29
Gestion bibliographique: Zotero
Citer les références bibliographiques sur un article ou un rapport de thèse

30
Gestion bibliographique: Zotero
Citer les références bibliographiques sur un article ou un rapport de thèse

31
Gestion bibliographique: Zotero
Citer les références bibliographiques sur un article ou un rapport de thèse

32
Partie 2: Traitement des bases de données et analyse textuelle
Étapes de la collecte bibliographique:
4. Traitement de la base de données selon des critères inclusion/exclusion
Exemple:

Moteurs de recherche: PubMed,


Exclusion des articles :
Scopus, Google Scholar, Microsoft
• Transgenre( N= 25 )
Academic: N = 2606
• Fécondité non humaine
articles dupliqués: (egg, cow, animal, soil,
N= 1412 rabbit) (N= 80)
• Source non connue
N= 1194 (N=232)
• Non accessibles (N=74)
• Langue (ni française ni
anglaise) (N=20)
• Exclusion après la lecture
du résumé ( N= 699 )

Nombre total
des articles
N=64
34
Étapes de la collecte bibliographique:
3. Importation et fusion des bases de données collectées

• Pour fusionner ces bases de données, il faut que toutes les bases contiennent les mêmes variables et de
même type. Le code R permettant la fusion:
BDFus <- bind_rows (Crossref, GoogleScholar, Microsoft_Academic, PubMed, Scopus )
35
Étapes de la collecte bibliographique:
4. Traitement de la base de données selon des critères inclusion/exclusion

# Supprimer les articles dupliqués (s’ils ont le même titre / même résumé/ même identifiant (si disponible))
BD_Dupl <- BDFus %>%
mutate(Title=Title %>% str_to_lower(),
Year= as.numeric(Year)) %>%
distinct(Title, .keep_all = TRUE) %>%
distinct(Abstract, .keep_all = TRUE) %>%
distinct(id, .keep_all = TRUE)) # si on dispose de l’identifiant (le cas dans l’importation des articles de PubMed
à travers l’API)

# Supprimer les articles dont la date de publication et la source ne sont pas mentionnées
BD_Year <-BD_Dupl[!is.na(BD_Dupl$Year),]

BD_source <-BD_Year[!is.na(BD_Year$Source),]

• Pour pouvoir exclure les articles qui sont hors sujet (comme par exemple la fécondité non humaine), on utilise le
nuage de mots (Word Cloud) faisant partie de l’analyse textuelle (Text mining)
• Cette étape repose sur la variable « Abstract » ou « Title ».
36
Étapes de la collecte bibliographique:
4. Traitement de la base de données selon des critères inclusion/exclusion

# On peut travailler avec le titre comme le résumé Tokenization


TitleCorpus <- corpus(BD_source$Title, docvars= BD_source)

toks <- tokens (TitleCorpus)

toks2 <- tokens_remove (toks, pattern = stopwords('en'),padding=TRUE)

toks3 <- toks2 %>%


tokens(remove_punct = TRUE) %>%
dfm(remove_punct = TRUE, remove = stopwords("english"), stem = TRUE)

# Tracer le nuage de mots


textplot_wordcloud(toks3, max_words = 400, random_order = FALSE,
min_size =1, shape = 'pentagon', max_size = 7,
color = RColorBrewer::brewer.pal(8,"Dark2"))

37
Étapes de la collecte bibliographique:
4. Traitement de la base de données selon des critères inclusion/exclusion

38
Étapes de la collecte bibliographique:
4. Traitement de la base de données selon des critères inclusion/exclusion

# On élimine les articles contenant les mots hors sujet

BD_words <- BD_source %>%


filter(!str_detect(tolower(Title), pattern =
"transgend*|soil|egg|tree|egg|land|earth|cancer|animal|cow|hiv|coil|oil|mouse|rats|floods|semen|yield|agricult
*|homosex*|plant"))

• On peut avoir par exemple « homosex » ou « homosexuel ». Au lieu d’écrire ces deux mots, on peut mettre
« homosex* » (la partie commune suivie de * )

39
Étapes de la collecte bibliographique:
4. Traitement de la base de données selon des critères inclusion/exclusion

TitleCorpus <- corpus(BD_words$Title, docvars= BD_words)


toks <- tokens (TitleCorpus)

toks2 <- tokens_remove(toks, pattern =


stopwords('en'),padding=TRUE)

toks3 <- toks2 %>%


tokens(remove_punct = TRUE) %>%
tokens_remove(c(stopwords('english'),'copyright’, # On demande ici à ce que ces mots ne figurent pas dans le
'author*', 'group', 'total’, nuage de mots afin de ne pas cacher les concepts clés lié au sujet
'patient', 'suggest’, 'rais*','provinc','matter*','statist*','comparison','evalu*',
'expect*'), min_nchar =1L, padding = TRUE) %>%
dfm (remove_punct = TRUE, remove = stopwords("english"),
stem = TRUE)
# Trancer le nuage de mots
textplot_wordcloud(toks3, max_words = 400, random_order = FALSE,
min_size =1, shape = 'pentagon', max_size = 7,
color = RColorBrewer::brewer.pal(8,"Dark2"))
40
Étapes de la collecte bibliographique:
4. Traitement de la base de données selon des critères inclusion/exclusion

• On reprend cette étape lorsque des mots hors sujet figurent encore dans le nuage de mots.
41
Étapes de la collecte bibliographique:
4. Traitement de la base de données selon des critères inclusion/exclusion
• On peut augmenter la taille minimale des mots à figurer pour ressortir ceux fréquemment utilisés:

textplot_wordcloud (toks3, max_words = 400, random_order = FALSE,


min_size =4, shape = 'pentagon', max_size = 7,
color = RColorBrewer::brewer.pal(8,"Dark2"))

42
Étapes de la collecte bibliographique:
4. Traitement de la base de données selon des critères inclusion/exclusion

• Exporter la dernière base de données traitée après l'exclusion de tous les mots hors-sujet

write_xlsx (BD_words,"C:\\Users\\chaim\\OneDrive - Institut National de Statistique et


d'Economie Appliquee\\Bureau\\BD_words.xlsx")

• À la dernière étape, vient l’exclusion des articles inaccessibles ou qui semblent hors sujet après la lecture des résumés.

• Télécharger les articles définitivement retenus et les importer au logiciel Zotero (par exemple) pour la gestion
bibliographique

43
Étapes de la collecte bibliographique:
4. Traitement de la base de données selon des critères inclusion/exclusion

Une fois finir ces étapes ok c bon on a pu exculre tout les articles automatiquement possible,
Exporter ensuite la dernière base de données pour voir s’il y aura d’autres articles à exculre selon le
résumé et leur accessbilité
Une fois avoir une dernière base de données : soit on passe à la lecture pour construite un état d’art
(revue de littérature) soit on fait une analyse textuelle avant de passer à la lecture.
Scopus (API)
Les opérateurs booléns; les inconvenients de l’application/ code pubMed

44
Analyse textuelle pour une revue systématique de littérature

• La revue systématique permet d’avoir une idée globale sur les articles collectés, parmi les questions de recherche que

l’analyse systématique peut répondre:

1. Comment évoluent les études sur une thématique au fil du temps ?

2. Quels sujets spécifiques ont été les plus étudiés sur cette thématique ?

3. Comment ces sujets ont-ils évolué en importance au fil du temps ?

4. Quels sont les pays les plus étudiés dans cette thématique ?

45
Analyse textuelle pour une revue systématique de littérature
• Méthode

Evolution des
Bases de publications
données Sujets abordés
(Structurel topic
modeling)
Nuage de mots
Résumés/Titres (word cloud)
liés à une Pré-traitement
thématique des données
précise textuelles Analyse de
Collecter les Analyse réseaux
Traitement des résumés
résumés/titres qui cartographique (Network
(enlever les mots de
abordent la thématique à
liaisons, les chiffres, les (Mapping analysis)
travers les différents analysis)
ponctuations…)
moteurs de recherche
46
Analyse textuelle pour une revue systématique de littérature
• Evolution des publications dans le temps
Exemple:

47
Analyse textuelle pour une revue systématique de littérature
• Evolution des publications dans le temps
Code sur R:

# Nombre des articles par année

BD_words <- BD_words %>%


mutate(numb_art_line=1)

BD_words <- BD_words %>%


group_by(Year)%>%
mutate(numb=sum(numb_art_line))

48
Analyse textuelle pour une revue systématique de littérature
• Evolution des publications dans le temps
Code sur R:

# Tracer la figure

ggplot(BD_words, aes(x = Year, y=nimb_art_line))+ggtitle("Les publications par année")+


geom_bar(stat = "identity", position="stack", width=.5, fill="tomato1")+
xlab("Année")+ylab("Nombre de publications")+
theme_bw()+
theme(axis.text.x = element_text(color = "black", size = 9,
angle = 90))+
theme(axis.text.y = element_text(color = "black", size=9))+
theme(axis.title = element_text(colour = "black", face = "bold", size=10))+
theme(panel.grid = element_blank())+
scale_fill_discrete(name="")+
theme(plot.title = element_text(colour = "black", size=9, lineheight = 0.5),
legend.title.align=NULL) +
scale_x_continuous(breaks = seq(1970, 2020, by=2))

49
Analyse textuelle pour une revue systématique de littérature
• Nuage de mots (Word Cloud)
Exemple:

• Voir Diapo 15 pour le code


50
Analyse textuelle pour une revue systématique de littérature
• Sujets abordés dans une thématique donnée (Topic Modeling)
Exemple:

51
Analyse textuelle pour une revue systématique de littérature
• Nombre optimal des sujets à retenir
Exemple:

52
Analyse textuelle pour une revue systématique de littérature
• Sujets abordés dans une thématique donnée (Topic Modeling)
Code sur R:
out <- quanteda::convert(toks3, to = "stm")

model <- stm(out$documents, out$vocab, K = 20, max.em.its = 150, data = out$meta, init.type = "Spectral", prevalence
=~ Year)

plot1 <- plot(model, type="summary", n=5, main="",


topic.names = c("IN VITRO FERTILIZATION: ", "HEALTH DEVELOPMENT: ", "SOCIO ECONOMIC SUPPORT: ",
"CONTRACEPTION AND MARRIAGE: ", "FAMILY PLANNING POLICY: ", "INFERTILITY OF COUPLES: ",
"EDUCATION: ", "DEMOGRAPHY : ", "DIAGNOSIS AND TREATMENT: ", "TRADITIONALIST BEHAVIOR:
",
"RISK OF IUD: ", "MISCARRIAGE: ", "ACCESS TO HEALTH CARE: ","GROWTH AND DEVELOPMENT: ",
"MATERNAL/INFANT MORTALITY: ", "BIOLOGICAL FACTORS: ", "PSYCHOLOGY: ", "STERILITY: ",
"ABORTION: ", "CULTURE AND ENVIRONMENT: "), text.cex=1, xlab="")

mtext("Expected Topic Proportion", side=1, line=3, cex=1.2) # adds custom Y-axis label
plot1
plot2 <- plot(model, n= 5, text.cex=1)
plot2
53
Analyse textuelle pour une revue systématique de littérature
• Nombre optimal des sujets à retenir
Code sur R:

K<-c(5,10,15,20,25)

kresult <- searchK(out$documents, out$vocab, K, prevalence=~Year, data=out$meta)

plot(kresult)

54
Packages à installer sur R

• install.packages (Nom du package)


• library (Nom du package)

library(RISmed) # package to import data from Pubmed library(dplyr)


library(digest) library(ggplot2)
library(glue) library(quanteda) # Text mimning
library(tidyselect) library(stm) # Structural topic modeling package
library(tidyverse) library(igraph) # Network analysis ans visualization package
library(maps) library(wordcloud) # Nuage de mots
library(rvest) library(wordcloud2)
library(tm) library(writexl)
library(tidytext)
library(lubridate)
library(hrbrthemes)

55

Vous aimerez peut-être aussi