1 Introduction

Ceci est l’annexe à l’article Analyse thématique comparative des discours politiques et de leur diffusion dans le Wikipédia francophone, accepté aux JADT 2024.

On se propose de contextualiser un lexique de termes sur un ensemble de communiqués de presse des partis RN, FI. Plus précisément, étant donné un corpus de textes C et un lexique L de taille réduite caractéristique d’une thématique ou d’un type de discours, nous recherchons les associations les plus significatives entre les termes constitutifs de ce lexique sur la base leurs co-occurrences directes dans le corpus C ainsi que sur celle de différentes représentations vectorielles de ces termes:

  • Plongements lexicaux calculés sur le contenu textuel du corpus C sans tenir compte du découpage en documents
  • Modélisation probabiliste (LDA) des co-occurrences des termes dans les documents de C sans tenir compte de l’ordre des mots dans les communiqués.

2 Définition du lexique d’étude

2.1 Sélection des termes d’étude

Le lexique est défini dans la table de lexique de la base de données. Son contenu est le suivant:

## [1] TRUE
##   [1] "agriculture"       "antisémitisme"     "artisan"          
##   [4] "artisanat"         "autonomie"         "autoritaire"      
##   [7] "autoritarisme"     "autorité"          "banlieue"         
##  [10] "catholicisme"      "catholique"        "chauvin"          
##  [13] "chauvinisme"       "chrétien"          "chrétienne"       
##  [16] "chrétienté"        "christianisme"     "civilisation"     
##  [19] "civique"           "communautaire"     "communautarisme"  
##  [22] "communautariste"   "communauté"        "conspiration"     
##  [25] "conspirationnisme" "conspirationniste" "défense"          
##  [28] "délinquance"       "délinquant"        "démagogie"        
##  [31] "démocratie"        "démocratique"      "drapeau"          
##  [34] "droite"            "écologie"          "économie"         
##  [37] "élite"             "élites"            "énergie"          
##  [40] "ensauvagement"     "etat"              "etat-nation"      
##  [43] "ethnique"          "étranger"          "européenne"       
##  [46] "extérieur"         "extrême"           "extrême-droite"   
##  [49] "extrême-gauche"    "extrêmes"          "extrémisme"       
##  [52] "extrémiste"        "fascisme"          "féminisme"        
##  [55] "français"          "française"         "françaises"       
##  [58] "france"            "francophone"       "frontière"        
##  [61] "frontières"        "gauche"            "gay"              
##  [64] "genre"             "héritage"          "hijab"            
##  [67] "histoire"          "identitaire"       "identité"         
##  [70] "idéologie"         "immigration"       "impérialisme"     
##  [73] "indépendance"      "individualisme"    "individualiste"   
##  [76] "insécurité"        "intérieur"         "international"    
##  [79] "islam"             "islamisme"         "islamiste"        
##  [82] "islamophobie"      "isolationnisme"    "laïcité"          
##  [85] "liberté"           "local"             "locale"           
##  [88] "locales"           "localisme"         "locaux"           
##  [91] "migratoire"        "minorités"         "nation"           
##  [94] "nativisme"         "néonationalisme"   "nucléaire"        
##  [97] "patrie"            "patriote"          "paysan"           
## [100] "pénalisation"      "peuple"            "polarisation"     
## [103] "populisme"         "populiste"         "protection"       
## [106] "puissance"         "québec"            "québécois"        
## [109] "québécoise"        "québécoises"       "racisme"          
## [112] "raciste"           "radical"           "radicalisation"   
## [115] "régionalisme"      "repli"             "rural"            
## [118] "ruralité"          "sécularisme"       "sécuritaire"      
## [121] "sécurité"          "séparatisme"       "souveraineté"     
## [124] "souverainisme"     "souverainiste"     "supranationalisme"
## [127] "tradition"         "union"             "unité"            
## [130] "valeur"            "xénophobe"         "xénophobie"       
## [133] "zone"

2.2 Constitution d’un lexique de mots vides

Sur une approche combinatoire où les articles sont considérés comme des sacs de mots, et où on ne cherche pas à caractériser le style mes les associations plus ou moins systématiques entre termes, les mots vides ont tendance à générer des cliques d’associations peu informatives et coûteuses en temps de calcul. On utilise la liste de mots vides pour le français du projet stopwords-iso, que l’on peut compléter avec des mots spécifiques au domaine considéré.

