Architecture du projet

 

"Le Monde Chronologique et Lexico3"

 

Document de travail

26/11/2004

 

 

Un corpus de veille : le journal Le Monde

Analyse quotidienne de la version électronique

du journal pour le Web

 

Fleury Serge, CLA2T/SYLED

Serge.fleury@univ-paris3.fr

 


1        Sommaire

 

1      Sommaire. 2

2      Préambule. 4

3      Le site du projet4

3.1       Parcours du site. 5

3.1.1        La page d'accueil du site. 5

3.1.2        Présentation. 6

3.1.3     Corpus6

3.1.4        Version HTML. 9

3.1.5     Les Mots du Monde. 10

3.1.6        Spécificités chronologiques. 11

3.1.7     Rapports Lexico3. 11

3.1.8        Outils. 12

3.1.8.1     Générateur de corpus Thématique. 12

3.1.8.2     Générateur de corpus Thématique avec filtrage de formes. 13

3.1.8.3     Extracteur de corpus Thématique avec filtrage de formes. 13

3.1.8.4     Extracteur de corpus complet avec filtrage de formes. 15

3.1.8.5     Générateur de corpus Thématique (dit version v2)15

3.1.8.6     Générateur de corpus Thématique (dit version v2) avec filtrage de formes. 15

3.1.8.7     Extracteur de corpus Thématique (dit version v2) avec filtrage de formes. 15

3.1.8.8     Extracteur de corpus complet (dit version v2)  avec filtrage de formes. 15

3.1.9        Query. 17

3.1.10       SEARCH.. 19

4      Chaînes de traitement21

4.1       Récolte des données. 21

4.2       Préparation et manipulation des données. 21

4.2.1        Traitements automatiques. 21

4.2.2        Traitements manuels. 21

4.3       Synthèse des traitements :22

4.4       Traitements lexicométriques. 22

4.4.1        Exemple de rapports construits avec Lexico3. 23

4.4.1.1     Principales caractéristiques de la partition : DATE. 24

4.4.1.2     Spécifs - Part : DATE Parties sélectionnées : "040125". 28

4.4.1.3     Graphes de ventilation de formes :30

5      Le moteur de requête. 34

6      Perspectives. 36

6.1       Travaux en cours. 36

6.2       Travaux à mettre en place. 36

7      Références bibliographiques. 37

8      Annexes. 38

8.1       Expressions régulières. 38

8.1.1        Liens et tutoriaux. 38

8.1.2        Présentation générale. 39

8.1.3        Présentation complémentaire. 39

 


 

2        Préambule

Ce document présente l'architecture mise en œuvre pour construire et analyser un corpus chronologique de la version électronique du journal Le Monde.

Chaque version quotidienne du journal Le Monde est régulièrement récupérée sur le site web du journal[1] : dans sa version HTML et dans sa version PDF. La version HTML[2] du journal est traitée pour produire différents états :

Les états quotidiens des contenus textuels sont ensuite nettoyés et concaténés pour produire des corpus chronologiques couvrant l'ensemble des dates de récupération.

Le démarrage de ce processus a commencé le 12 avril 2003 i.e. on dispose à ce jour d'un corpus regroupant l'ensemble des versions électroniques de chaque journée depuis cette date.

3        Le site du projet

Hypertoile : http://sfmac.no-ip.com (accès restreint sur demande à serge.fleury@univ-paris3.fr)

 

Certains résultats construits sont aussi disponibles sans restriction ici :

http://www.cavi.univ-paris3.fr/ilpga/ilpga/tal/lexicoWWW/rapportsL3.htm

 

http://www.cavi.univ-paris3.fr/ilpga/ilpga/sfleury/veille.htm


3.1       Parcours du site

3.1.1       La page d'accueil du site

Le menu de gauche de cette page permet d'accéder aux rubriques présentées ci-dessous.


 

3.1.2       Présentation

Présentation générale du projet

3.1.3        Corpus

Présentation des différentes versions des corpus disponibles

 

La chaîne de traitement présentée infra construit différentes versions des données associées aux versions électroniques du journal.

Un corpus complet préparé pour être analysable par Lexico3 est construit par la chaîne de traitement : il rassemble l'intégralité des états électroniques du journal depuis le démarrage de ce projet. Ce corpus est partitionné de la manière suivante : ANNEE, MOIS, SEMAINE, DATE, RUBRIQUE, PAGE (article). En raison de la taille volumineuse de ce corpus, celui-ci est disponible sous la forme de plusieurs fichiers (un fichier couvre une période de 6 mois environ) dont la concaténation construit une version couvrant l’ensemble de la période disponible.

 

Un corpus complet au format XML et regroupant les contenus textuels est également construit à l'issue de la chaîne de traitement. Ce corpus est utilisé dans le moteur de requête présenté infra. Le schéma ci-dessous décrit la structure de ce corpus.

 

 

 

La chaîne de traitement construit des "corpus quotidiens" au format XML et au format Lexico3.

Des corpus supplémentaires sont construits sur le même principe que le corpus chronologique complet mais en ne conservant que des rubriques sélectionnées : FRANCE (regroupant les rubriques « France » et « France-Société » du journal),   INTERNATIONAL (la rubrique « international » du journal), SOCIETE (la rubrique « société » du journal). Il est possible ne pas se restreindre à ces rubriques particulières et de construire un corpus thématique donné : un générateur de corpus thématique (i.e. lié à une rubrique donné) est disponible dans la chaîne de traitement mise en œuvre (cf infra).

La chaîne de traitement construit des "corpus quotidiens" au format Lexico3 qui contrairement aux précédents intègre une indication de rubrique. Les articles de navigation (menu et sommaire de la version HTML) ne sont pas conservés dans cette version de données.

Ce corpus résulte de la concaténation des précédentes données.

Cette version du corpus se distingue de la précédente de la manière suivante :

 

 


 

