name: inverse class: center, middle, inverse # Méthodologie en linguistique ## Corpus 4 Clément Plancq 11 novembre 2014 --- ## Corpus et Python ### Retour sur les séquences adj-nom / nom-adj ```remark [pos="A"] [pos="N"] ``` - Comptage sur trois corpus | | ADJ-NOM | NOM-ADJ | |-------|---------------|---------------| | French Treebank | 10683 | 17486 | | OpenSubtitles | 155812 | 152852 | | frwac | 18476778 | 46073786 | - Comment comparer ces valeurs absolues entre elles ? .exos[Ecrivez un script python qui reprend le tableau ci-dessus avec des pourcentages. Utilisez le fichier .courrier[adj-nom.csv]] --- ## Corpus et Python 1. Ecrire une fonction de calcul de pourcentage ```python def getPercent(val, sum): """ Calcule le pourcentage de val dans sum """ res = return res ``` 2. Lire le fichier csv, pour chaque ligne (i.e. chaque corpus) calculer et afficher les valeurs en pourcentage ```python #!/usr/bin/env python3 #-*- coding: utf-8 -*- def getPercent(val, sum): ... file = open("adj-nom.csv", 'r') for line in file: values = line.split(",") print(values[0] + " : ", end="") #Nom du corpus sum = ... ... file.close() ``` --- ## Corpus et Python * Y'a-t'il des adjectifs qu'on ne trouve qu'en position antéposée, ou postposée ou les deux ? * La longueur des adjectifs influence-t-elle leurs positions ? --- ## Corpus et Python * Y'a-t'il des adjectifs qu'on ne trouve qu'en position antéposée, ou postposée ou les deux ? 1. A l'aide du concordancier [cqp](http://ressources.labex-efl.org/cqp/), récupérez les tables de fréquence des séquences adj-nom et nom-adj sur le corpus ESTER. .exos[Vous utiliserez les fichiers .courrier[ester_adj-nom.csv] et .courrier[ester_nom-adj.csv]] 2. Ecrivez un script python qui lit les deux fichiers et recense les adjectifs antéposés, postposés et ceux qui peuvent occuper les deux positions. 1. Lire les fichiers et stocker les adjectifs dans deux listes .courrier[adjAnte] et .courrier[adjPost]. 2. A l'aide de structures de données .exo-ling[set] écrivez une fonction intersect qui retourne l'intersection de deux listes. Trouvez l'intersection des deux listes .exo-ling[adjAnte] et .courrier[adjPost] et stockez le résultat sera dans la liste .courrier[adjBoth]. 3. Ecrivez une fonction qui supprime d'une liste1 les élémenst présents dans une liste2. Supprimez des listes .courrier[adjAnte] et .courrier[adjPos] les adjectifs qu'on trouve dans les deux positions. 4. Affichez le nombre d'éléments de chaque liste puis leur contenu. --- ## Corpus et Python 1. Fonction .courrier[intersect] ```python def intersect(list1, list2): """ Renvoie l'intersection de deux tableaux """ ``` 1. Fonction .courrier[removeAdjBoth] ```python def removeAdjBoth(list, adjBoth): """ Supprime de list les éléments présents dans adjBoth """ ``` --- ## Corpus et Python * La longueur des adjectifs influence-t-elle leurs positions ? 1. Ajoutez à votre script une fonction de calcul de la moyenne des longueurs de chaque chaîne d'une liste ```python def meanLength(list): """ Renvoie la longueur moyenne des chaînes contenues dans list """ ... return mean ```