EXERCICE 13:Extraction dans les Fils RSS du Monde
Fichiers de travail : rubrique « A la Une » 2017 étiquetée avec
treetagger
1.Partie : XSLT
Enoncé 1:Construire une feuille de styles pour afficher les contenus étiquetés avec TreeTagger
3208.XML
13_1_1.xsl
Enoncé 2: Construire des feuilles de style pour extraire (au format TXT) au moins 3 patrons morphosyntaxiques
(de longueurs différentes) sur les mêmes fichiers
3208_13_1_2.xml
13_1_2.xsl
Enoncé 3: Construire une feuille de styles pour afficher les contenus étiquetés avec TreeTagger en
mettant au jour un patron morphosyntaxique. Ci-dessous le patron NOM ADJ :
3208_13_1_3.xml
13_1_3.xsl
1.Partie : XQuery (via BASEX)
Enoncé 1:Construire une requête pour extraire les contenus textuels des titres
Code XQuery:
{
for $title in doc("echantillon.xml")//item/title
let $a := string-join($title//element/data[3], " ")
return {$a}
}
xquery_1_1.xml
Enoncé 2:Construire une requête pour extraire les contenus textuels des descriptions
Code XQuery: for $item in collection("echantillon.xml")//item/description
let $index := string-join($item//element/data[3], " ")
return {$index}
Résultat
Enoncé 3:Construire une requête pour extraire les contenus textuels des titres ET des descriptions
Code XQuery: for $document in doc("echantillon.xml")
for $item in $document//item let $titre:={$item//data[3]/text()} let $description:={$item/description//data[3]/text()} return [{$titre,$description}]
Résultat
Enoncé 4:Construire une requête pour extraire les patrons morpho-syntaxiques NOM ADJ
Code XQuery: {for $art in doc("echantillon.xml")//article for $a in $art/element let $b := $a/following-sibling::element[1] where $a/data[1] = "NOM" and $b/data[1] = "ADJ" return {$a/data[3]/text()," ",$b/data[3]/text()}}
Résultat
Enoncé 5:Construire une requête pour extraire les patrons morpho-syntaxiques NOM PRP NOM
Code XQuery: {for $article in doc("3208-2017.xml")//article for $element in $article/element let $nextElement := $element/following-sibling::element[1] let $nextElement2 := $element/following-sibling::element[2] where $element/data[1] = "NOM" and $nextElement/data[1] = "ADJ" and $nextElement2/data[1] = "NOM" return {$element/data[3]/text()," ",$nextElement/data[3]/text()," ",$nextElement2/data[3]/text()}}
Résultat
2.Partie : XSLT
Enoncé 1: Construire une feuille de styles pour afficher les contenus étiquetés des « titres »
uniquement
2.Partie : XSLT
Enoncé 1: Construire une feuille de styles pour afficher les contenus étiquetés des « titres »
uniquement
XML
XSLT
Enoncé 2:Peut-on envisager de construire une feuille de styles pour afficher chaque « titre » en regard
de sa « description » : par exemple un tableau avec 2 colonnes, à gauche les titres et à droite
les descriptions (un alignement en somme) ? si cela n’est pas possible directement, quel est
l’alignement minimal que l’on peut mettre en oeuvre ? Construire cet alignement minimal…
XML
XSLT
Enoncé 3: Construire des feuilles de style pour extraire (au format TXT) au moins 3 patrons morphosyntaxiques
(de longueurs différentes) sur les « titres » uniquement puis sur les
« descriptions » uniquement
XML
XSLT
Enoncé 4: Construire une feuille de styles pour afficher les contenus étiquetés en mettant au jour un
patron morphosyntaxique sur les « titres » uniquement puis sur les « descriptions »
uniquement
XML
XSLT
Enoncé 5: Construire une feuille de styles pour extraire (au format TXT) les items en relation de
dépendance syntaxique de type OBJ (les classer et les compter). Essayer de tenir compte de
la différence titre/description
XML
XSLT
Enoncé 5: Construire une feuille de styles pour extraire (au format TXT) les items en relation de
dépendance syntaxique de type OBJ (les classer et les compter). Essayer de tenir compte de
la différence titre/description
XML
XSLT
2.Partie : XQuery (via BASEX)
Enoncé 1: Construire une requête pour compter le nombre de titres, le nombre de descriptions.
Code XQuery: {
for $a in collection(talis_3208.xml)/basetalismane
let $titre := count($a/file/titre)
let $b := count($a/file/description)
return ({$titre}, {$b})
}
XML
Résultat
Enoncé 2: Construire une requête pour extraire les contenus textuels des « titres »
Code XQuery: {
for $corpus in collection(talis_3208.xml)/basetalismane/file/titre
let $a := string-join($corpus/p/item/a[2]/text(), " ")
return ({$a})
}
Résultat
Enoncé 3: Construire une requête pour extraire les contenus textuels des « descriptions »
Code XQuery: {
for $corpus in collection(talis_3208.xml)//description
let $a := string-join($corpus/p/item/a[2]/text(), " ")
return ({$a})
}
Résultat
Enoncé 4: Construire une requête pour extraire les contenus textuels des titres ET des descriptions
Code XQuery: {for $item in collection("echantillon.xml")//item
let $titre := string-join($item//titre/article/element/data[3]/text()," ")
let $description := string-join($item//description/article/element/data[3]/text(), " ")
return ({$titre},{$description} , "")}
Résultat
Enoncé 5: Construire une requête pour extraire au moins 3 patrons morpho-syntaxiques (de longueurs
différentes)
Code Patron 1 : for $p in collection("3246LT")//p
for $id1 in $p/item
let $id2 := $id1/following-sibling::item[1]
where $id1/a[4]="ADJ" and $id2/a[4]="NC"
return string-join(($id1/a[2], $id2/a[2]), " " )
Code Patron 2 : for $p in collection("3246LT")//p
for $id1 in $p/item
let $id2 := $id1/following-sibling::item[1]
let $id3 := $id1/following-sibling::item[2]
where $id1/a[4]="V" and $id2/a[4][contains(text(),"DET")] and $id3/a[4]="NC"
return string-join(($id1/a[2], $id2/a[2], $id3/a[2]), " " )
Code Patron 3 : for $p in collection("3246LT")//p
for $id1 in $p/item
let $id2 := $id1/following-sibling::item[1]
let $id3 := $id1/following-sibling::item[2]
let $id4 := $id1/following-sibling::item[3]
where $id1/a[4]="NC" and $id2/a[4][contains(text(),"P")] and $id3/a[4]="NC" and $id4/a[4][contains(text(),"P")]
return string-join(($id1/a[2], $id2/a[2], $id3/a[2], $id4/a[2]), " " )
Patron 1
Patron 2
Patron 3
Enoncé 6: Construire une requête pour extraire les items portant une relation de dépendance
syntaxique de type OBJ
Code Patron 3 : for $corpus in collection("talismane_3208.xml")//item
let $a := $corpus/a[2]/text()
where $corpus/a[8]="obj"
return $a
Résultat
Enoncé 7:Construire une requête pour extraire les items en relation de dépendance syntaxique de type
SUB (on affichera les formes ou les lemmes connectés par cette relation)
Code: {for $doc in collection("talismane_3208")//p
where $doc//a[contains(text(), 'sub')]
let $id := $doc/item[a="sub"]
let $sub := $id/a[2]/text()
let $rel := $id/a[7]/text()
let $token2 := $doc/item[a[1]= $rel]
let $gouv := $token2/a[2]/text()
return {$gouv} - {$sub}}<:corpus>
Résultat