3 Extraction d’un contexte documentaire

3.1 Sélection d’un sous corpus

L’interrogation de la base de données se fait avec la fonction myD, qui a comme arguments:

  • bq: la requête booléenne de termes à rechercher.
  • éventuellement une date dd1 de fin de période et/ou une date dd2 de début de période.
  • l: le nombre maximal de pages à extraire (300 par défaut).
myD<-function(bq="ALL",dd1="2023-01-01",dd2="2007-01-01",l=300,tb="abstracts"){
    cnx<-mycnx()
    qwp=paste("select id as doc_id, title, date_last as date, content as text from ",tb,
              " where date_last <= '",dd1,"' and date_last >= '",dd2,"' limit ",l,sep='')
    if(bq!="ALL")
        qwp=paste("select id as doc_id, title, date_last as date, content as text from ",tb,
                  " where date_last <= '",dd1,"' and date_last >= '",dd2,
                  "' and to_tsvector('french', title || ' ' || content) @@ to_tsquery('french','",bq,
                  "') limit ",l,sep='')
    D=dbGetQuery(cnx,qwp)
    dbDisconnect(cnx)
    D$text=tolower(D$text)
    D$text=gsub("[,.:;\\(\\)\\[\\]\\'\\|]"," ",D$text,perl = TRUE)
    D$text=gsub(" +"," ",D$text,perl = TRUE)
    D
}

3.2 Requete Longue

“europe|nation|peuple|économie|sécurité”

3.3 Requete Courte

“europe|sécurité”

3.4 Corrélation des termes du lexique sur ce corpus

On peut rechercher le contexte de co-occurrence des termes du lexique sur ce corpus. On utilise un test de Kendall pour évaluer la significativité de ces co-occurrences.

Pour ce faire on utilise la fonction mycontext:

mycontext<-function(D,tx="",ty="",tz=""){
    testk=""
    if(tx!="" && ty!=""){
        t=cortest(D,tx,ty)
        testk=paste("\nKendall test: tau=",round(t$estimate,digits = 2),"p=",
                    round(t$p.value,digits = 4),sep =" ")
    }
    if(tx!="")D=D[grep(tx,D$text),]
    if(ty!="")D=D[grep(ty,D$text),]
    if(tz!="")D=D[grep(tz,D$text),]
    hist(D$date,breaks="months",freq=TRUE, main=paste("Termes :",tx,ty,tz,testk, sep=" "),
         xlab="Dates des pages")
    D
}

4 Représentation des termes du lexique selon leurs colocations (plongements lexicaux)

On calcule une nouvelle représentation vectorielle sur le seul contexte extrait. Cette représentation vise à prédire les collocations de mots sur l’ensemble du texte.

4.1 Calcul des plongements lexicaux

Pour calculer les plongements on utilise la fonction wempol:

wempol<-function(D,k=20,i=100,slw=c("http")){
    library(word2vec)
    set.seed(123456789)
    x=as.character(D$text)
    wem=word2vec(x = x, dim = k, iter = i, type = 'skip-gram', window = 10, lr=0.01, 
                 hs=TRUE, sample=0.001, min_count = 5, threads=10, stopwords=slw)
    wem
}

4.2 Visualisation du positionnement des termes du lexique

# Extraction de la liste des termes. Si doublons on procède à la somme des vecteur correspondants
my_grep=function(beta,w){
    n=colnames(beta)
    return(beta[,n==w])
    }
my_subgrep=function(beta,w){
    v=grep(w,colnames(beta),fixed = TRUE);
    if(length(v)==1) return(beta[,v])
    else return(apply(beta[,v],c(1),sum))
}

# Calcul de la corrélation
ldacortest<-function(beta,w1,w2){
    v1=my_subgrep(beta,w1)
    v2=my_subgrep(beta,w2)
    cor.test(v1,v2,method = "p")
}

# Recherche des paires de termes corrélés dans une liste
ldabicor=function(lm,terms,p=0.1){
    xt=list()
    terms=terms[terms%in%colnames(lm)]
    n=length(terms)
    for(i in 1:(n-1)){
        for(j in (i+1):n){
            x=ldacortest(lm,terms[i],terms[j])
            if(!(is.na(x$estimate))&&(x$p.value<p)) xt[paste(terms[i],terms[j])]=x$estimate
        }
    }
    vt=as.numeric(xt)
    names(vt)=names(xt)
    sort(vt,decreasing = TRUE)
}

