Tutoriel koRpus
Tutoriels R | |
---|---|
▲ | |
◀▬ | |
⚐ brouillon | ☸ |
⚒ 2014/11/24 | |
Prérequis | |
Sous-pages et productions: |
Introduction
Korpus est bibliothèque R d'analyse de textes, spécialisée pour la construction d'indices à partir d'une représentation linguistique de textes.
- Sites et documentation principaux
- cran.r: koRpus: An R Package for Text Analysis
- Homepage
- koRpus
- koRpus_vignette.pdf
- koRpus.pdf
- Description: A set of tools to analyze texts. Includes, amongst others, functions for automatic language detection, hyphenation, several indices of lexical diversity (e.g., type token ratio, HD-D/vocd-D, MTLD) and readability (e.g., Flesch, SMOG, LIX, Dale-Chall). Basic import functions for language corpora are also provided, to enable frequency analyses (supports Celex and Leipzig Corpora Collection file formats) and measures like tf-idf.
Préparation
- Prérequis
- Idéalement la grande majorité des analyses exigent qu'un texte soit décomposé en composants Part-of-speech (POS) et il faudrait faire fonctionner le logiciel TreeTagger pour cela (voir qqs. indications dans la section [#Installation|Installation]. Alternativement on peut utiliser un "tokeniser" interne qui coupe en "tokens" et identifie mots, nombres, ponctuations et abréviations. Ce dernier suffit pour calculer des formules de lisibilité, mais donne des résultats moins intéressants pour les autres indices.
- Certaines formules de lisibilité exigent des listes de mots. Ces listes sont sous copy-right on règle générale, mais on peut les importer avec un simple fichier texte, un mot par ligne (encodé en UTF-8)
- Les analyses de fréquences nécessitent un corpus au format Celex ( Leipzig Corpora Collection (Quastho�, Richter, & Biemann, 2006)
- Input
- Le input devrait être un simple fichier de texte, encodé en format UTF-8
Premiers pas
- Créer un objet S4 décomposé en POS utilisant le tokenizer inclus dans koRpus
- La fonction
tokenize()
demande le chemin du texte, la langue et d'autre paramètres.
tagged.text.obj <- tokenize("~/methodo/iramuteq/w_txt/Alice.txt",
lang="en",
detect=c(parag=TRUE, hline=TRUE))
- Le résultat n'est pas si glorieux. On montre les tokens 1240 à 1245 (sur 6476)
taggedText(tagged.text.obj)
1240 Word (kRp internal) NA NA
1241 Number (kRp internal) NA NA
1242 Sentence ending punctuation (kRp internal) NA NA
1243 Word (kRp internal) NA NA
1244 Comma (kRp internal) NA NA
1245 Word (kRp internal) NA NA
- Créer un objet S4 décomposé en POS en utilisant TreeTagger
- le path dans la liste des TT.options doit indiquer le répertoire de base de TreeTagger.
- Important: Le preset n'est pas "fr", "mais fr-utf"
tagged.text.objS4 <- treetag("/home/schneide/schneide/methodo/iramuteq/w_txt/Alice.txt",
treetagger="manual",
lang="fr",
TT.options= list (path="/home/schneide/tree-tagger/", preset="fr-utf8"))
Le résultat du processus de tokenizing ou POS tagging complet sera stocké dans une variable. Ensuite, on peut appliquer diverses méthodes d'analyse.
- La langue (pour vérifier)
> language(tagged.text.objS4)
[1] "fr"
; Le résultat token par token (pour vérifier)
taggedText(tagged.text.objS4)
1240 adjective NA NA
1241 Sentence ending punctuation NA NA
1242 adverb NA NA
1243 punctuation NA NA
1244 adverb NA NA
1245 personal pronoun NA NA
- Simple description
describe(tagged.text.objS4)
Indices de lisiblité
Calcul du Automated Readability Index (ARI)
La formule utilisée par défaut: . On pourrait changer les paramètres
ARI (tagged.text.objS4)
Automated Readability Index (ARI)
Parameters: default
Grade: 13.17
Text language: fr
Calcul du ARI direct
Pour le calculer le ARI on peut faire sans corpus tagué, cad. on lit directement le fichier. Par contre, il faut indique la langue. Comme le manuel explique très mal comment passer des paramètres à ARI, on le fait en deux fois: D'abord définition d'un environnement, puis appel de la fonction ARI.
set.kRp.env (TT.cmd = "/home/schneide/tree-tagger/cmd/tree-tagger-french", lang="fr")
ARI ("/mnt/schneide/methodo/iramuteq/w_txt/Alice.txt",
force.lang="fr",
tagger = "kRp.env")
Automated Readability Index (ARI)
Parameters: default
Grade: 12.35
Text language: fr
Le résultat est différent, peut-être du a différent défauts lors de la tokenisation ?
- Comparaison avec trois autres textes
> ARI ("/mnt/schneide/methodo/iramuteq/w_txt/Activate.txt", tagger = "kRp.env")
Automated Readability Index (ARI)
Parameters: default
Grade: 12.47
> ARI ("/mnt/schneide/methodo/iramuteq/w_txt/Mon-entretien-d-embauche.txt", tagger = "kRp.env")
Automated Readability Index (ARI)
Parameters: default
Grade: 10.62
Calcul de pleins d'indices
readability(tagged.text.objS4, hyphen=NULL,
index=c("ARI", "Bormuth", "Coleman", "Coleman.Liau", "Dale.Chall", "Danielson.Bryan",
"Dickes.Steiwer","DRP", "ELF",
"Farr.Jenkins.Paterson", "Flesch", "Flesch.Kincaid", "FOG", "FORCAST", "Fucks",
"Harris.Jacobson", "Linsear.Write", "LIX",
"nWS", "RIX", "SMOG", "Spache", "Strain", "Traenkle.Bailer", "TRI",
"Wheeler.Smith")
)
Le résultat montre que certains indexes ne sont pas calculés car il manque des listes de mots:
Automated Readability Index (ARI)
Parameters: default
Grade: 13.17
Coleman Formulas
Parameters: default
Pronouns: 6.77 (per 100 words)
Prepos.: 13.99 (per 100 words)
Formula 1: 40% cloze completions
Formula 2: 42% cloze completions
Formula 3: 43% cloze completions
Formula 4: 42% cloze completions
Coleman-Liau
Parameters: default
ECP: 28% (estimted cloze percentage)
Grade: 15.49
Grade: 15.49 (short formula)
Danielson-Bryan
Parameters: default
DB1: 9.23
DB2: 32.67
Grade: 9-12
Dickes-Steiwer's Handformel
Parameters: default
TTR: 0.35
Score: 44.47
Easy Listening Formula
Parameters: default
Exsyls: 1504
Score: 6.35
Farr-Jenkins-Paterson
Parameters: default
RE: 49.1
Grade: >= 13 (college)
Flesch Reading Ease
Parameters: en (Flesch)
RE: 48.24
Grade: >= 13 (college)
Flesch-Kincaid Grade Level
Parameters: default
Grade: 10.54
Age: 15.54
Gunning Frequency of Gobbledygook (FOG)
Parameters: default
Grade: 13.45
FORCAST
Parameters: default
Grade: 10.9
Age: 15.9
Fucks' Stilcharakteristik
Score: 90.87
Grade: 9.53
Linsear Write
Parameters: default
Easy words: 81.66
Hard words: 18.34
Grade: 11.02
Läsbarhetsindex (LIX)
Parameters: default
Index: 51.26
Rating: difficult
Grade: 10
Neue Wiener Sachtextformeln
Parameters: default
nWS 1: 7.94
nWS 2: 8.44
nWS 3: 7.39
nWS 4: 7.62
Readability Index (RIX)
Parameters: default
Index: 5.67
Grade: 11
Simple Measure of Gobbledygook (SMOG)
Parameters: default
Grade: 12.95
Age: 17.95
Strain Index
Parameters: default
Index: 8.14
Tränkle-Bailer Formulas
Parameters: default
Prepositions: 14%
Conjunctions: 4%
TB 1: 20.77
TB 2: 18.93
Kuntzsch's Text-Redundanz-Index
Parameters: default
Short words: 2319
Punctuation: 2473
Foreign: 0
Score: -5074.08
Wheeler-Smith
Parameters: default
Score: 63.46
Grade: > 4
Text language: fr
Warning messages:
1: Bormuth: Missing word list, hence not calculated.
2: Dale-Chall: Missing word list, hence not calculated.
3: DRP: Missing Bormuth Mean Cloze, hence not calculated.
4: Harris.Jacobson: Missing word list, hence not calculated.
5: Spache: Missing word list, hence not calculated.
6: Note: The implementations of these formulas are still subject to validation:
Coleman, Danielson.Bryan, Dickes.Steiwer, ELF, Fucks, Harris.Jacobson, nWS, Strain, Traenkle.Bailer, TRI
Use the results with caution, even if they seem plausible!
Indices de diversité
MTLD
Measure of Textual Lexical Diversity selon McCarthy, P. M. & Jarvis, S. (2010). MTLD, vocd-D, and HD-D: A validation study of sophisticated approaces to lexical diversity assessment. Behaviour Research Methods, 42(2), 381–392.
En utilisant les paramètres de défaut:
MTLD (tagged.text.objS4)
Language: "fr"
Total number of tokens: 3823
Total number of types: 1347
Total number of lemmas: 541
Measure of Textual Lexical Diversity
MTLD: 116.92
Number of factors: 32.7
Factor size: 0.72
SD tokens/factor: 57.34 (all factors)
58.04 (complete factors only)
Comme toutes les méthodes de koRpus, MTLD permet de spécifier des paramètres. L'analyse suivante est très lente.
> MTLD (tagged.text.objS4, MA=TRUE, char=TRUE)
Installation
- Le paquet koRpus est disponible via R
- Par contre, pour pouvoir pleinement profiter il faut aussi installer/configurer Treetagger et qui nécessite aussi l'installation du langage Perl. Les liens sont disponibles dans la documentation de ce paquet.
Sous Ubuntu, on peut installer Treetagger de la façon suivante (enfin il faudrait aussi vérifier que ce ne soit pas fait automatiquement par la distribution Debian. Nous, on a installé koRpus via R-Studio
- Installer Perl si ce n'est pas déjà fait
- sudo apt-get install perl
- Créer un répertoire, par exemple tree-tagger
- Télécharger tous les fichiers indiqués dans le manuel
- sh install-tagger.sh
- Editer le fichier ~/.bashrc et ajouter (par exemple)
- export PATH=/home/votre_login/tree-tagger/cmd:/home/votre_login/tree-tagger/bin:$PATH
- Tester:
echo 'Vive big brother!' | tree-tagger-english
reading parameters ...
tagging ...
finished.
Vive NP Vive
big JJ big
brother NN brother
! SENT !
Korpus semble aussi marcher avec RKWard, une IDE/GUI pour R
Liens et bibliographie
Bibliographie
- Michalke, M. (2012, April). koRpus -- ein R-paket zur textanalyse. Paper presented at the Tagung experimentell arbeitender Psychologen (TeaP), Mannheim.
- Helmut Schmid (1995): Improvements in Part-of-Speech Tagging with an Application to German. Proceedings of the ACL SIGDAT-Workshop. Dublin, Ireland.