2011-2012 Slides inspirés des cours de S. Evert et M. Baroni
Linguistique expérimentale? Traditionnellement en linguistique formelle, refus de l usage de données comme source d information unique: Méthode fondée d abord sur l introspection (confortée par des données) Distinction grammatical/agrammatical Raisons profondes (Chomsky): Introspection permet de généraliser Introspection permet de décider qu un exemple est agrammatical Données (corpus,expériences) représentent un échantillon fini et biaisé du langage : mauvaise généralisation Données sont bruitées, comment distinguer le bruit des faits de langue? : risque d éparpillement compétence vs performance
Et pourtant... Problèmes liés aux jugements introspectifs Études sur les préférences Études sur la gradience Études historiques ou diachroniques
Problèmes liés aux jugements introspectifs Cas limites (cités par Schutze 96):??Are/??Is John or his parents here? I, who the FBI thinks *am/*is an anarchist, will doubtless be here. Commentaires de Levelt (Schutze 96): In the early years of the transformational grammar [the low reliability of absolute grammaticality judgments] was not an important issue, since the clear cases, i.e., the highly uncontroversial cases of grammaticality and ungrammaticality, were sufficient for constructing and testing linguistic theory. It was expected that, in its tum, the theory constructed in such a way would decide on the unclear cases. This hope has vanished. (Levelt et al. 1977, p. 88) It has slowly but surely become clear that it is not possible, on the basis of incontrovertible, directly evident data, to construct a theory so extensive that all less obvious cases can be decided upon by the grammar itself. It is becoming more and more apparent that decisions on very important areas of theory are dependent on very unreliable observations...(levelt 1974, vol. 2, p. 6)
Études sur les préférences John gave a book to Mary John gave Mary a book John gave a book to him John gave him a book Sujet très étudié pour l anglais notamment par (Bresnan 07). L ordre n est pas aléatoire. Il y a des préférences qui dépendent de la longueur des compléments, de leur définitude, de leur caractère pronominal...
Gradience dans les jugements de grammaticalité Il est fréquent que les auteurs utilisent une forme de gradience grammaticale dans leurs jugements qui repose sur l intuition (Sorace, Keller 2005) investigue l expérimentation : 1 Which friend has Thomas painted a picture of? 2? Which friend has Thomas painted the picture of? 3? Which friend has Thomas torn up a picture of? 4? How many friends has Thomas painted a picture of? Commentaires Sentence (1) does not incur any constraint violations. It is more acceptable than (2), which incurs a DEF violation, i.e. extraction takes place out of a definite picture NP. (3) violates VERB, the constraint that requires that the matrix verb does not presuppose the existence of its object. VERB is satisfied by paint, but violated by tear up.(4) shows how the extraction of a non-referential wh-phrase violates the constraint REF, leading to a decrease in acceptability compared to (1).
Cas où l introspection ne peut s appliquer Il existe une série de cas ou l introspection ne peut pas s appliquer : 1 Etudes diachroniques (par exemple : préférences pour l ordre des compléments ditransitifs en ancien français) 2 Etudes en acquisition (langage enfant) 3 Etudes sur le français oral (jugements beaucoup plus limites) (l expérimentation non plus d ailleurs pour (2)...)
Propos de ce cours Investiguer comment travailler à partir de données Issues de corpus Issues d expériences Question de fond : généralisation à partir de données Recours aux statistiques
Plan (tentative) Partie du cours qui traite de l analyse de données issues de corpus Aperçu général Observation de données Généralisation d observations prises dans un échantillon Décrire de grosses masses de données: Résumés statistiques, visualisation de données Statistiques Descriptives Décider de la significativité de différences (moyennes, proportions) Avec volonté de généraliser au delà d un échantillon donné Statistiques inférentielles Découvrir des propriétés cachées (théoriques) dans les données : Propriétés qui reposent sur une théorie (vérifier la théorie) Chercher à identifier ces propriétés (exploration de données) Modélisation statistique (modèles de régression)
Portée du cours Buts du cours Formation pratique à l analyse de données sur corpus Notions élémentaires de statistiques Utilisation du langage R pour la pratique Non buts du cours Théorie statistique Analyse probabiliste (cf cours de M1) Pour les TALeux Donne une méthodologie pour l analyse de données en grande quantité Apporte les bases de certaines techniques de classification (MaxEnt, reg. logistique) Donne une perspective d application de techniques de TAL à des problèmes de linguistique
Support avec R Utilisation du langage R, intérêt : Gratuit (open source) Téléchargement ici : http://cran.r-project.org/ Fonctionnalités supplémentaires pour traiter des données langagières Peut se programmer, s automatiser Inconvénients : Interface ligne de commande Effort plus important à faire au début qu avec un logiciel à boutons/fenêtres Pose encore parfois qq problèmes pour les textes non-anglais (caractères accentués)
Bibliographie de base David Howell, Méthodes statistiques en sciences humaines, De Boeck, 2008. C. Judd, G. McClelland, C. Ryan, D. Muller, V. Yzerbyt, Analyse des données. Une approche par comparaison de modèles, De Boeck, 2010. Shravan Vasishth, Michael Broe The foundations of statistics: a simulation based approach, Springer 2011. Christopher Butler, Statistics in Linguistics, Oxford Blackwell, 1985. Harald Baayen Analyzing Linguistic Data: A practical introduction to statistics. Cambridge University Press, 2008. Peter Dalgaard, Introductory statistics with R (2nd ed), Springer, 2008.
Lancer R Sous UNIX : > R --gui X11 #ou > R --gui Tk
R comme calculatrice > 1+1 [1] 2 > a <- 2 #assignation d une valeur a une variable > a * 2 [1] 4 > log(a) # logarithme en base e de a [1] 0.6931472 > log(a,2) # logarithme en base 2 de a [1] 1 > quit() # quitte le logiciel
Vecteurs R est conçu pour travailler naturellement avec des vecteurs: #(c)ombine, cree des vecteurs > a <- c(1,2,3) # operateur applique a chaque element du vecteur > a * 2 [1] 2 4 6 > log(a) [1] 0.0000000 0.6931472 1.0986123 > sum(a) [1] 6 > length(a) [1] 3 > sum(a) / length(a) [1] 2
Initialiser des vecteurs > a <- 1:100 #1,2,3... 100 > a <- 10ˆ(1:100) # 10, 100, 1000,... 10e100+100 > a <- seq(0,10,0.1) # 0,0.1,0.2,... 9.9,10 > a <- rnorm(100) #100 nombres reels aleatoires (loi normale) > a <- runif(100,0,5) #100 nombres reels aleatoires (loi uniforme)
Statistiques descriptives de base > length(a) > summary(a) Min. 1st Qu. Median Mean 3rd Qu. Max. 0.023 1.270 2.760 2.567 3.636 5.000 > mean(a) > sd(a) #ecart type (standard deviation en anglais) >quantile(a) 0% 25% 50% 75% 100% 0.023 1.269 2.760 3.635 4.999
Faire un graphique élémentaire > x <- 1:100 > y <- sqrt(x) #Plotte la fonction racine carree > plot(x,y) > a <- 2ˆ(1:100) > plot(a) > a <- rnorm(100) #histogrammes > hist(a) > a <- runif(100) > hist(a)
Parametres de graphiques > hist(a,probability=true) > lines(density(a)) > hist(a,probability=true,col="cyan") > lines(density(a),lwd=3,col="red") > hist(a,probability=true,col="cyan",xlab="domaine", > lines(density(a),lwd=3,col="red")
Encore plus d options, d aide > help("hist") > help.search("histogram") >?hist > help.start()
Faire un script avec R Script: commandes mises en séquence dans un fichier texte Une par ligne Enregistrer le script en le suffixant par.r Utiliser un éditeur de texte comme Notepad++ ou Emacs Exécuter le script dans R : > source("mon_script.r") > source(file.choose()) #...pour choisir le fichier a la main Pour afficher un résultat dans un script, utiliser : > a <- sd(toto) > print(a) sinon pas d affichage!
Tables de données (bonne pratique, y compris en TAL) Structurer une table de données de telle sorte que : Une observation par ligne Une variable par colonne Avec optionnellement un en-tête (header) Exemple: word pos lemma les D le gentils A gentil animaux N animal Les colonnes sont séparées par une tabulation unique > read.table("toto.table",header=true) > toto <- read.table("toto.table",header=true) > toto <- read.table(file.choose(),header=true)
Fichiers Excel R peut lire des fichiers produits par Microsoft Excel Sauvegarder vos fichiers Excel en format csv > read.csv("toto.csv") > read.csv2("toto.csv") #Depend de la version de Excel Remarque: parfois des difficultés, Excel ne gère pas les nombres de manière standard...
Data Frame Les tables de données sont représentées en R par des Data Frames Une table de données R est faite de : Lignes de données (rows) ou observations Colonnes qui représentent les variables, quantités mesurées etc.
Fonctions utiles pour observer une data frame > brown <- read.table("brown.stats.txt",header=true) > lob <- read.table("lob.stats.txt",header=true) > summary(brown) > colnames(brown) #affiche le nom des variables > dim(brown) > head(brown) > plot(brown) #use the latter with reasonable data sets #whose columns contents are numerical
Comparaison rapide (corpus de Brown et LOB) Les corpus de Brown et de LOB (Lancaster Oslo Bergen) sont des corpus qui cherchent à fournir respectivement un usage représentatif de l anglais américain et de l anglais continental. Ils sont divisés en sections de genres textuels différents (presse, littéraire, sciences, religion...) Ils sont faits pour être comparables : même nombre de sections dans LOB que dans Brown, même distribution de genres, etc. On propose un exercice de mise en jambes qui a pour but de voir dans quelle mesure ils sont réellement comparables
Signification des variables Les lignes représentent des statistiques qui résument les différents échantillons qui constituent chacun des corpus. Les colonnes comportent les variables suivantes: ty : taille du vocabulaire de l échantillon to : nombre d occurrences de chaque échantillon se : nombre de phrases dans l échantillon towl : longueur moyenne des mots (calculée sur occurrences) tywl : longueur moyenne des mots (calculée sur le vocabulaire)
Accéder aux vecteurs dans le corpus de Brown > brown$to > head(brown$to) # A FAIRE : calculer des statistiques de summary() # sur les differents vecteurs #Que fait la ligne suivante a votre avis > summary(brown$to / brown$ty) #Essayer les commandes suivantes > brown$ty[1] #l index d un vecteur commence a 1 > brown[1,2] #ligne,colonne > brown$ty[1:10] #utilise un vecteur comme indice > brown[1:10,2] > brown[1,] > brown[,2]
Création de sous-tables > brown[brown$to < 2200, ] # ne retient que les petits textes Brown > sum(brown$to >= 2200) # Compte le nombre de longs textes dans Brown > subset (brown$to >= 2200) #idem (1) > petitstextes <- subset (brown$to >= 2200) #egalite : == #inegalite :!= # contraintes complexes : &!, # ex: brown[brown$to < 2200 & brown$to > 2000, ]
Observer les différences > boxplot(brown$to,lob$to) > boxplot(brown$to,lob$to,names=c("brown","lob")) >? boxplot > t.test(brown$to,lob$to) > wilcox.test(brown$to,lob$to) Juger les différences On voit sur les graphiques qu il y a une légère différence On utilise un test pour déterminer si la différence est significative ou pas