Extraction des phrases contenant une structure donnée

Fermé
fp - 16 févr. 2015 à 22:23
 fp - 5 mars 2015 à 13:40
Bonjour,
Je voulais savoir si qq1 pourrait m'aider à faire un code PERL pour un corpus (déjà annoté) depuis lequel je voudrais extraire uniquement les phrases qui ont la structure VB (le mot) pui AA (le mot).
Ca concerne un corpus de l'ourdou ou le VB désigne le verbe et le AA l'auxiliaire aspectuel. Par exemple:
???|KP ??|VB ???|AA ??|PP ????????|NN ???|PN ??|PN ???|NN
????|NN ?|


1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
19 févr. 2015 à 10:47
Bonjour fp,

Dans ta ligne d'exemple :

???|KP ??|VB ???|AA ??|PP ????????|NN ???|PN ??|PN ???|NN
????|NN ?|

- que représentent les
???
et
??
qui suivent l'espace après
VB
et
AA
, est-ce
???
pour 3 caractères et
??
pour 2 caractères, ou est-ce que cela peut être autre chose ?
- les lettres
VB
et
AA
sont-elles toujours immédiatement précédées de
|
?
- les lettres
VB
et
AA
sont-elles toujours immédiatement suivies d'un espace
- l'ensemble formé par
|VB ???|AA ??|
doit-il toujours être consécutif sur la ligne, ou le
|VB ???
et le
|AA ??|
peuvent-ils se trouver séparés

Dal
0
Merci de répondre, en effet le corpus sagit d'un texte annoté par des partis du discours ( |VB). Il sagit de l'ourdou qui s'écrit de droite à gauche et donc le texte se trouve à gauche de | . Les ??? Represente le texte ourdou mais ici il reconnait pas le code de la langue (utf-8). Il y a un espace après chaque étiquette, soit la sequence suivante: . Texte |TA texte |Aa texte |VB etc. Je recherche que les phrase qui ont au moins une fois le AA.
Merci
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
19 févr. 2015 à 13:30
je ne suis pas linguiste, alors j'aurais apprécié que tu répondes à mes différentes questions précises, qui sont volontairement indépendantes de la compréhension du contexte.

tu dis désormais " Je recherche que les phrase qui ont au moins une fois le AA."

c'est différent de ce que tu disais dans ton post initial, où tu disais : "je voudrais extraire uniquement les phrases qui ont la structure VB (le mot) pui AA (le mot)"

si ce que tu veux c'est vérifier, pour une ligne donnée, si elle contient "|AA " (barre verticale puis AA, puis espace), tu peux le faire, par exemple comme cela :

#!/usr/bin/perl

use strict;
use warnings;

my $st = "xxx|KP xx|VB xxx|AA xx|PP xxxxxxxx|NN xxx|PN xx|PN xxx|NN xxxx|NN x|";

if ($st =~ /\|AA /) {
    print "match: $st\n";
}


Le caractère
|
est échappé car il a une signification particulière dans la regexp (il signifie "ou").

Le
|
et l'espace sont à utiliser s'il faut éviter de matcher accidentellement AA utilisé autrement (dans les xxx, par exemple, ou ailleurs sous une forme ou une autre). Si ce risque n'existe pas, tu peux juste matcher AA comme cela :
if ($st =~ /AA/) {
sans rien d'autre.

Si tu veux autre chose, stp exprime le en disant très exactement ce que tu veux matcher.

Dal
0
fp > [Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024
19 févr. 2015 à 13:53
Désolé de t'avoir expliquer vaguement.
Alors, oui, je voudrai en effet extraire toutes les phrases qui ont au moins une fois AA (car dans mon corpus, le AA apparaît essentiellement après le VB) en modifiant les choses suivantes: suppression de tous les saut de ligne et rajoutant un saut de ligne après une étiquette |SM (comme cette étiquette marque la fin de phrase).
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
19 févr. 2015 à 14:24
peut-tu donner un exemple de "phrases" constituant des données de départ et un exemple de ce que tu veux obtenir en sortie.

tes "phrases" de départ sont dans un tableau, dans une variable comportant des retours à la ligne, ou traites tu ligne par ligne un fichier ?
0
fp > [Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024
Modifié par fp le 19/02/2015 à 14:42
???|KP ??|VB ???|AA ??|PP ????????|NN ???|PN ??|PN ???|NN
????|NN ?|SM (lecture de droite à gauche)
(Je ne sais pas pourquoi les mots apparaits en car ?, je suppose que ? signifie un caractère. Ce sont des lettre du block arabe).

Mon corpus a plusieurs phrases (5.4 millions) mélanger (défois l'étiquette AA n'est pas présent). Ce que je voudrai faire, c'est de extraire en sortie à partir du corpus les phrases qui ont l'étiquette AA.

Mes phrases sont en texte brut dans un fichiers et je voudrai faire une mise en forme en supprimant les saut de ligne et ajouter un saut de ligne après chaque SM, l'étiquette qui permet de distinguer la fin de phrase.
Merci
0