Skip to content
Snippets Groups Projects
Commit 00d51eb4 authored by alexiasch's avatar alexiasch
Browse files

add R

parent 7b21be70
Branches
No related merge requests found
Mot Etiquette Lemme
Un DET un
marchand NOM marchand
avait VER avoir
fait VER faire
de PRP de
bonnes ADJ bon
affaires NOM affaire
à PRP à
la DET le
foire NOM foire
; PUN ;
il PRO il
avait VER avoir
vendu VER vendre
toutes PRO tout
ses DET son
marchandises NOM marchandise
, PUN ,
et KON et
bien ADV bien
garni VER garnir
son DET son
sac NOM sac
de PRP de
monnaies NOM monnaie
d' PRP de
or NOM or
et KON et
d' PRP de
argent NOM argent
. SENT .
Il PRO il
s' PRO se
était VER être
mis VER mettre
en PRP en
route NOM route
vers PRP vers
sa DET son
demeure NOM demeure
où PRO où
il PRO il
désirait VER désirer
arriver VER arriver
ce PRO ce
même ADJ même
jour NOM jour
encore ADV encore
avant PRP avant
la DET le
tombée NOM tombée
de PRP de
la DET le
nuit NOM nuit
. SENT .
Il PRO il
cheminait VER cheminer
donc ADV donc
à PRP à
cheval NOM cheval
, PUN ,
son DET son
lourd ADJ lourd
portemanteau NOM portemanteau
solidement ADV solidement
attaché VER attacher
derrière PRP derrière
la DET le
selle NOM selle
. SENT .
Vers PRP vers
l' DET le
heure NOM heure
du PRP du
dîner NOM dîner
, PUN ,
il PRO il
fit VER faire
halte NOM halte
dans PRP dans
une DET un
ville NOM ville
, PUN ,
et KON et
lorsqu' KON lorsque
il PRO il
voulut VER vouloir
se PRO se
remettre VER remettre
en PRP en
route NOM route
, PUN ,
le DET le
valet NOM valet
d' PRP de
écurie NOM écurie
, PUN ,
qui PRO qui
lui PRO lui
amena VER amener
son DET son
cheval NOM cheval
, PUN ,
lui PRO lui
dit VER dire
: PUN :
Monsieur NOM Monsieur
ne ADV ne
sait VER savoir
pas ADV pas
sans PRP sans
doute NOM doute
qu' PRO que
il PRO il
manque VER manquer
un DET un
clou NOM clou
au PRP au
fer NOM fer
gauche ADJ gauche
de PRP de
derrière PRP derrière
son DET son
cheval NOM cheval
. SENT .
Ne ADV ne
t' PRO te
en PRO en
inquiète VER inquiéter
pas ADV pas
, PUN ,
répondit VER répondre
le DET le
marchand NOM marchand
, PUN ,
le DET le
fer NOM fer
n' ADV ne
en PRO en
tiendra VER tenir
pas ADV pas
moins ADV moins
pendant PRP pendant
les DET le
six NUM six
lieues NOM lieue
au PRP au
plus ADV plus
qu' KON que
il PRO il
reste VER rester
à PRP à
faire VER faire
. SENT .
Je PRO je
suis VER être|suivre
pressé VER presser
. SENT .
Vers PRP vers
l' DET le
heure NOM heure
du PRP du
goûter NOM goûter
, PUN ,
il PRO il
s' PRO se
arrêta VER arrêter
de PRP de
nouveau ADJ nouveau
pour PRP pour
faire VER faire
donner VER donner
l' DET le
avoine NOM avoine
à PRP à
sa DET son
monture NOM monture
. SENT .
Le DET le
garçon NOM garçon
d' PRP de
écurie NOM écurie
ne ADV ne
tarda VER tarder
pas ADV pas
à PRP à
venir VER venir
le PRO le
trouver VER trouver
dans PRP dans
l' DET le
auberge NOM auberge
. SENT .
Monsieur NOM monsieur
ne ADV ne
sait VER savoir
pas ADV pas
, PUN ,
sans PRP sans
doute NOM doute
, PUN ,
lui PRO lui
dit VER dire
il PRO il
, PUN ,
qu' PRO que
il PRO il
manque VER manquer
un DET un
fer NOM fer
au PRP au
pied NOM pied
gauche ADJ gauche
de PRP de
derrière ADV derrière
de PRP de
son DET son
cheval NOM cheval
. SENT .
Dois VER devoir
-je PRO je
le PRO le
conduire VER conduire
chez PRP chez
le DET le
maréchal NOM maréchal
? SENT ?
Ne ADV ne
t' PRO te
en PRO en
inquiète VER inquiéter
pas ADV pas
, PUN ,
répondit VER répondre
le DET le
marchand NOM marchand
, PUN ,
pour PRP pour
une DET un
couple NOM couple
de PRP de
lieues NOM lieue
qu' PRO que
il PRO il
me PRO me
reste VER rester
à PRP à
faire VER faire
, PUN ,
mon DET mon
cheval NOM cheval
se PRO se
passera VER passer
bien ADV bien
de PRP de
ce PRO ce
fer NOM fer
. SENT .
Je PRO je
suis VER être|suivre
pressé VER presser
. SENT .
Il PRO il
se PRO se
remit VER remettre
en PRP en
route NOM route
. SENT .
Mais KON mais
bientôt ADV bientôt
après PRP après
le DET le
cheval NOM cheval
boita VER boiter
; PUN ;
il PRO il
n' ADV ne
y PRO y
avait VER avoir
pas ADV pas
longtemps ADV longtemps
qu' KON que
il PRO il
boitait VER boiter
, PUN ,
lorsqu' KON lorsque
il PRO il
commença VER commencer
à PRP à
trébucher VER trébucher
; PUN ;
il PRO il
eut VER avoir
à PRP à
peine NOM peine
trébuché VER trébucher
deux NUM deux
ou KON ou
trois NUM trois
fois NOM fois
, PUN ,
qu' PRO que
il PRO il
s' PRO se
abattit VER abattre
et KON et
se PRO se
cassa VER casser
une DET un
jambe NOM jambe
. SENT .
Le DET le
marchand NOM marchand
fut VER être
obligé VER obliger
de PRP de
laisser VER laisser
là ADV là
son DET son
cheval NOM cheval
gisant ADJ gisant
, PUN ,
de PRP de
déboucler VER déboucler
son DET son
portemanteau NOM portemanteau
, PUN ,
de PRP de
le PRO le
placer VER placer
sur PRP sur
son DET son
dos NOM dos
et KON et
de PRP de
regagner VER regagner
à PRP à
pied NOM pied
son DET son
logis NOM logis
, PUN ,
où PRO où
il PRO il
n' ADV ne
arriva VER arriver
que ADV que
très-avant ADJ <unknown>
dans PRP dans
la DET le
nuit NOM nuit
. SENT .
C' PRO ce
est VER être
pourtant ADV pourtant
ce PRO ce
maudit ADJ maudit
clou NOM clou
que PRO que
j' PRO je
ai VER avoir
négligé VER négliger
de PRP de
faire VER faire
remettre VER remettre
, PUN ,
qui PRO qui
a VER avoir
été VER être
cause NOM cause
de PRP de
tout PRO tout
mon DET mon
malheur NOM malheur
, PUN ,
pensait VER penser
il PRO il
en PRP en
marchant VER marcher
d' PRP de
un DET un
air NOM air
sombre ADJ sombre
. SENT .
# configuration de base
src = "."
setwd(src)
# création des dossiers : https://stackoverflow.com/questions/53855614/r-create-a-new-folder-using-the-given-path
dir.create(file.path(dirname(src), "data"))
dir.create(file.path(dirname(src), "out" ))
# lecture du fichier d'entrée
data = read.csv('data/le_clou.tsv', encoding="UTF-8", sep="\t", header=TRUE)
View(data)
# 1. Obtenez l'effectif de chaque catégorie grammaticale et créez un tableau avec ces données.
# création data.frame > fait seul le compte des effectifs à partir d'une colonne
pos_comptes = table(data$Etiquette)
pos_df <- as.data.frame(pos_comptes)
# nommage des colonnes de la dataFrame
colnames(pos_df) <- c("Pos", "Freq")
View(pos_df)
# 2. Représentez les effectifs obtenus pour la question 1 avec un diagramme circulaire (camembert).
# Les pourcentages pour chaque secteur du diagramme doivent également être affichés.'
# étiquettes pour le diagramme
labels = pos_df$Pos
# valeurs pour le diagramme
# slices == effectif, ou Freq.
slices = pos_df$Freq
# pourcentages
pourcentages = round(slices/sum(slices)*100,
digits=2)
# nouvelles étiquettes avec pos-tag, compte et pourcentage
labels_avec_pourcent = paste(labels, slices, pourcentages)
# archive de sauvegarde
png("out/pie-chart_le-clou.png", width=700, height=500)
# librairie pour visualisation esthétique
library(RColorBrewer)
# palette préparée avec nb de couleur égal aux nombres de catégorie (labels)
mypalette = brewer.pal(length(labels), "Set3")
pie(slices, labels=labels_avec_pourcent, col=mypalette,
main="Effectif des catégories grammaticales",
sub="Le loup et l'homme des frères Grimm")
# légende
legend("topright", levels(pos_df$Pos), cex=0.7, fill=mypalette)
# écriture sur fichier de sortie
dev.off()
# 3. Après calculer la longueur de chaque lemme, obtenez l'effectif de chaque longueur et créez un tableau avec ces effectifs.
# librairie pour le compte des chaines de caracteres
library(stringr)
# compte des longueurs de chaine appliqué à la colonne Mot
data$LemmeLen = str_count(data$Lemme)
longueurs = table(data$LemmeLen)
# création data.frame > fait seul le compte des effectifs à partir d'une colonne
strlen_df = as.data.frame(longueurs)
# nommage des colonnes pour visualisation
colnames(strlen_df) <- c("String_length", "Freq")
View(strlen_df)
# 4. Représentez les effectifs des longueurs de lemmes avec un diagramme en colonnes.
# préparation de l'img en sortie
png("out/barplot_le-clou.png", width=500, height=500)
# définition du diagramme
barplot(longueurs, col=c("darkblue"), main="Effectif des longueurs des mots", sub="Le clou des frères Grimm", xlab="Longueur", ylab="Effectif", ylim=c(0, 200))
dev.off()
# 5. Obtenez les effectifs des catégories grammaticales en fonction de la longueur des lemmes et remplissez un tableau comme le suivant :
# <= 4 vs > 4.
# longueur des lemmes
# data$LemmeLen = str_count(data$Lemme)
# effectif par longueur de lemme
# lemmelen_df = as.data.frame(data$LemmeLen)
# filtre = longueur de la chaine <= 4 pour chaque lemme, avec son étiquette
pos_lemme_filtre1 = data[data$LemmeLen <=4, c("Etiquette", "LemmeLen")]
# 2nd filtre pour avoir les lemmes de < 4 caractères avec Etiquette
pos_lemme_filtre2 = data[data$LemmeLen >4, c("Etiquette", "LemmeLen")]
View(pos_lemme_filtre1)
# passage en dataframe
lemmelen_df1 = as.data.frame(pos_lemme_filtre1)
colnames(lemmelen_df1) = c("Etiquette", "LemmeLen")
lemmelen_df2 = as.data.frame(pos_lemme_filtre2)
colnames(lemmelen_df2) = c("Etiquette", "LemmeLen")
View(lemmelen_df1)
# librairie pour distribution de fréquences
library(plyr)
ct_lemm1 = count(lemmelen_df1, "Etiquette")
View(ct_lemm1)
ct_lemm2 = count(lemmelen_df2, "Etiquette")
View(ct_lemm2)
# merge les tables sur la colonne "Etiquette"
# https://www.datasciencemadesimple.com/joi n-in-r-merge-in-r/
# install.packages('dplyr')
library(dplyr)
# outer join pour que les effectifs == 0 soient inclus aussi
df = merge(x=ct_lemm1, y=ct_lemm2, by="Etiquette", all=TRUE)
colnames(df) = c("Etiquette", "<=4", ">4")
# traitement des valeurs nulles pour enlever "invalid value"
# https://www.digitalocean.com/community/tutorials/replace-in-r
df[is.na(df)] = 0
View(df)
write.csv(df, "out/strlen_lemme.csv")
R/out/barplot_le-clou.png

3.86 KiB

R/out/pie-chart_le-clou.png

9.56 KiB

"","Etiquette","<=4",">4"
"1","ADJ",2,8
"2","ADV",21,7
"3","DET",39,0
"4","KON",9,2
"5","NOM",16,50
"6","NUM",2,1
"7","PRO",59,0
"8","PRP",50,5
"9","PUN",27,0
"10","SENT",16,0
"11","VER",6,63
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment