83 lines
3.4 KiB
Text
83 lines
3.4 KiB
Text
---
|
|
title: "Analyse des données"
|
|
author: "François Pelletier"
|
|
date: "17 octobre 2015"
|
|
output: html_document
|
|
---
|
|
|
|
## Chargement des données
|
|
```{r}
|
|
load(file = "donnees_clean.RData")
|
|
```
|
|
|
|
## Aperçu quantitatif des données
|
|
|
|
```{r}
|
|
library(plyr)
|
|
library(psych)
|
|
library(tm)
|
|
library(RTextTools)
|
|
library(topicmodels)
|
|
```
|
|
|
|
## Nom de l'organisme
|
|
|
|
On remarque, en calculant la fréquence des noms des organismes, que certains d'entre eux présentent des variations dans leur nom. Nous allons corriger ceci en utilisant un algorithme de similarité de la famille Latent Dirichlet Allocation. Cet algorithme d'apprentissage non supervisé attribue un numéro de sujet à chaque texte du corpus. Il est généralement utilisé par les aggrégateurs de textes afin de créer des catégories. Par exemple, Google News utilise ce genre d'algorithmes pour regrouper les nouvelles similaires provenant de différents médias.
|
|
|
|
```{r}
|
|
(freq_nom_organisme <- as.data.frame(table(rawdata2$nom_organisme)))
|
|
colnames(freq_nom_organisme) <- c("nom_organisme","frequence")
|
|
|
|
# Extraction des noms uniques d'organismes
|
|
unique_nom_organisme <- unique(rawdata2$nom_organisme)
|
|
|
|
organisme_matrix <- create_matrix(as.vector(unique_nom_organisme),
|
|
language = "french",
|
|
removeNumbers = TRUE,
|
|
stemWords = TRUE,
|
|
weighting = weightTf)
|
|
|
|
lda_organisme <- LDA(organisme_matrix, 154 , method = "VEM", control = list(alpha = 0.75))
|
|
|
|
```
|
|
Regardons comment l'algorithme a attribué les différents sujets:
|
|
```{r}
|
|
nom_topic <- data.frame(nom_organisme = unique_nom_organisme,
|
|
organisme = as.integer(topics(lda_organisme)))
|
|
```
|
|
|
|
Joignons les sujets attribués à chacunes des entrées de notre table.
|
|
```{r}
|
|
nom_topic_merged <- merge(nom_topic,freq_nom_organisme,by = "nom_organisme")
|
|
nom_topic_sorted <- nom_topic_merged[order(nom_topic_merged$organisme,-nom_topic_merged$frequence),]
|
|
```
|
|
On remarque que le sujet "Sécurité publique" est associé avec "Commission de la santé et de la sécurité du travail". On attribue donc un snouveau sujet a "Sécurité publique".
|
|
```{r}
|
|
nom_topic_sorted$organisme[nom_topic_sorted$nom_organisme=="Sécurité publique"] <- 53
|
|
```
|
|
Nous conservons ici le nom de l'organisme le plus fréquent dans chaque sujet l'attribuons à chacunes des entrées de la table.
|
|
```{r}
|
|
nom_topic_unique <- ddply(nom_topic_sorted,
|
|
.(organisme),
|
|
summarize,
|
|
nom_organisme=nom_organisme[which.max(frequence)])
|
|
correspondance_nom_organisme <- merge(nom_topic_sorted,nom_topic_unique,by="organisme")
|
|
rawdata3 <- subset(merge(rawdata2,subset(correspondance_nom_organisme, select = -c(frequence,organisme)),by.x = "nom_organisme", by.y = "nom_organisme.x"),select=-c(nom_organisme))
|
|
colnames(rawdata3)[which(names(rawdata3) == "nom_organisme.y")] <- "nom_organisme"
|
|
```
|
|
|
|
## Description du projet
|
|
|
|
Dans cette section, on essaie de regrouper les descriptions de projets similaires afin de ressortir les différents types de projets.
|
|
|
|
```{r}
|
|
unique_description <- unique(rawdata2$description_du_projet)
|
|
description_matrix <- create_matrix(as.vector(unique_description),
|
|
language = "french",
|
|
removeNumbers = TRUE,
|
|
stemWords = TRUE,
|
|
weighting = weightTf)
|
|
lda <- LDA(description_matrix, 30 , method = "VEM", control = list(alpha = 0.1))
|
|
```
|
|
|
|
|