et pour la visualisation:

termviz=function(beta,s){
    library(FactoMineR)
    C_red=beta[,colnames(beta)%in%s]
    PCA(C_red)
}

4.3 Colocations particulières

On peut ainsi lister les mots qu’il est plus probable de trouver à proximité d’un mot x et comment se positionnent les termes du lexique.

# Recherche des termes proches (plongements lexicaux)
wesim=function(wem,s){
    predict(wem, s, type = "nearest", top_n = 30)
}

5 Représentation multinomiale selon les occurrences dans les textes (Allocations Latentes de Dirichlet)

On cherche à générer des représentations vectorielles des mots qui permettent d’étudier leurs co-occurrences indirectes (utilisation de ces mots dans des contextes similaires). Pour cela on tient compte de leur fréquence d’apparition dans les textes. Il existe deux approches: factorielle et probabiliste. Nous suivons ici l’approche probabiliste.

5.1 Prétraitement des textes pour les représentations ensemblistes

On aborde l’étude des ensembles de termes fréquemment associés sur ce corpus. On ignore l’ordonnancement des mots dans un texte pour étudier leurs associations à l’échelle des documents.

Pour cela il est nécessaire de procéder au pre-traitement du texte. On retire les mots qui apparaissent dans la liste swl précédente et on élimine ceux de très basse fréquence. On pourrait aussi procéder à une lemmatization mais cela ralentit beaucoup le processus (d’autant plus que pour une lemmatization contextuelle il faut procéder à une analyse syntaxique qui tienne compte du contexte).

# pre traitements du texte
mypre<-function(D,swl,m=10,lemmatize=0){
    library(tm);
    library(stopwords)
    library(stringr)
    library(textstem)
  library(qdap)
    vtext=D$text
    dict_lemmas=c()
    if(lemmatize==1){
      library(textstem)
    library(hunspell)
    dict_lemmas=make_lemma_dictionary(DWP$text,engine = "hunspell",lang = "fr_FR")
    }
    ids=D$doc_id
    Cid=c()
    Ctxt=c()
    n=length(vtext)
    j=0
    for(i in 1:n){
        text= tolower(vtext[i])
        text=gsub("[^[:alnum:][:blank:]+?&/\\-]", " ", text)
        if(lemmatize==1){
          text = lemmatize_strings(text,dictionary = lemmes)
        }
        text= trimws(gsub(pattern = " +\\- +",replacement = "-",x =text))
        text= rm_stopwords(text,swl,separate = FALSE,strip=TRUE)
        text=paste(str_extract_all(text, '\\w{3,}')[[1]], collapse=' ')
        text=gsub(" . "," ",text)
        if(length(text>m)){
            j=j+1;
            Cid[j]=ids[i];
            Ctxt[j]=text;
        }
    }
    D=data.frame(doc_id=Cid,text=Ctxt)
}

5.2 Génération de la matrice documents - termes

La fonction mydtm génère la matrice de représentation des documents comme des ensembles de mots pondérés. Son appel nécessite:

  • un nom de variable pour conserver la matrice générée

  • un vecteur de textes pré-traités (après élimination des mots vides et éventuelle lématisation).

  • un vecteur contenant les identifiants des textes

  • optionnellement on peut lui préciser un seuil m de fréquence minimal pour les mots (5 par défaut)

mydtm<-function(vtext,ids,m=5){
    library(tm)
    D=data.frame(doc_id=ids,text=vtext)
    corpus <- Corpus(DataframeSource(D))
    minimumFrequency <- m
    DTM <- DocumentTermMatrix(corpus, control = list(bounds = list(global = c(minimumFrequency, Inf))))
    sel_idx <- slam::row_sums(DTM) > 0
    D <- D[sel_idx, ]
    DTM[sel_idx, ]
}

5.3 Estimation du nombre de dimensions

L’approche probabiliste est une approche générative. Elle consiste à rechercher k distributions de mots qui permettent d’expliquer les phénomènes de co-occurrence dans les textes. Ce processus suppose que l’écriture d’un texte induit un choix préalable de sujets ou thématiques et que ces thématiques induisent différentes probabilités d’apparition pour les mots.

Le modèle est calculé avec la fonction ldapol, les paramètres sont:

  1. le nom à donner au modèle que l’on va générer
  2. le nom de la matrice documents termes
  3. le nombre k de dimensions du modèle calculé
  4. un paramètre d’échantillonnage qui détermine le nombre de tirage aléatoires