3.1.4       Version HTML

La version originale (construite par les éditeurs de la version électronique du journal) des états quotidiens est disponible dans sa version HTML (simplifiée). Cette version permet de reconstruire « à la volée » des corpus thématiques en utilisant les outils construits à cet effet (cf infra).

 

 

 


 

3.1.5        Les Mots du Monde

 

Dictionnaire des mots du journal et leur fréquence pour chaque jour (format HTML et XML)

 

 

La chaîne de traitements construit pour chaque journée traitée un index des mots utilisés et leur fréquence.

 

 

 


3.1.6       Spécificités chronologiques

L'ensemble des calculs des spécificités chronologiques construites avec Lexico3 pour certaines dates.

 

 

Des calculs de spécificités (par jour) sont construits par Lexico3 pour certaines journées, pour le moment cette opération est réalisée manuellement.

3.1.7        Rapports Lexico3

Ensemble des rapports d'analyse construits avec Lexico3

Des rapports d'analyse réalisés avec Lexico3 sont construits à partir des différentes versions disponibles du corpus. A ce jour une vingtaine de rapport ont été construits (cf infra).

 


3.1.8       Outils

Outils associés aux projets[3]

Cette page donnent des liens vers les outils utilisés ou construits pour ce projet.

 

3.1.8.1      Générateur de corpus Thématique

Un script Perl peut construire à la demande un état complet regroupant l’ensemble des articles d’une même rubrique du journal sur l’ensemble de la période disponible. On dispose à ce jour de tels états pour les rubriques : France, International et Société.

Ce script utilise l’application Lynx.

 Lynx is a fully-featured World Wide Web (WWW) browser for users on Unix, VMS, and other platforms running cursor-addressable, character-cell terminals or emulators. That includes vt100 terminals, other character-cell displays, and vt100 emulators such as Kermit or Procomm running on PCs or Macs. Lynx was a product of the Distributed Computing Group within Academic Computing Services of The University of Kansas. Lynx was originally developed by Lou Montulli,Michael Grobe, and Charles Rezac.Garrett Blythe created DosLynx and later joined the Lynx effort as well. Following the departures of Lou and Garrett for positions at Netscape in the summer of 1994, Craig Lavender provided support services for Lynx, and Ravikumar Kolli for DosLynx. Currently Lynx is being maintained and supported by members of the Internet community coordinated via the lynx-dev mailing list. Lynx is copyrighted by the University of Kansas and is distributed without restrictions on usage or redistribution under the GNU General Public License.”

Mode d’emploi

perl MKCLM-TH.pl -at repOut repIn date thema thema2

Le script doit être lancé avec 4 paramètres et une option complémentaire :

repIn

 le répertoire contenant un état quotidien du journal au format HTML

date

 la date traitée

thema

 la rubrique à conserver

thema2

 réécriture du nom de la rubrique après nettoyage typographique

Ce script utilise l’application Lynx (cf supra).

3.1.8.2      Générateur de corpus Thématique avec filtrage de formes

Un script Perl permet de construire un état complet regroupant l’ensemble des articles d’une même rubrique et contenant un motif textuel donné (une expression régulière[4] permettant de sélectionner un groupe de mots par exemple).

Ce script utilise l’application Lynx (cf supra).

Mode d’emploi

perl MKCLM-TH-querystring.pl -at  repOut repIn date thema thema2 queryString

Le script doit être lancé avec 5 paramètres et une option complémentaire :

repIn

 le répertoire contenant un état quotidien du journal au format HTML

date

 la date traitée

Thema

 la rubrique à conserver

Thema2

 réécriture du nom de la rubrique après nettoyage typographique

queryString

 le motif à rechercher dans les articles à conserver

3.1.8.3      Extracteur de corpus Thématique avec filtrage de formes

Un script Perl/Tk permet d’extraire une sous-partie d’un corpus thématique (construit par les précédents scripts) en ne conservant que les articles contenant un motif donné (exprimé là encore par une expression régulière permettant de sélectionner une famille de mots).

Exemple d’utilisation :

A partir du corpus Thématique France, extraction des articles contenant les formes graphiques : sécurité, sécuritaire, etc.

Ci-dessous l’interface de cet extracteur :

 

MKCorpusLeMonde-Extracteur :

Ce programme prend en entrée un corpus thématique du journal Le Monde et un motif (une expression régulière) et il extrait tous les articles contenant le motif : le format en sortie est compatible avec Lexico3.

Mode d’emploi :

Ce programme existe sous 2 formes :

perl MKCorpusLeMonde-Extracteur -at  repOut corpus queryString

Le script doit être lancé avec 2 paramètres et une option complémentaire :

o      L’option –at permet de re-diriger les sorties vers le répertoire repOut

o       Les paramètres à utiliser sont :

Corpus

 Le nom du corpus thématique utilisé

queryString

 le motif à rechercher dans les articles à conserver

 

INPUT :

Le corpus thématique (i.e. correspondant à une rubrique donnée) est issu de la chaîne de traitement présentée dans ce document. Pour charger ce corpus, utiliser le bouton "browse" puis sélectionner le corpus thématique souhaité. Le corpus en entrée contient un balisage propre à son utilisation avec Lexico3. Ce balisage tient compte essentiellement de l'aspect  chronologique du corpus. On y trouve donc en général des balises du type ANNEE, MOIS, SEMAINE, DATE, PAGE (cette dernière balise correspondant en fait aux articles). Les valeurs des balises précédentes correspondent aux périodes temporelles associées aux parties du corpus visées. Ce balisage est maintenu par l'extracteur : le corpus en sortie aura une structure similaire.

 

FILTRE :

Les filtres permettent de sélectionner des articles (dans le corpus thématique) contenant une chaîne de caractère correspondant au filtre écrit. Un filtre est écrit sous la forme d'une expression régulière.

