1.png 2.png 3.png BaO.png 5.png


Analyses & résultats des extractions de patrons morphosyntaxiques



Introduction

Une des finalités de ce projet est de pouvoir comparer le comportement de certaines structures morphosyntaxiques selon les différentes rubriques choisies. Le patron que nous avons déterminé est " DETDPIG ADJ NCM " ce qui lexicalisé produit par exemple "des belles chaussettes" | "des bonnes tartes" | "les sombres chapeaux". Ce syntagme adjectival est un descripteur linguistique que nous supposons discriminant. Effectivement, "des" est un article déterminant partitif, ainsi dans le 'standard' du français des syntagmes pluriels doivent conserver la forme au singulier : "de belles chaussettes", "de bonnes tartes". En revanche cet écart est courant en usage. Nous supposons donc pouvoir trouver le motif dans le corpus <2016>. Cependant sa présence ou bien son absence nous permettrait d'identifier une variation linguistique.

De fait, il existe dans l'imaginaire commun un lien implicite entre la norme et l'écrit, la variation et l'oral. Ainsi, c'est à l'écrit qu'interviendrait la standardisation et à l'oral la variation. Or notre corpus est de style "journalistique", il devrait donc être en français "standard" c'est à dire normé. Nous supposons également que le motif retournera de nombreuses formes correctes. Ainsi, grâce aux graphes de co-occurrents nous espérons trouver des invariants dans la variation ce qui nous permettrait d'identifier le contexte dans lequel apparaît cet écart.


Ainsi nous avons plusieurs éléments à confirmer/infirmer :

  1. Nous trouverons des syntagmes adjectival dans le corpus <2016>
  2. Les graphes nous permettront de repérer un motif indiquant une substantification qui nécessiterait un partitif
  3. Selon les rubriques la fréquence relative des motifs sera +/- grande (selon la norme linguistique implicite dans chaque domaine)
  4. Selon les résultats par rubriques nous pourrions peut être caractériser un texte comme non-standard


Nous essayerons également de :

  1. Comparer les résultats entre différentes rubriques
  2. Comparer les résultats de patrons extraits sur une même rubrique selon l'outil utilisé
  3. Emettre un avis critique sur les différents étiquetages (Tree Tagger / Cordial)
  4. Faire des requêtes sur les lemmes et non sur les termes lexicalisés afin de réduire les erreurs dues à l'étiquetage


La comparaison entre les différentes rubriques nous incite à émettre une dernière hypothèse sur la proportion d'écrit et d'oral. Il est important de prendre en compte les modalités de nos extractions puisqu'elles ne concernent que les titres et les résumés de tous les articles. En d'autres termes, les entretiens avec des artistes, hommes politiques etc... ne seront pas présents dans notre corpus de travail. Ainsi, nous supposons (et cela sera notre dernière conjecture) que les rubriques où nous trouverons le plus de motifs pertinents seront celles où son objet principal était un entretien.


Les rubriques sélectionnées :

  1. A la une - 3208
  2. Science - 3244
  3. Livres - 3260
  4. International - 3210
  5. Cinéma - 3476


Nous rappelons que les outils utilisés sont: 3 scripts perl dont 2 pour la sortie de Cordial et 1 pour celle de Tree Tagger, 1 feuille de style XSL également pour la sortie de Tree Tagger. Afin de comparer les outils sur une même rubriques d'une manière "quantitative" nous avons également utilisé ce script qui a pour but de calculer la fréquence relative des motifs par rapport à la rubrique dont il est extrait.

Ainsi nous avons deux outils différents pour chaque sortie, un script pour comparer les résultats. La première étape de l'analyse nous permet de comparer les résultats retournés par les différents outils et leurs performances quant à l'identification des motifs. La seconde étape basée sur la visualisation de graphes de co-occcurrents nous permettra de voir en contexte le comportement de ces motifs morphosyntaxiques.






Résultats

3208

Résultats au cas par cas

				
Les motifs discriminants :
	- des nouveaux produits
	- des hauts fourneaux
	- des grands serviteurs
	- des nouveaux chiffres
	- Des petits riens
	- des profonds regrets
	- des long-courriers
				
			

Cordial :
Résultats script perl 1
Résultats script perl 2

Tree Tagger:
Résultats script perl
Résultat feuille de style XSL ici





3244

Résultats au cas par cas

				
Les motifs discriminants :
	- des jeunes veaux
	- des grands projets
	- des principaux facteurs ~
	- des grands pays