Déterminer le nombre de dimensions du modèle est le point le plus délicat. Comme pour le méthodes de k-means (centres mobiles) il s’agit de déterminer a priori le nombre “thématiques” contenues dans les textes. On peut faire reposer ce choix sur différentes mesures de qualité du modèle obtenu. C’est ce que fait la fonction suivante. Attention le lancement de celle-ci peut être très long puisqu’elle procède au calcules d’un grand nombre de nombre de modèles pour les comparer.

Ici on choisit de prendre comme nombre de dimension le point d’intersection entre deux mesures de qualité

findk<-function(DTM,k=10,m=40,i=10,s=0:4,b=50){
    library(ldatuning)
    library(topicmodels)
    control_list_gibbs <- list(
  burnin = b,
  iter = 2*b,
  seed = s,
  nstart = 5,
  best = TRUE
    )
    FTN=FindTopicsNumber(DTM,topics = seq(k,m,by = i),metrics = c("Griffiths2004", "Deveaud2014"),
                         method = "Gibbs",control = control_list_gibbs)
    FindTopicsNumber_plot(FTN)
}

5.4 Calcul du modèle LDA

Une fois le nombre de dimensions choisis on procède au calcul du modèle avec un nombre élevé de tirages et de re-échantillonage.

ldapol<-function(DTM,k=30,s=0:4,b=2500){
    library(topicmodels)
  control_list_gibbs <- list(
  burnin = b,
  iter = 2*b,
  seed = s,
  nstart = 5,
  best = TRUE
)
  topicModel <- LDA(DTM, k, method = "Gibbs", control = control_list_gibbs)
    tmResult <- posterior(topicModel)
    as.matrix(tmResult$terms)
}

5.4.1 Visualisation des “thématiques” trouvées

Sur ce modèle probabiliste on peut aussi calculer les termes qui contribuent le plus à chaque dimension pour éventuellement détecter des mots vides à ajouter à la liste des mots vides.

5.4.2 Visualisation des termes de référence et de leurs corrélations

On montre ici les termes de la liste de réference et les termes du modèle LDA qui ont les plus grandes corrélations. Pour cela on utilise la fonction ldabicor montrée plus haut.

5.4.3 Recherche de termes corrélés hors lexique

On utilise ce modèle probabiliste pour recherche des termes corrélés pour ce modèle hors lexique d’étude. Cette approche est comparable à la recherche de collocations sur la base des plongements lexicaux sauf qu’elle s’applique à l’échelle des documents.

# Recherche de tous les termes corrélés à un terme donné
ldanncor=function(lm,w,p=0.1){
    xt=list()
    for(t in colnames(lm)){
        st=ldacortest(lm,w,t)
        if(st$p.value<p) xt[t]=st$estimate
    }
    vt=as.numeric(xt)
    names(vt)=names(xt)
    sort(vt,decreasing = TRUE)
}

6 Experimentations

6.1 Req Longue

6.1.1 FI

## Requête : europe|nation|peuple|économie|sécurité 
## ----
##      doc_id           title                date                       
##  Min.   :   17.0   Length:234         Min.   :2016-06-29 00:00:00.00  
##  1st Qu.:  178.5   Class :character   1st Qu.:2019-05-09 06:00:00.00  
##  Median : 7569.5   Mode  :character   Median :2020-04-05 00:00:00.00  
##  Mean   : 4838.7                      Mean   :2020-05-15 02:15:53.84  
##  3rd Qu.: 7705.5                      3rd Qu.:2021-05-12 00:00:00.00  
##  Max.   :12179.0                      Max.   :2022-12-15 00:00:00.00  
##      text          
##  Length:234        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
## Longueur des textes : 
## ----
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   188.0  1130.8  1631.5  2201.8  2219.8 43310.0

6.1.1.1 Corrélation des termes du lexique sur ce corpus

6.1.1.1.1 Contexte des termes “europe”, “sécurité”
6.1.1.1.2 Contexte des termes “peuple” et “europe”
6.1.1.1.3 Contexte des termes “indépendance” et “nucléaire”
6.1.1.1.4 Contexte des termes “sécurité” et “nucléaire”
6.1.1.1.5 Contexte des termes “frontière” et “frontières”
6.1.1.1.6 Contexte des termes “autorité” et “extrême”
6.1.1.1.7 Contexte des termes “gauche” et “sécurité”
6.1.1.1.8 Contexte des termes “état” et “migratoire”
6.1.1.1.9 Contexte des termes “démocratie” et “liberté”
6.1.1.1.10 Contexte des termes “démocratie” et “peuple”