Ce motif permet de rechercher tous les mots qui commencent (\b) par la chaîne de caractères 'sécurit' (peu importe la casse) suivie d’une répétition de un à 'une infinité' de n'importe quel caractère compris entre a et z avant la fin du mot (\b). Les mots couverts par ce motif sont par exemple : sécurité, sécurités, sécuritaire etc.

 

OUTPUT :

Le corpus obtenu à l'issue de l'extraction contient tous les articles du corpus initial contenant le motif décrit par le filtre. Ce corpus en sortie est compatible avec le format de fichier pour Lexico3. De plus, il est possible de relancer le processus d'extraction sur ce fichier pour par exemple affiner le processus de filtrage des articles. Les corpus issus du processus d'extraction sont horodatés, il est conseillé cependant de leur donner un nom plus précis.

 

3.1.8.4      Extracteur de corpus complet avec filtrage de formes

Un script Perl/Tk permet d’extraire une sous-partie du corpus complet en ne conservant que les articles contenant un motif donné (exprimé là encore par une expression régulière permettant de sélectionner une famille de mots).

Même principe que le précédent.

Nom du programme : MKCorpusLeMonde-Extracteur-complet.

3.1.8.5      Générateur de corpus Thématique (dit version v2)

Même principe que ci-dessus.

3.1.8.6      Générateur de corpus Thématique (dit version v2) avec filtrage de formes

En cours de développement

3.1.8.7      Extracteur de corpus Thématique (dit version v2) avec filtrage de formes

Même principe que ci-dessus.

3.1.8.8      Extracteur de corpus complet (dit version v2)  avec filtrage de formes

En cours de développement

 


 

3.1.9       Query

Un moteur de requête qui permet pour le moment de lancer des requête sur un des états du corpus

Cette page donne accès à un moteur de requête sur la version XML du corpus. Le détail des outils mis en place dans ce moteur est détaillé infra. Ce moteur permet de lancer 2 types de requêtes :

 

 

 

Les données utilisées à ce jour dans ce moteur sont constituées de 2 fichiers au format XML, le premier couvre la période suivante : du 12 avril 2003 au 10 décembre 2003 et du 14 décembre 2003 au 25 janvier 2004. Ces deux fichiers font respectivement 90 Mo et 55 Mo.

Des tests ont été opérés pour mesurer les temps de traitement nécessaires pour travailler sur ces données volumineuses dans le contexte web mis en place actuellement :

 


 

3.1.10     SEARCH

 

Cet item donne accès à une page de formulaire permettant de lancer des requêtes (moteur de recherche) sur le corpus original "HTML simplifié et sans image". Ce processus de recherche prend appui sur le moteur d'indexation swish-e[5] qui est paramétré pour indexer l'ensemble des pages HTML du corpus original. L'image qui suit montre le résultat d'une requête sur la recherche du mot "laïcité".

 

 


 

4        Chaînes de traitement

4.1       Récolte des données