~ indique une ambiguïté
				
			

Cordial :
Résultats script perl 1
Résultats script perl 2

Tree Tagger:
Résultats script perl
Résultat feuille de style XSL ici





3260

Résultats au cas par cas

				
Les motifs  discriminants :
	- des grands auteurs ~
	- des grands écrivains ~
				
			

Cordial :
Résultats script perl 1
Résultats script perl 2

Tree Tagger:
Résultats script perl
Résultat feuille de style XSL ici





3210

Résultats au cas par cas

				
Les motifs  discriminants :
	- des somptueux cadeaux
	- des nombreux groupuscules ~
	- des faux portraits
	- des pires résultats
	- des hauts gradés
	- des petits montants ~
				
			

Cordial :
Résultats script perl 1
Résultats script perl 2

Tree Tagger:
Résultats script perl
Résultat feuille de style XSL ici





3476

Résultats au cas par cas

				
Les motifs  discriminants :
	- des bons petits
	- du dernier cru
	- du même coup
				
			

Cordial :
Résultats script perl 1
Résultats script perl 2

Tree Tagger:
Résultats script perl
Résultat feuille de style XSL ici





Comparaison des résultats selon les outils utilisés pour une même rubrique

					
#!/usr/bin/python
import re, os

def calcul_total_ligne(texte):
	"""
		input: le texte étiqueté par cordial avec 3 colonnes et chaque ligne = 1 token
		output: un intr qui représente le nombre de ligne
	"""
	nbr=0
	for el in texte:
		if el == "\n":
			nbr+=1
	return nbr

def extract(dossier):
	dico_out={}
	for fichier in os.listdir(dossier):
		if fichier[0]==".":continue
		texte=open(os.path.join(dossier,fichier)).read()
		dico_out[fichier]=calcul_total_ligne(texte)
	return dico_out

def calcul_freq_cordial(texte_etiquete, texte_extract):
	print("\n\n____________"+texte_etiquete+" -> "+texte_extract)
	nbr_etiquete=calcul_total_ligne(open(texte_etiquete).read())
	nbr_extract=calcul_total_ligne(open(texte_extract).read())
	freq_rel=abs( nbr_extract / nbr_etiquete )
	print ("\nNombre total de tokens du fichier", texte_etiquete, " : ", nbr_etiquete, "\nNombre total de motifs extraits du fichier", texte_etiquete, " : ", nbr_extract,"\nFréquence relative : ", freq_rel,"\n")
	return freq_rel, nbr_etiquete, nbr_extract

def calcul_freq_treetagger(texte_rubrique_txt, texte_extract):
	print("\n\n____________"+texte_rubrique_txt+" -> "+texte_extract)
	texte=open(texte_rubrique_txt).read()
	texte=texte.split()
	nbr_token=len(texte)
	nbr_extract=calcul_total_ligne(open(texte_extract).read())
	freq_rel=abs( nbr_extract / nbr_token )
	print ("\nNombre total de tokens du fichier", texte_rubrique_txt, " : ", nbr_token, "\nNombre total de motifs extraits du fichier", texte_rubrique_txt, " : ", nbr_extract,"\nFréquence relative : ", freq_rel,"\n")
	return freq_rel, nbr_token, nbr_extract


def tester_tout(dossier):
	dico_extract=extract(dossier) #type dico
	fichier_a_select=[]
	liste_resultats=[]
	for cle in dico_extract:
		if cle[:4] not in fichier_a_select:
			fichier_a_select+=[cle]
	# print(fichier_a_select) # à décommenter pour tester
	for fichier in os.listdir("resultat_cordial"):
		for doc in fichier_a_select:
			if fichier[0]==".":continue
			if fichier[9:13]== doc[:4]:
				fichier_1="resultat_cordial/"+fichier
				freq=calcul_freq_cordial(fichier_1, doc)
				liste_resultats+=[freq]
				print(freq)
	for docuStruc in os.listdir("rubriques_resultat"):
		for el in fichier_a_select:
			if docuStruc[0]==".":continue
			if docuStruc[9:13]== el[:4]:
				if docuStruc[-3:]=="txt":
					docuStruc_1="rubriques_resultat/"+docuStruc
					freq2=calcul_freq_treetagger(docuStruc_1, el)
					liste_resultats+=[freq2]
					print(freq2)
	return (liste_resultats)