6.1.1.2 Calcul des plongements lexicaux

6.1.1.2.1 Visualisation du positionnement des termes du lexique

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 20 individuals, described by 21 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
6.1.1.2.2 Colocations particulières

6.1.1.3 LDA

## Nombre de termes distincts: 1388
6.1.1.3.1 Estimation du nombre de dimensions

options(digits=8)
k=18
lm_FI=ldapol(DTM_FI,k=k,b=300)
6.1.1.3.2 Visualisation des “thématiques” trouvées
6.1.1.3.3 Visualisation des termes de référence et de leurs corrélations

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 18 individuals, described by 35 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
6.1.1.3.4 Recherche de termes corrélés hors lexique

On utilise ce modèle probabiliste pour recherche des termes corrélés pour ce modèle hors lexique d’étude. Cette approche est comparable à la recherche de collocations sur la base des plongements lexicaux sauf qu’elle s’applique à l’échelle des documents.

6.1.2 RN

## Requête : europe|nation|peuple|économie|sécurité 
## ----
##      doc_id           title                date                    
##  Min.   :  600.0   Length:300         Min.   :2016-01-12 00:00:00  
##  1st Qu.:  736.5   Class :character   1st Qu.:2016-08-01 12:00:00  
##  Median : 1167.5   Mode  :character   Median :2017-08-30 12:00:00  
##  Mean   : 1205.9                      Mean   :2017-07-13 08:46:48  
##  3rd Qu.: 1593.0                      3rd Qu.:2018-04-21 06:00:00  
##  Max.   :12216.0                      Max.   :2022-09-23 00:00:00  
##      text          
##  Length:300        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
## Longueur des textes : 
## ----
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   635.0  1260.5  1534.5  1631.3  1933.2  4102.0

6.1.2.1 Corrélation des termes du lexique sur ce corpus

6.1.2.1.1 Contexte des termes “europe”, “sécurité”
6.1.2.1.2 Contexte des termes “peuple” et “europe”
6.1.2.1.3 Contexte des termes “indépendance” et “nucléaire”
6.1.2.1.4 Contexte des termes “frontière” et “frontières”
6.1.2.1.5 Contexte des termes “démocratie” et “liberté”

6.1.2.2 Calcul des plongements lexicaux

6.1.2.2.1 Visualisation du positionnement des termes du lexique

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 20 individuals, described by 27 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
6.1.2.2.2 Colocations particulières

6.1.2.3 LDA

## Nombre de termes distincts: 1536
6.1.2.3.1 Estimation du nombre de dimensions

options(digits=8)
k=18
lm_RN=ldapol(DTM_RN,k=k,b=300)
#load("Rdata_RN/lm_RN.o")
6.1.2.3.2 Visualisation des “thématiques” trouvées
6.1.2.3.3 Visualisation des termes de référence et de leurs corrélations

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 18 individuals, described by 36 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
6.1.2.3.4 Recherche de termes corrélés hors lexique

6.1.3 WP

## Requête : europe|nation|peuple|économie|sécurité 
## ----
##      doc_id           title                date                       
##  Min.   :    244   Length:300         Min.   :2003-12-08 11:48:47.00  
##  1st Qu.: 208500   Class :character   1st Qu.:2011-06-16 01:10:20.50  
##  Median : 489480   Mode  :character   Median :2015-03-18 08:00:39.50  
##  Mean   : 498590                      Mean   :2015-02-16 14:24:53.55  
##  3rd Qu.: 735290                      3rd Qu.:2019-03-15 01:37:45.25  
##  Max.   :1195043                      Max.   :2022-04-24 10:11:09.00  
##      text          
##  Length:300        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
## Longueur des textes : 
## ----
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  510.00  694.75  829.00  893.93 1036.25 1717.00

6.1.3.1 Corrélation des termes du lexique sur ce corpus

6.1.3.1.1 Contexte des termes “europe”, “sécurité”
6.1.3.1.2 Contexte des termes “peuple” et “europe”
6.1.3.1.3 Contexte des termes “indépendance” et “nucléaire”
6.1.3.1.4 Contexte des termes “frontière” et “frontières”
6.1.3.1.5 Contexte des termes “démocratie” et “liberté”