Le journal Le Monde met à la disposition de ses abonnés à la version électronique du journal différentes versions électroniques du journal : une version au format PDF et 2 versions au format HTML (une avec image et l'autre sans). La version PDF et la version HTML sans image sont récupérées sur le site du journal quotidiennement et stockées sur disque. Seule la version HTML simplifiée est traitée par la chaîne de traitement décrite infra.

4.2       Préparation et manipulation des données

Après récupération, chaque version quotidienne est soumis à différentes manipulations.

4.2.1       Traitements automatiques

Des scripts Perl ont été construits pour réaliser en plusieurs étapes différentes opérations :

4.2.2       Traitements manuels

Chaque version quotidienne du corpus au format Lexico3 est insérée dans les corpus de chronologique complet de référence (corpus complet, corpus France, corpus INTERNATIONAL). Certaines balises sont ajoutées pour marquer le changement de semaine, de mois ou d'année.

Un programme se charge ensuite d'insérer la balise RUBRIQUE dans le corpus complet au format Lexico3.

Cette étape de préparation des données n'est pas réalisée quotidiennement, mais en général une fois par semaine (en fin de semaine).


 

4.3       Synthèse des traitements :

 

Phase n°0

 

Récupération des données sur le site du Monde.fr

 

Phase n°1

load-webxref.pl

Lancement de la normalisation WEBXREF

load-makeCorpusL3-date.pl

Génération de corpus quotidien XML et pour L3

Index des mots

Phase n°2

load-makeAllThemaCorpus.pl

Génération des corpus thématiques (toutes rubriques confondues)

load-makeAllThemaCorpus-v2.pl

Génération des corpus thématiques (toutes rubriques confondues) (v2)

load-makeThemaCorpus.pl

Génération des corpus thématiques "France" et "International"

load-makeThemaCorpus-international-v2.pl

Génération du corpus thématique "International" (v2)

load-makeThemaCorpus-france-v2.pl

Génération du corpus thématique "France" (v2)

load-makeThemaCorpus-societe.pl

Génération du corpus thématique "Société"

load-makeThemaCorpus-societe-v2.pl

Génération du corpus thématique "Société" (v2)

load-makeThemaCorpus-select.pl

Génération de corpus thématique à la volée

load-makeThemaCorpus-select-v2.pl

Génération de corpus thématique à la volée (v2)

Phase n°3

 

"Rebalisage" manuel ou automatique des corpus produits

 

Phase n°4

 

Traitements lexicométriques

 

4.4       Traitements lexicométriques

A l'issue de l'étape précédente, on dispose quotidiennement d'un état du corpus prêt pour être analysé par Lexico3.


 

4.4.1       Exemple de rapports construits avec Lexico3

On présente ici un rapport[6] construit sur le corpus complet avec indication de rubriques sur la période du 12 avril 2003 au 25 janvier 2004.

Cette première page donne une présentation générale de caractéristiques du corpus et un point d'entrée vers les résultats construits :

 

Principales caratéristiques lexicométriques

Nombre des occurrences

20814181

Nombre des formes

236878

Fréquence maximale

1054349

Nombre des hapax

95427

 

Principales caractéristiques de la partition : DATE

Spécifs - Part : DATE Parties sélectionnées : "040125", (1)

Graphique de ventilation pour la partition : MOIS (1)

Graphique de ventilation pour la partition : MOIS (2)

Graphique de ventilation pour la partition : MOIS (3)

Graphique de ventilation pour la partition : MOIS (4)

Graphique de ventilation pour la partition : MOIS (5)


 

4.4.1.1      Principales caractéristiques de la partition : DATE

 

 


 

Partie

Nb occurrences

Nb formes

Nb hapax

Fréq. Max

Forme

"030412"

112381

15126

8431

5810

de

"030413"

89082

13106

7320

4397

de

"030415"

99958

13044

7056

5078

de

"030416"

81067

12451

6982

4072

de

"030417"

72207

11741

6719

3498

de

"030418"

107672

15277

8499

5678

de

"030419"

99999

14715

8319

4614

de

"030420"

72675

11453

6375

3762

de

"030422"

54165

10057

6006

2669

de

"030423"

97590

13814

7679

4842

de

"030424"

74333

11761

6686

3814

de

"030425"

92763

14517

8247

4897

de

"030426"

93498

13941

7935

4708

de

"030427"

66391

11151

6411

3468

de

"030429"

100283

13112

7051

5100

de

"030430"

69765

11045

6198

3563

de

"030501"

98056

14705

8307

5004

de

"030503"

92861

13770

7733

4552

de

"030504"

80813

12136

6734

4125

de

"030506"

100027

13820

7759

5119

de

"030507"

81589

12653

7015

4283

de

"030508"

75886

12345

7054

3916

de

"030509"

88439

14165

8216

4527

de

"030510"

109317

14889

8280

5723

de

"030511"

68223

10795

6054

3485

de

"030513"

103051

13630

7437

5411

de

"030515"

101227

14182

8130

5182

de

"030516"

101761

14485

8217

5194

de

"030517"

99793

14218

7774

5065

de

"030518"

78494

12044

6733

4047

de

"030520"

96383

12977

7032

4772

de

"030521"

80838

12374

6924

4003

de

"030522"

81813

12312

6954

4098

de

"030523"

113852

15895

8935

5748

de

"030524"

107205

14783

8406

5270

de

"030525"

77704

11716

6650

3977

de

"030527"

104251

13356

7320

5162

de

"030528"

88341

12957

7299

4616

de

"030529"

76832

12359

7094

3858

de

"030530"

80979

13307

7654

4046

de

"030531"

109412

14862

8352

5275

de

"030603"

116495

14083

7613

5799

de

"030605"

80288

11430

6311

4140

de

"030606"

119069

16655

9402

5836

de

"030607"

105537

14628

8230

5221

de

"030608"

67059

10991

6322

3321

de

"030610"

54493

9684

5628

2741

de

"030611"

110572

14129

7646

5505

de

"030612"

78243

12733

7363

3916

de

"030613"

101523

15187

8584

4989

de

"030614"

101602

14337

8007

5158

de

"030615"

76090

11819

6672

3826

de

"030617"

98870

13461

7330

5026

de

"030618"

82917

12303

6882

4263

de

"030619"

84585

12517

6922

4348

de

"030620"

105921

15254

8488

5377

de

"030621"

108032

15285

8617

5542

de

"030622"

85385

12618

7061

4236

de

"030624"

106686

14365

7912

5554

de

"030625"

79273

12328

6932

4224

de

"030626"

75699

11918

6773

3965

de

"030627"

102711

15086

8589

4869

de

"030628"

110907

14859

8176

5382

de

"030629"

72509

11456

6435

3801

de

"030701"

108993

14438

7868

5790

de

"030702"

86314

12977

7283

4493

de

"030703"

76492

11884

6758

3812

de

"030704"

116897

16261

9159

5936

de

"030705"

109022

15175

8508

5668

de

"030706"

78467

11735

6567

4031

de

"030708"

101853

13748

7539

5003

de

"030709"

83935

12668

7049

4068

de

"030710"

78022

12204

6696

3795

de

"030711"

108573

15424

8605

5696

de

"030712"

104031

14816

8332

5269

de

"030713"

56727

10011

5759

2785

de

"030715"

57836

10087

5819

2886

de

"030716"

60139

10086

5728

2959

de

"030717"

55583

10211

6050

2720

de

"030718"

87642

13973

8094

4492

de

"030719"

72843

12209

7041

3436

de

"030720"

105483

15536

8693

5190

de

"030723"

49936

9409

5584

2515

de

"030724"

44405

8604

5091

2384

de

"030725"

90489

15164

8836

4566

de

"030726"

80010

12458

7197

4129

de

"030727"

54995

10293

6063

2581

de

"030729"

50450

9511

5610

2482

de

"030730"

55655

10362

6185

2952

de

"030731"

51209

10063

6046

2587

de

"030801"

53006

9770

5715

2721

de

"030802"

71026

12127

7053

3619

de

"030803"

48812

9864

5985

2378

de

"030805"

49721

9234

5385

2542

de

"030806"

52703

9712

5654

2710

de

"030807"

48581

9695

5690

2566

de

"030808"

50972

9849

5864

2597

de

"030809"

77070

13008

7653

3820

de

"030810"

46052

9588

5839

2309

de

"030812"

51118

9690

5750

2479

de

"030813"

44908

9105

5504

2261

de

"030814"

42737

8800

5314

2156

de

"030815"

47763

9039

5264

2524

de

"030816"

70527

12222

7318

3537

de

"030817"

49631

9431

5553

2401

de

"030819"

50177

9744

5871

2565

de

"030820"

45334

8767

5123

2480

de

"030821"

58495

9889

5680

2903

de

"030822"

85101

13249

7849

4045

de

"030823"

79258

12953

7671

3658

de

"030824"

53209

10138

6020

2536

de

"030826"

57359

10038

5701

2836

de

"030827"

57430

9831

5645

2907

de

"030828"

58130

9724

5372

2858

de

"030829"

89198

14100

8237

4283

de

"030830"

85353

12512

7146

4195

de

"030831"

52441

9857

5896

2601

de

"030902"

97194

12709

6842

4970

de

"030903"

74363

11459

6352

4064

de

"030904"

70755

11339

6439

3742

de

"030905"

106138

14515

8013

5599

de

"030906"

102418

13743

7568

5250

de

"030907"

74382

11059

6127

3826

de

"030909"

101656

12918

6911

5102

de

"030910"

77427

11875

6671

4056

de

"030911"

74630

12031

6873

4054

de

"030912"

162277

19607

10648

8018

de

"030913"

107828

14859

8273

5165

de

"030914"

90484

12868

7007

4723

de

"030916"

101760

13187

7133

5110

de

"030917"

74875

11525

6502

3980

de

"030918"

77892

11894

6672

4071

de

"030919"

100693

14702

8326

5137

de

"030920"

100292

14049

7819

5273

de

"030921"

102639

14586

8211

4948

de

"030923"

104638

13823

7602

5442

de

"030924"

82413

12257

6833

4315

de

"030925"

78846

11721

6570

4155

de

"030926"

106739

15093

8408

5231

de

"030927"

120516

16544

9258

5598

de

"030928"

73380

11356

6387

3906

de

"030930"

110095

15568

8739

5635

de

"031001"

85954

13032

7277

4473

de

"031002"

72540

11816

6779

3792

de

"031003"

104784

14584

7990

5457

de

"031004"

118509

16419

9112

5750

de

"031005"

74972

11851

6638

3757

de

"031007"

99443

13407

7323

5120

de

"031008"

81500

12698

7219

4295

de

"031009"

111183

14759

8382

4937

de

"031010"

118191

16132

9074

6155

de

"031011"

112323

15098

8362

5362

de

"031012"

83159

12568

6998

4189

de

"031014"

108584

13802

7402

5527

de

"031015"

89974

12988

7173

4692

de

"031016"

87704

13224

7487

4566

de

"031017"

111048

15410

8673

5566

de

"031019"

79706

12460

7018

3804

de

"031021"

108752

14489

7915

5540

de

"031022"

88478

12909

7237

4799

de

"031023"

87386

12622

7144

4271

de

"031024"

113844

15792

8779

5798

de

"031025"

110937

14962

8201

5285

de

"031026"

78315

12242

6875

3933

de

"031028"

102141

13684

7543

5294

de

"031029"

79568

12585

7093

3949

de

"031030"

81861

12422

7028

4190

de

"031031"

104513

14953

8389

5357

de

"031101"

105643

14944

8345

5025

de

"031102"

52445

10058

5924

2804

de

"031104"

104633

13677

7388

5374

de

"031105"

68685

11586

6697

3629

de

"031106"

81071

12225

6834

4172

de

"031107"

111285

15798

8900

5393

de

"031108"

105463

14506

8075

5059

de

"031109"

85302

12804

7195

4203

de

"031111"

102156

13684

7421

5365

de

"031112"

75596

11807

6603

3919

de

"031113"

76967

12120

6963

4029

de

"031114"

98389

14687

8299

5095

de

"031115"

94928

13958

7907

4656

de

"031116"

79363

12293

6986

4015

de

"031118"

116019

14637

7980

5824

de

"031119"

93895

14319

8269

5182

de

"031120"

91477

13681

7683

4637

de

"031121"

113437

15612

8734

5781

de

"031122"

101338

14520

8189

5324

de

"031123"

74021

11946

6728

3822

de

"031125"

103589

13269

7153

5482

de

"031126"

92825

13686

7601

4729

de

"031127"

96573

13996

7866

4567

de

"031128"

119165

15942

8916

5919

de

"031129"

103244

14560

8111

5128

de

"031130"

77452

11781

6574

3975

de

"031202"

107238

14011

7612

5185

de

"031203"

85134

12561

6955

4459

de

"031204"

87123

13786

7815

4534

de

"031205"

202201

21222

11358

9725

de

"031206"

103145

14363

8039

5102

de

"031207"

80957

12462

6924

3924

de

"031209"

99729

13748

7600

4922

de

"031210"

98224

13067

7006

4908

de

"031211"

75428

11958

6777

3890

de

"031212"

127029

16830

9224

6392

de

"031213"

97819

13355

7501

4823

de

"031214"

78778

11931

6685

4015

de

"031216"

115673

14392

7782

5822

de

"031217"

83939

12319

6824

4590

de

"031218"

78089

12139

6878

4423

de

"031219"

114529

15814

8842

5951

de

"031220"

93323

14222

8117

4728

de

"031221"

57030

10482

6163

2858

de

"031223"

53027

9641

5607

2659

de

"031224"

58348

10807

6338

2801

de

"031225"

56074

9748

5627

2948

de

"031226"

48958

8914

5167

2723

de

"031227"

69290

12095

7216

3531

de

"031228"

67983

11292

6555

3634

de

"031230"

52642

9643

5658

2753

de

"031231"

56048

10202

5949

2902

de

"040101"

54360

9808

5697

2819

de

"040102"

43396

8433

4950

2319

de

"040103"

74000

12422

7277

3571

de

"040104"

66877

10903

6181

3385

de

"040106"

101469

13654

7340

5380

de

"040107"

72926

11763

6670

3692

de

"040108"

71578

11586

6539

3795

de

"040109"

116952

16089

8768

6279

de

"040110"

103666

14322

7809

5028

de

"040111"

64191

10673

6092

3295

de

"040113"

94508

12995

7154

4644

de

"040114"

81149

12032

6757

4074

de

"040115"

75868

11762

6740

3984

de

"040116"

108921

15369

8623

5782

de

"040117"

95563

13872

7875

5036

de

"040118"

73335

11544

6397

3728

de

"040120"

112678

14965

8110

5839

de

"040121"

74214

11672

6513

3711

de

"040122"

80671

12290

6922

4166

de

"040123"

110148

15353

8556

5823

de

"040124"

110780

15333

8602

5284

de

"040125"

76958

11980

6659

3998

de


 


 

4.4.1.2      Spécifs - Part : DATE Parties sélectionnées : "040125"

 

On n'a conservé ici qu'un extrait du tableau construit

 


 

Forme

Frq. Tot.

Fréquence

Coeff.

banque

2464

106

***

donation

132

35

***

Johnny

604

68

***

Intenses

22

22

***

janvier

6981

150

***

Boudou

29

25

***

lentilles

44

26

***

Hallyday

282

50

***

packages

32

24

***

Song

107

30

48

fiscalement

46

24

47

patriotiques

52

25

47

2003

10899

158

45

Twombly

21

18

42

inexistante

65

24

42

tarifs

747

47

41

profils

128

28

41

Carmignac

76

24

40

Changer

59

22

39

Emergents

72

23

38

QUESTIONSà

67

22

37

exotisme

87

23

36

étudiés

92

23

36

désyndicalisation

23

16

35

inévitables

99

23

35

Eisner

54

20

35

courtiers

146

25

34

Joaquín

15

14

34

Montalvo

19

15

34

Cabrio

13

13

33

Soigneusement

20

15

33

Universal

1093

45

32

banques

2342

62

32

Vaconsin

15

13

31

aviaire

63

19

31

Immobilier

121

22

31

PT

183

25

31

fusions

189

25

31

clients

1442

48

30

Kay

107

21

30

services

5463

87

29

remanie

32

15

29

coûteux

196

24

29

Disney

408

30

29

Eva

200

24

29

matérielle

96

19

28

Frontières

92

19

28

Xiaonian

11

11

28

Culmell

11

11

28

Combien

225

24

28

épidémie

1048

40

27

calculées

49

16

27

Forza

99

19

27

spéculations

212

23

27

Nin

21

13

27

Maître

171

22

27

RS

16

12

27

Huchon

154

21

27

Jaime

45

15

26

Dicos

17

12

26

Sganzerla

10

10

25

grippe

217

22

25

montent

260

23

25

Singe

27

13

25

intempéries

67

16

25

 


 

 


4.4.1.3      Graphes de ventilation de formes :

 

Les formes examinées ici  sont : voile, laïcité, croix, kippa

 

Fréquences relatives :

 

 

 


Fréquences absolues :

 

 


Fréquences absolues :

 

 


Spécificités :

 

 

 

 


5        Le moteur de requête

Le moteur de requête en cours de développement reprend une application développée par John Udell[7] permettant de sélectionner et de récupérer les rubriques de son weblog classées thématiquement via l'utilisation d'une interface web utilisant des requêtes XPath[8].

 

 

 

 


 

6        Perspectives

 

6.1       Travaux en cours

 

Mise en place d’outils :

 

 

6.2       Travaux à mettre en place

 


 

7        Références bibliographiques

 


2001, Valérie Beaudouin, Serge Fleury, Benoît Habert, Gabriel Illouz, Christian Licoppe, Marie Pasquier, "TyPWeb : décrire la Toile pour mieux comprendre les parcours", CIUST'01, Colloque International sur les Usages et les Services des Télécommunications, e-Usages, Paris, 12-14 juin (Version PDF)


2001, Cédric Lamalle, William Martinez, Serge Fleury, André Salem, Andrea Kuncova, Aude Maisondieu, "Dix premiers pas avec Lexico3", Manuel d'utilisation abrégé (Version PDF), (Version HTML) (sur le site de Lexico)


2002, Valérie Beaudouin, Serge Fleury, Marie Pasquier, Benoît Habert, Christian Licoppe, "TyPWeb : décrire la Toile pour mieux comprendre les parcours. Sites Personnels et sites marchands", in RESEAUX, Volume 20, n°116/2002, "Parcours Sur Internet", pages 19-52, FT&RD/Hermès


 


8        Annexes

8.1       Expressions régulières[9]

Les expressions régulières (ou "expressions rationnelles", en anglais "regular expression" ou "regexes", "regexp", etc.) permettent de manipuler (recherche et remplacement) du texte en utilisant des caractères spéciaux, qui valent pour une classe de cas et non littéralement. Le langage de script Perl en offre le meilleur support, mais des éditeurs de textes courants permettent également de les utiliser.

Les regexes ne sont cependant pas un langage : elles ne peuvent pas faire de boucle, ou agir de façon conditionnelle. Le motif est générique mais statique. Elles sont surtout utiles dans des cas prévisibles et normalisés : paragraphe, ponctuation, encodage...

Il existe de nombreuses excellentes introductions aux expressions régulières et des documentations dans les logiciels qui les implémentent, dont une sélection est proposée ci-dessous ; on se limite ici à des introductions puis à des exemples avec trois environnements : Emacs (Windows / Linux), Textpad (Windows), et Perl. La syntaxe des expressions régulières peut varier très légèrement d'un éditeur ou d'un programme à l'autre, mais les fonctions restent les mêmes. Word n'est pas un éditeur de texte mais implémente un sous-ensemble des expressions régulières.

8.1.1       Liens et tutoriaux

Perl

Pour commencer : « Perl regular expressions quick start » :

http://Perldoc.com/Perl5.8.0/pod/Perlrequick.html

Le plus complet pour utiliser les regexes avec Perl :

“Perl regular expressions tutorial” :

http://Perldoc.com/Perl5.8.0/pod/Perlretut.html

Pour les références complètes, la page de manuel :

http://www.Perldoc.com/Perl5.8.0/pod/Perlre.html

“Perl Regular Expressions FAQ” :

http://Perldoc.com/Perl5.8.0/pod/Perlfaq6.html

Les chapitres "Expressions rationnelles" et "recherches de correspondances" de Programmation en Perl, Larry Wall et al., O'Reilly.

Emacs

La page d'aide d'Emacs « Syntax of Regular Expressions » est une très claire introduction

Traduite en français :

 http://www.linux-france.org/article/appli/Emacs/manuel/html/regexps.html

Textpad

L'aide du logiciel est satisfaisante si l'on a déjà une connaissance du principe des regexes.

Tutoriaux généraux

regexes orientées textes électroniques :

http://etext.lib.virginia.edu/helpsheets/regex.html

Regexes sur une page :

http://www.ciser.cornell.edu/info/regex.html

8.1.2       Présentation générale

Une expression régulière est un motif qui peut correspondre à une classe de chaîne de caractères et pas seulement à une chaîne de caractères littéralement. C'est elles que l'on utilise par exemple pour exprimer "tout fichier finissant par doc" avec *.doc.

Pour exprimer ces éléments génériques certains caractères sont réservés. (le * ci-dessus exprime ici "toute chaîne de n'importe quelle longueur", non un astérisque)

Les éléments réservés doivent être précédés d'un signe spécial pour être employés dans leur sens littéral. Par exemple, Pour rechercher un astérisque, il faut l'exprimer \*.

"\" est donc lui-même un caractère réservé, servant à exprimer le statut littéral ou pas de ce qui suit. Pour le chercher littéralement, il faut donc utiliser \\.

Les expressions régulières contiennent notamment des éléments pour exprimer, (1) des caractères littéralement, (2) des classes de caractères, (3) des quantificateurs qui peuvent qualifier les deux premiers groupes, et (4) des assertions positives ou négatives. Exemple pour chacune des catégories :

Tous les caractères sauf les caractères réservés représentent eux-mêmes, notamment les caractères alphanumériques. Les caractères sont a priori sensibles à la casse. L'expression Abc recherche littéralement la chaîne "Abc".

Des caractères entre crochets droits expriment une liste de choix : [aeiouy] = "un caractère parmi les 6 caractères a e i o u ou y". a vaut bien toujours littéralement pour "a", mais dans une classe constituée également d'autres éléments en relation d'alternative. [aeiouy]b trouvera donc "ab", "ib", mais pas "cb". Pour éviter des listes de caractères trop longues, on peut utiliser un tiret : [a-z] = tout caractères entre "a" et "z" (tout alphabétique minuscule), [0-9] tout numérique, [A-Za-z0-9] tout alphanumérique. Ces listes sont cumulables : [0-35-9] recherche tout numérique sauf "4".

Les quantificateurs s'appliquent à une classe ou une chaîne littérale. Par exemple [aeiouy]+ signifie "une ou plusieurs voyelles de suite", [aeiouy]* zéro ou plusieurs, [aeiouy]? zéro ou une ; [aeiouy]{5} signifie "exactement 5 voyelles de suite". Ainsi [aeiouy]+c peut correspondre à "aiec", "ac", mais pas à "adc".

Des assertions peuvent modifier des classes ou ancrer des chaînes. Par exemple le circonflexe permet de nier le contenu entre crochets droits : [^aeiouy]+ signifie "un ou plusieurs caractères de suite qui n'est pas a e i o u ou y". [ae]$ signifie un a ou un e (minuscule) en fin de paragraphe (juste avant un retour chariot).

8.1.3       Présentation complémentaire

 

1. Recherche littérale — Les expressions régulières permettent de rechercher des caractères littéralement : les caractères sont désignés par le symbole correspondant, a recherche le caractère "a", etc. Des caractères "non visibles" comme le retour chariot, la tabulation, etc. peuvent être désignés littéralement par un caractère spécial : \n pour le retour chariot et \t pour la tabulation. L'anti-slash forme un seul symbole avec le caractère qui suit, qui ne vaut plus littéralement pour un "n" ou un "t". L'anti-slash lui-même n'est pas l'équivalent littéral du caractère "\". Pour désigner un anti-slash littéralement, il faut le faire précéder lui même d'un anti-slash : \\ recherche "\". Les "méta-caractères" de cette sorte sont généralement \, ., *, ?, +, ^, $, {, |, (, ), et }, dont on voit ci-dessous le sens spécial ; pour les utiliser littéralement il faut donc utiliser \\, \., \*, \?, \+, \^, \$, \{, \|, \(, et \). L'anti-slash permet d'interpréter un méta-caractère comme un caractère littéral, mais également de donner un sens spécial à des caractères littéraux, comme \n ou \t.

 

2. Classes d'éléments — Les expressions régulières permettent également de ne pas faire correspondre les élément un à un, mais de faire correspondre une liste de possibilités à un élément.

a/ Une classe de caractères en alternative est désignée entre crochets : [aeiouy] recherche une occurrence d'une voyelle : elle trouvera deux éléments dans "soir". — Pour ne pas écrire de longue suite de caractères, on peut spécifier des plages avec le tiret : [0-9] recherche tout caractère numérique, [a-z] toute lettre en minuscule, [A-Za-z0-9] recherche tout caractère alphanumérique. Il faut noter que les plages de caractères sont basées sur l'ASCII, il faut donc ajouter les caractères qui n'en font pas partie, comme les caractères accentués : [a-zéèàùâêîôûäëïöüçA-ZÉÈÀÙÂÊÎÔÛÄËÏÖÜÇ0-9] pour être (presque) exhaustif. Mais, par chance, on peut alors utiliser le point . qui vaut pour tout élément sauf le retour chariot (\n). [aeiouy]. trouvera "az", "aa", "a!" mais pas "a" ni "ba".
Pour mettre un tiret littéralement parmi les éléments en alternative, il faut le mettre en premier dans la liste : [-,;] recherche un tiret, une virgule ou un point virgule (pour "]" utiliser l'antislash : [-\]]). — Les méta-caractères perdent leur sens particulier dans une expression entre crochets.

b/ Des symboles spéciaux permettent de désigner les classes les plus souvent utilisées, par exemple en Perl \w = word, tout caractère de mot (alphanumériques plus '_'), \d = digit ([0-9]), \s tout caractère blanc (= [ \t\n\r\f], soit espace, tabulation, saut de ligne, retour chariot, saut de page) ; lesquels peuvent être inversés \W = tout caractère non-mot, \D = tout non numérique, \S tout caractère autre que blanc, etc. (cf la page de manuel Perl : http://www.Perldoc.com/Perl5.8.0/pod/Perlre.html#Regular-Expressions) — Autres familles de classes, du type : [:alnum:] par exemple pour tout alphanumérique ([A-Za-z0-9])

c/ L'alternative entre des éléments de plusieurs caractères est exprimée par |, et s'applique aux éléments entre parenthèses : (oui|non) permet de rechercher "oui" ou "non". Avec les crochets, le contenu est évalué comme une liste de caractères, ainsi l'alternative | est inutile : [truc|tric] = [truci] — le caractère ^ en début de plage permet d'indiquer une assertion négative : [^a-z] recherche tout ce qui n'est pas un alphabétique minuscule.

 

3. Quantifieurs — Possibilité de préciser le nombre d'occurrences d'un élément (un caractère littéral, ou une classe d'éléments en alternative, ou une chaîne de caractères entre parenthèses). Les principaux quantificateurs sont ? (0 ou 1 fois), + (1 ou plusieurs fois), * (0 ou plusieurs fois). On peut également spécifier une plage d'occurrence : [aeiouy]{3,5} désigne toute suite de entre 3 et 5 voyelles. Si le second caractère n'est pas spécifié, il vaut pour l'infini : [0-9]{5,} recherche au moins 5 numériques de suite. On voit que ? = {0,1}, + = {1,} et * = {0,}. Une valeur seule entre accolades exige une valeur exacte : a{5} recherche exactement 5 "a" de suite.
Les quantificateurs s'appliquent à la dernière unité syntaxique les précédents. non{5} trouvera "nonnnnn" mais non pas "nonnonnonnonnon" pour cela il faut écrire (non){5}
Note : Les expressions rationnelles sont par défaut avides : dans "abbb", ab+ trouvera "abbb" et non "ab". Si on veut éviter ce comportement, on peut utiliser la négation : <[^>]+> par exemple pour ne pas prendre le début d'une balise et la fin de la dernière balise sur la même ligne. Avec Perl, on peut également préciser au quantificateur de chercher la séquence minimale en ajoutant "?" : +?, *? et {1,5}? cherche donc la première correspondance.
D'autre part une expression rationnelle cherche l'expression dès que possible, et s'arrête dès que les conditions sont satisfaites même si une correspondance plus loin serait plus complète. Aussi y* trouve un motif vrai dès le premier caractère de "xyz", puisqu'il peut correspondre à une chaîne nulle.

 

4. Référence — Les parenthèses permettent de hiérarchiser les membres d'une alternative (cf. 2), et de regrouper une chaîne de caractères en un élément (cf. 3), mais servent également à mettre en mémoire le résultat. Ce qui permet par la suite de faire référence au contenu d'une expression entre parenthèses à l'aide de \1 (pour désigner le contenu d'une première parenthèse dans l'expression de recherche), \2 (pour désigner le contenu d'une seconde), etc. Ainsi  ([^ ]+) \1 recherche un mot répété : un blanc, toute suite d'au moins un caractère qui n'est pas un blanc, un blanc, et la même suite de caractères. Les références de cette sorte sont également utiles pour remplacer : faire référence dans l'expression de remplacement au contenu trouvé dans l'expression de recherche : remplacer ([0-9]+)([a-zA-Z]+) par \1 \2 permet par exemple d'ajouter un espace entre une suite de numériques et une suite d'alphabétiques. Remplacer ([a-z])([;:\?!]) par \1 \2 ; permet d'ajouter un espace entre la fin d'un mot et les signes de ponctuation qui demandent cet espace. (anti-slash avant le ? pour lui faire rechercher le caractère "?", puisque c'est un caractère réservé).

 

5. Assertion — De nombreuses expressions permettent d'inclure des assertions, qui ne correspondent pas à un élément à rechercher mais indiquent par exemple que l'expression commence en début de ligne (^) ou en fin de ligne ($), etc. Ces assertions sont la partie la plus variable des expressions régulières entre les différents logiciels, il faut se reporter à la documentation correspondante.

 

 

 

 

 

 

 

 

 

 

 

 

                                                    



[1] http://www.lemonde.fr/

[2] La version HTML traitée ici est celle dite "simplifiée (sans image de la une et sans menu déroulant)"

[3] Ces outils sont disponibles sur la page du projet http://sfmac.no-ip.com

[4] Voir en annexe pour une présentation rapide des expressions régulières

[5] http://swish-e.org

[6] http://www.cavi.univ-paris3.fr/ilpga/ilpga/tal/lexicoWWW/rapportsL3/lemonde/23/index.htm

[7] http://udell.roninhouse.com

[8] http://udell.infoworld.com:8000/?//blocquote[@cite='infoWorld']

[9] Ce texte est extrait d’une page écrite sur le web par sloiseau@u-paris10.fr (27 Octobre 2003)