# désavantage :
# - nous devons connaître la structure du titre des fichiers
# - nous devons connaître la structure de notre arborescence


					
				

Le script


					

1 . Résultats détaillées



____________resultat_cordial/rubrique-3208.cnr -> 3208_BaO2_cordial_1.txt

Nombre total de tokens du fichier resultat_cordial/rubrique-3208.cnr  :  192344
Nombre total de motifs extraits du fichier resultat_cordial/rubrique-3208.cnr  :  257
Fréquence relative :  0.001336147735307574

(0.001336147735307574, 192344, 257)


____________resultat_cordial/rubrique-3208.cnr -> 3208_BaO2_cordial_2.txt

Nombre total de tokens du fichier resultat_cordial/rubrique-3208.cnr  :  192344
Nombre total de motifs extraits du fichier resultat_cordial/rubrique-3208.cnr  :  255
Fréquence relative :  0.0013257496984569314

(0.0013257496984569314, 192344, 255)


____________resultat_cordial/rubrique-3208.cnr -> 3208_BaO2_tree-tagger.txt

Nombre total de tokens du fichier resultat_cordial/rubrique-3208.cnr  :  192344
Nombre total de motifs extraits du fichier resultat_cordial/rubrique-3208.cnr  :  177
Fréquence relative :  0.00092022626128187

(0.00092022626128187, 192344, 177)



____________rubriques_resultat/rubrique-3210.txt -> 3210_BaO2_cordial_1.txt

Nombre total de tokens du fichier rubriques_resultat/rubrique-3210.txt  :  159283
Nombre total de motifs extraits du fichier rubriques_resultat/rubrique-3210.txt  :  202
Fréquence relative :  0.0012681830452716235

(0.0012681830452716235, 159283, 202)


____________rubriques_resultat/rubrique-3210.txt -> 3210_BaO2_cordial_2.txt

Nombre total de tokens du fichier rubriques_resultat/rubrique-3210.txt  :  159283
Nombre total de motifs extraits du fichier rubriques_resultat/rubrique-3210.txt  :  199
Fréquence relative :  0.0012493486436091735

(0.0012493486436091735, 159283, 199)


____________rubriques_resultat/rubrique-3210.txt -> 3210_BaO2_tree-tagger.txt

Nombre total de tokens du fichier rubriques_resultat/rubrique-3210.txt  :  159283
Nombre total de motifs extraits du fichier rubriques_resultat/rubrique-3210.txt  :  182
Fréquence relative :  0.0011426203675219578

(0.0011426203675219578, 159283, 182)


____________rubriques_resultat/rubrique-3244.txt -> 3244_BaO2_cordial_1.txt

Nombre total de tokens du fichier rubriques_resultat/rubrique-3244.txt  :  67298
Nombre total de motifs extraits du fichier rubriques_resultat/rubrique-3244.txt  :  92
Fréquence relative :  0.001367053998632946

(0.001367053998632946, 67298, 92)


____________rubriques_resultat/rubrique-3244.txt -> 3244_BaO2_cordial_2.txt

Nombre total de tokens du fichier rubriques_resultat/rubrique-3244.txt  :  67298
Nombre total de motifs extraits du fichier rubriques_resultat/rubrique-3244.txt  :  91
Fréquence relative :  0.0013521947160391097

(0.0013521947160391097, 67298, 91)


____________rubriques_resultat/rubrique-3244.txt -> 3244_BaO2_tree-tagger.txt

Nombre total de tokens du fichier rubriques_resultat/rubrique-3244.txt  :  67298
Nombre total de motifs extraits du fichier rubriques_resultat/rubrique-3244.txt  :  71
Fréquence relative :  0.0010550090641623822

(0.0010550090641623822, 67298, 71)


____________rubriques_resultat/rubrique-3260.txt -> 3260_BaO2_cordial_1.txt

Nombre total de tokens du fichier rubriques_resultat/rubrique-3260.txt  :  19417
Nombre total de motifs extraits du fichier rubriques_resultat/rubrique-3260.txt  :  22
Fréquence relative :  0.0011330277591800999

(0.0011330277591800999, 19417, 22)


____________rubriques_resultat/rubrique-3260.txt -> 3260_BaO2_cordial_2.txt

Nombre total de tokens du fichier rubriques_resultat/rubrique-3260.txt  :  19417
Nombre total de motifs extraits du fichier rubriques_resultat/rubrique-3260.txt  :  22
Fréquence relative :  0.0011330277591800999