6.1.3.2 Calcul des plongements lexicaux

6.1.3.2.1 Visualisation du positionnement des termes du lexique
termes_ref_we_cor_WP=ldabicor(we_WP,termes_ref,p=0.01)
as.data.frame(termes_ref_we_cor_WP)
library(stringr)
cor_WP_we_idx=termes_ref %in% unique(str_split(paste(names(termes_ref_we_cor_WP[1:25]),collapse = " "),pattern = " "))[[1]]
termviz(we_WP,termes_ref[cor_WP_we_idx])

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 20 individuals, described by 28 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
6.1.3.2.2 Colocations particulières
x="europe"
wnn_WP_x=wesim(wem_WP,x)
as.data.frame(wnn_WP_x)
y="sécurité"
wnn_WP_y=wesim(wem_WP,y)
as.data.frame(wnn_WP_y)

6.1.3.3 LDA

DTM_WP<-mydtm(pDWP$text,pDWP$doc_id,m = m_ref)
cat("Nombre de termes distincts:",DTM_WP$ncol,"\n")
## Nombre de termes distincts: 659
6.1.3.3.1 Estimation du nombre de dimensions

options(digits=8)
k=18
lm_WP=ldapol(DTM_WP,k=k,b=300)
#load("Rdata_RN/lm_RN.o")
6.1.3.3.2 Visualisation des “thématiques” trouvées
6.1.3.3.3 Visualisation des termes de référence et de leurs corrélations
termes_ref_lm_cor_WP=ldabicor(lm_WP,termes_ref,p=0.01)
as.data.frame(termes_ref_lm_cor_WP)
cor_WP_lm_idx=termes_ref %in% unique(str_split(paste(names(termes_ref_lm_cor_WP[1:50]),collapse = " "),pattern = " "))[[1]]
termviz(lm_WP,termes_ref[cor_WP_lm_idx])

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 18 individuals, described by 38 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
6.1.3.3.4 Recherche de termes corrélés hors lexique
x="europe"
knn_lm_WP_x=ldanncor(lm_WP,x)
as.data.frame(knn_lm_WP_x)
y="sécurité"
kknn_lm_WP_y=ldanncor(lm_WP,y)
as.data.frame(kknn_lm_WP_y)
z="économie"
knn_lm_WP_z=ldanncor(lm_WP,z)
as.data.frame(knn_lm_WP_z)

6.2 Req Courte

6.2.1 FI

## Requête : europe|sécurité 
## ----
##      doc_id            title                date                    
##  Min.   :   32.00   Length:120         Min.   :2016-06-29 00:00:00  
##  1st Qu.:  202.25   Class :character   1st Qu.:2019-05-07 00:00:00  
##  Median : 7581.00   Mode  :character   Median :2020-04-21 12:00:00  
##  Mean   : 5045.08                      Mean   :2020-06-12 06:11:30  
##  3rd Qu.: 7872.50                      3rd Qu.:2021-08-26 06:15:00  
##  Max.   :12175.00                      Max.   :2022-12-09 00:00:00  
##      text          
##  Length:120        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
## Longueur des textes : 
## ----
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   498.0  1243.8  1701.5  2638.0  2445.8 43310.0

6.2.1.1 Corrélation des termes du lexique sur ce corpus

6.2.1.1.1 Contexte des termes “europe”, “sécurité”
6.2.1.1.2 Contexte des termes “peuple” et “europe”
6.2.1.1.3 Contexte des termes “indépendance” et “nucléaire”
6.2.1.1.4 Contexte des termes “sécurité” et “nucléaire”
6.2.1.1.5 Contexte des termes “frontière” et “frontières”
6.2.1.1.6 Contexte des termes “autorité” et “extrême”
6.2.1.1.7 Contexte des termes “gauche” et “sécurité”
6.2.1.1.8 Contexte des termes “état” et “migratoire”
6.2.1.1.9 Contexte des termes “démocratie” et “liberté”
6.2.1.1.10 Contexte des termes “démocratie” et “peuple”

6.2.1.2 Calcul des plongements lexicaux

6.2.1.2.1 Visualisation du positionnement des termes du lexique

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 20 individuals, described by 15 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
6.2.1.2.2 Colocations particulières

6.2.1.3 LDA

DTM_FIc<-mydtm(pDFIc$text,pDFIc$doc_id,m = m_ref)
cat("Nombre de termes distincts:",DTM_FIc$ncol,"\n")
## Nombre de termes distincts: 748
6.2.1.3.1 Estimation du nombre de dimensions

options(digits=8)
k=18
lm_FIc=ldapol(DTM_FIc,k=k,b=300)
6.2.1.3.2 Visualisation des “thématiques” trouvées
6.2.1.3.3 Visualisation des termes de référence et de leurs corrélations
termes_ref_lm_cor_FIc=ldabicor(lm_FIc,termes_ref,p=0.01)
as.data.frame(termes_ref_lm_cor_FIc)
cor_FIc_lm_idx=termes_ref %in% unique(str_split(paste(names(termes_ref_lm_cor_FIc[1:50]),collapse = " "),pattern = " "))[[1]]
termviz(lm_FIc,termes_ref[cor_FIc_lm_idx])

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 18 individuals, described by 24 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
6.2.1.3.4 Recherche de termes corrélés hors lexique

6.2.2 RN

## Requête : europe|sécurité 
## ----
##      doc_id           title                date                    
##  Min.   :  609.0   Length:300         Min.   :2016-01-05 00:00:00  
##  1st Qu.: 1131.5   Class :character   1st Qu.:2016-06-27 18:00:00  
##  Median : 1695.5   Mode  :character   Median :2017-09-04 12:00:00  
##  Mean   : 1743.2                      Mean   :2017-07-29 14:47:36  
##  3rd Qu.: 2245.5                      3rd Qu.:2018-06-15 06:00:00  
##  Max.   :12216.0                      Max.   :2022-09-23 00:00:00  
##      text          
##  Length:300        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
## Longueur des textes : 
## ----
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   347.0  1276.8  1545.5  1685.3  1965.0  7170.0

6.2.2.1 Corrélation des termes du lexique sur ce corpus

6.2.2.1.1 Contexte des termes “europe”, “sécurité”
6.2.2.1.2 Contexte des termes “peuple” et “europe”
6.2.2.1.3 Contexte des termes “indépendance” et “nucléaire”
6.2.2.1.4 Contexte des termes “frontière” et “frontières”
6.2.2.1.5 Contexte des termes “démocratie” et “liberté”

6.2.2.2 Calcul des plongements lexicaux

6.2.2.2.1 Visualisation du positionnement des termes du lexique
termes_ref_we_cor_RNc=ldabicor(we_RNc,termes_ref,p=0.01)
as.data.frame(termes_ref_we_cor_RNc)
library(stringr)
cor_RNc_we_idx=termes_ref %in% unique(str_split(paste(names(termes_ref_we_cor_RNc[1:25]),collapse = " "),pattern = " "))[[1]]
termviz(we_RNc,termes_ref[cor_RNc_we_idx])

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 20 individuals, described by 24 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
6.2.2.2.2 Colocations particulières

6.2.2.3 LDA

DTM_RNc<-mydtm(pDRNc$text,pDRNc$doc_id,m = m_ref)
cat("Nombre de termes distincts:",DTM_RNc$ncol,"\n")
## Nombre de termes distincts: 1605
6.2.2.3.1 Estimation du nombre de dimensions

6.2.2.3.2 Visualisation des “thématiques” trouvées
df_top=my_top_words(lm_RNc)
nm_df_top=c()
T=list()
i=0
for(t in df_top){
  i=i+1
  T[[i]] = t[t %in% termes_ref]
  nm_df_top[i]=paste0(i,":",length(T[[i]]),":",paste0(T[[i]],collapse = " "))
}
names(df_top)=nm_df_top
df_top
6.2.2.3.3 Visualisation des termes de référence et de leurs corrélations
termes_ref_lm_cor_RNc=ldabicor(lm_RNc,termes_ref,p=0.01)
as.data.frame(termes_ref_lm_cor_RNc)
cor_RNc_lm_idx=termes_ref %in% unique(str_split(paste(names(termes_ref_lm_cor_RNc[1:50]),collapse = " "),pattern = " "))[[1]]
termviz(lm_RNc,termes_ref[cor_RNc_lm_idx])

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 18 individuals, described by 22 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
6.2.2.3.4 Recherche de termes corrélés hors lexique

6.2.3 WP