(0.0011330277591800999, 19417, 22)


____________rubriques_resultat/rubrique-3260.txt -> 3260_BaO2_tree-tagger.txt

Nombre total de tokens du fichier rubriques_resultat/rubrique-3260.txt  :  19417
Nombre total de motifs extraits du fichier rubriques_resultat/rubrique-3260.txt  :  29
Fréquence relative :  0.0014935365916464954

(0.0014935365916464954, 19417, 29)


____________rubriques_resultat/rubrique-3476.txt -> 3476_BaO2_cordial_1.txt

Nombre total de tokens du fichier rubriques_resultat/rubrique-3476.txt  :  22864
Nombre total de motifs extraits du fichier rubriques_resultat/rubrique-3476.txt  :  37
Fréquence relative :  0.0016182645206438068

(0.0016182645206438068, 22864, 37)


____________rubriques_resultat/rubrique-3476.txt -> 3476_BaO2_cordial_2.txt

Nombre total de tokens du fichier rubriques_resultat/rubrique-3476.txt  :  22864
Nombre total de motifs extraits du fichier rubriques_resultat/rubrique-3476.txt  :  36
Fréquence relative :  0.0015745276417074878

(0.0015745276417074878, 22864, 36)


____________rubriques_resultat/rubrique-3476.txt -> 3476_BaO2_tree-tagger.txt

Nombre total de tokens du fichier rubriques_resultat/rubrique-3476.txt  :  22864
Nombre total de motifs extraits du fichier rubriques_resultat/rubrique-3476.txt  :  29
Fréquence relative :  0.001268369489153254

(0.001268369489153254, 22864, 29)

					
				




Conclusion :

Tout d'abord, la rubrique où les motifs recherchés sont le plus fréquent est la rubrique "Cinéma" puis "Livre" puis "Science" et enfin de manière presque égale "International" et "A la une". Il n'est pas étonnant de voir la rubrique Cinéma avec la plus grande proportion de motifs. De fait, ces derniers sont liés à la notion de langue "non standard". Autrement dit, leur présence indique que nous opérons un certain écart avec la norme du français standard. Or le cinéma est une rubrique où nous pouvons supposer lire une langue moins codifiée que pour la rubrique internationale par exemple. Il est également possible de voir ce classement des rubriques comme allant de celle où nous avons une présence du style personnel plus importante à celle où les codes de rédaction sont plus forts. Cette hypothèse peut être confirmée au regard des motifs eux mêmes : lorsque nous regardons l'extraction pour la rubrique cinéma la variation est la plus visible, elle s'entend plus nettement.

Quant aux outils, si nous comparons les deux proposés pour traiter la sortie de Tree Tagger, il apparaît une différence de qualité des motifs lexicaux retournés à partir du même patron morphosyntaxique. En effet, par exemple toujours pour la rubrique Cinéma l'étiquetage effectué par Cordial puis traité par les deux scripts perl retourne beaucoup d'entités nommées. Cela sous-entend que l'étiquetage ne les a pas repérées comme telles puisqu'elles sont données bien que le patron demande un DET ADJ NOM. En revanche Tree Tagger semble les avoir identifiées comme telles car elles ne sont pas présentées dans les résultats.

							
Cordial :
	Les Huit Salopards
	Les 8 Salopards
	Les 8 Salopards
	Les 8 Salopards
	Les 8 Salopards
	aux 8 Salopards
	Les 8 Salopards
	Les Huit Salopards

Tree tagger : aucune occurence
							
						

L'étiquetage semble donc moins efficace pour les entités nommées avec Cordial qu'avec Tree Tagger.


De plus, les deux scripts pour traiter les fichiers étiquetés par Cordial retournent des résultats plus similaires: l'écart du nombre de motifs est toujours plus petit ente les résultats de Cordial que ces derniers et ceux de Tree Tagger. Cela peut se remarquer rapidement :

							
A la une - 3208 :
	257 et 255 // 177

Science - 3244 :
	91 et 92 // 71

Livres - 3260 :
	22 et 22 // 29

International - 3210 :
	202 et 199 // 182

Cinéma - 3476 :
	37 et 36 // 29
							
						

Il y a une disparité des résultats en fonction de l'étiqueteur utilisé, mais une homogénéité pour un même etiqueteur. Cela renforce la remarque précédente sur des étiquetages que nous devinons très différents l'un de l'autre.