## Requête : europe|sécurité 
## ----
##      doc_id           title                date                       
##  Min.   :   2683   Length:185         Min.   :2016-01-11 17:45:28.00  
##  1st Qu.: 338797   Class :character   1st Qu.:2017-12-06 18:23:14.00  
##  Median : 705934   Mode  :character   Median :2019-07-08 14:24:51.00  
##  Mean   : 670880                      Mean   :2019-05-30 09:55:52.39  
##  3rd Qu.:1015340                      3rd Qu.:2021-01-05 00:56:50.00  
##  Max.   :1193013                      Max.   :2022-05-15 20:27:39.00  
##      text          
##  Length:185        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
## Longueur des textes : 
## ----
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  510.00  701.00  807.00  875.37  984.00 1729.00

6.2.3.1 Corrélation des termes du lexique sur ce corpus

6.2.3.1.1 Contexte des termes “europe”, “sécurité”
6.2.3.1.2 Contexte des termes “peuple” et “europe”
6.2.3.1.3 Contexte des termes “indépendance” et “nucléaire”
6.2.3.1.4 Contexte des termes “frontière” et “frontières”
6.2.3.1.5 Contexte des termes “démocratie” et “liberté”

6.2.3.2 Calcul des plongements lexicaux

6.2.3.2.1 Visualisation du positionnement des termes du lexique
termes_ref_we_cor_WPc=ldabicor(we_WPc,termes_ref,p=0.01)
as.data.frame(termes_ref_we_cor_WPc)
library(stringr)
cor_WPc_we_idx=termes_ref %in% unique(str_split(paste(names(termes_ref_we_cor_WPc[1:25]),collapse = " "),pattern = " "))[[1]]
termviz(we_WPc,termes_ref[cor_WPc_we_idx])

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 20 individuals, described by 34 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
6.2.3.2.2 Colocations particulières
x="europe"
wnn_WPc_x=wesim(wem_WPc,x)
as.data.frame(wnn_WPc_x)
y="sécurité"
wnn_WPc_y=wesim(wem_WPc,y)
as.data.frame(wnn_WPc_y)

6.2.3.3 LDA

DTM_WPc<-mydtm(pDWPc$text,pDWPc$doc_id,m = m_ref)
cat("Nombre de termes distincts:",DTM_WPc$ncol,"\n")
## Nombre de termes distincts: 356
6.2.3.3.1 Estimation du nombre de dimensions

options(digits=8)
k=18
lm_WPc=ldapol(DTM_WPc,k=k,b=300)
#load("Rdata_RN/lm_RN.o")
6.2.3.3.2 Visualisation des “thématiques” trouvées
6.2.3.3.3 Visualisation des termes de référence et de leurs corrélations
termes_ref_lm_cor_WPc=ldabicor(lm_WPc,termes_ref,p=0.01)
as.data.frame(termes_ref_lm_cor_WPc)
cor_WPc_lm_idx=termes_ref %in% unique(str_split(paste(names(termes_ref_lm_cor_WPc[1:50]),collapse = " "),pattern = " "))[[1]]
termviz(lm_WPc,termes_ref[cor_WPc_lm_idx])

## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 18 individuals, described by 35 variables
## *The results are available in the following objects:
## 
##    name               description                          
## 1  "$eig"             "eigenvalues"                        
## 2  "$var"             "results for the variables"          
## 3  "$var$coord"       "coord. for the variables"           
## 4  "$var$cor"         "correlations variables - dimensions"
## 5  "$var$cos2"        "cos2 for the variables"             
## 6  "$var$contrib"     "contributions of the variables"     
## 7  "$ind"             "results for the individuals"        
## 8  "$ind$coord"       "coord. for the individuals"         
## 9  "$ind$cos2"        "cos2 for the individuals"           
## 10 "$ind$contrib"     "contributions of the individuals"   
## 11 "$call"            "summary statistics"                 
## 12 "$call$centre"     "mean of the variables"              
## 13 "$call$ecart.type" "standard error of the variables"    
## 14 "$call$row.w"      "weights for the individuals"        
## 15 "$call$col.w"      "weights for the variables"
6.2.3.3.4 Recherche de termes corrélés hors lexique
x="europe"
knn_lm_WPc_x=ldanncor(lm_WPc,x)
as.data.frame(knn_lm_WPc_x)
y="sécurité"
kknn_lm_WPc_y=ldanncor(lm_WPc,y)
as.data.frame(kknn_lm_WPc_y)
z="économie"
knn_lm_WPc_z=ldanncor(lm_WPc,z)
as.data.frame(knn_lm_WPc_z)