océrisation et reformatage des données

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Wilfrid Car
Messages : 59
Enregistré le : 09 Avr 2015, 13:35

Re: océrisation et reformatage des données

Messagepar Wilfrid Car » 07 Juil 2015, 12:55

Bonjour, je reviens sur l'expression régulière suivante:

Code : Tout sélectionner

^[A-ZÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝYÆO][A-ZÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝYÆO | \"'\"]



```
premier caractère de chaque ligne *(^)* prenant comme motif les lettres capitales de A à Z *[A-Z]* ainsi que les capitales accentuées et ligatures .
Second caractère de chaque ligne prenant comme motif les lettres capitales de A à Z *[A-Z]* ainsi que les capitales accentuées et ligatures ou (|) une apostrophe \"'\".[/code]

Lorsque j'utilise un testeur en ligne, le backslash de l'apostrophe ne semble pas nécessaire. Pouvez vous bien me confirmer que sa présence dans R est là pour le distinguer des guillemets doubles?

Bien amicalement

Navarre Julien
Messages : 367
Enregistré le : 20 Avr 2012, 08:27

Re: océrisation et reformatage des données

Messagepar Navarre Julien » 07 Juil 2015, 13:12

Le backslash est le caractère d'échappement, ici c'est pour signifier que " n'est pas la fin de la chaine de caractère mais un caractère de cette chaine.
Pareil pour si tu veux utiliser des notations spéciales non reconnues par R (/s, /r, ...) tu dois les échapper pour que R n'essaye pas de les interpreter (et de renvoyer une erreur)

Essaye sans tu verras ce que R te réponds !

Wilfrid Car
Messages : 59
Enregistré le : 09 Avr 2015, 13:35

Re: océrisation et reformatage des données

Messagepar Wilfrid Car » 07 Juil 2015, 13:26

Ok, merci, cela me reprécise mieux les choses!
Deux remarques:
- Existe-il un testeur en ligne pour les Regex Perl?
- Je cherche à isoler les noms des artistes. Je pensais d'abord utiliser les parenthèses mais tous les artistes ne voient pas leur prénom mentionné
En revanche, le nom des artistes correspond à tout ce qui précède un tiret suivi d'un blanc suivi d'un nombre (année de naissance)....mais je ne vois pas très bien comment procéder!

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: océrisation et reformatage des données

Messagepar Logez Maxime » 07 Juil 2015, 14:49

Bonjour,

tu peux essayer ça :

Code : Tout sélectionner

test <-"CH A LOT (Edouard) — 1930 — né à Paris. — 46, boulevard de"
gsub("(([A-Z]+ ?)+)( \\([A-Z].+\\))?( — \\d{4}.+$)", "\\1", test)
[1] "CH A LOT"
Cordialement,
Maxime

Wilfrid Car
Messages : 59
Enregistré le : 09 Avr 2015, 13:35

Re: océrisation et reformatage des données

Messagepar Wilfrid Car » 08 Juil 2015, 14:17

Bonjour,
Merci,
Désolé ne pas pouvoir encore évaluer la proposition précédente car je suis confronté au problème suivant:
Je cherche à supprimer toutes les mentions de prix.
l'expression régulière fonctionne très bien dans RegExr mais pas dans R
Je cherche à supprimer
les chaines de type 4.000 fr OU les chaines de type 650 fr

Code : Tout sélectionner

([0-9]+[\".\"][0-9]+\sfr)|([0-9]+\sfr)


et dans R...(sans résultat)

Code : Tout sélectionner

oeuvres2b <- oeuvres2[gsub"([0-9]+[\\".\"][0-9]+\\sfr)|([0-9]+\\sfr)", " ", oeuvres2)]


Je suis un peu perdu dans l'application des caractères d'échappement qui diffèrent...

Merci d'avance!

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: océrisation et reformatage des données

Messagepar Logez Maxime » 08 Juil 2015, 14:53

Bonjour,

Code : Tout sélectionner

x <- c("300 ", "4.000 fr", "650 fr", "400.000 fr", "4.000.000 fr")
gsub("((\\d+\\.)+)?\\d+ fr", "", x)
[1] "300 " ""     ""     ""     ""
Cordialement,
Maxime

Wilfrid Car
Messages : 59
Enregistré le : 09 Avr 2015, 13:35

Re: océrisation et reformatage des données

Messagepar Wilfrid Car » 08 Oct 2015, 11:48

Bonjour,
J'exhume les échanges portant sur l'usage des expressions régulières afin de traité des données textuelles provenant d'un texte océrisé;

Du point de vue méthodologique, il semble indispensable de nettoyer le texte, c'est à dire supprimer les tabulations (et les transformer en espaces) et les caractères spéciaux résultant de l'océrisation.
Le code proposé par Julien Navarre (cf ci-dessous) va dans ce sens mais inclus les deux points dans les caractères à supprimer.
D'où ma question: comment conserver certains caractères "spéciaux" au sein du texte?

Merci d'avance de m'aider à revenir sur ce point!

"Si tu ne veux pas garder tous les whitespaces mais que l'espace, comme je n'ai pas tout suivi mais je crois qui tu as voulu supprimer les tab par exemple : "

Code : Tout sélectionner

gsub("[^\\w'\" \"]", "", "•CHÉNÉ_ \n\t'9", perl = TRUE)
[1] "CHÉNÉ_ '9"

Wilfrid Car
Messages : 59
Enregistré le : 09 Avr 2015, 13:35

Re: océrisation et reformatage des données

Messagepar Wilfrid Car » 25 Oct 2015, 09:13

Bonjour à tous
J'exhume à nouveau les les échanges portant sur l'usage des expressions régulières afin de traité des données textuelles provenant d'un texte océrisé (salon des artistes indépendants 1930). Je fais à nouveau à vos conseils!


- Je suis en mesure d'importer des données textuelles dans R

Code : Tout sélectionner

salon_1930 <- readLines("clipboard" , encoding = "latin1")


- Je suis en mesure de rechercher des artistes (NOMS EN MAJUSCULES)

Code : Tout sélectionner

"^[A-ZÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝYÆOO][A-ZÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝYÆOO|\"'\"]"


- Je suis en mesure de rechercher des chaines littérales

Code : Tout sélectionner

"Paysage"



Voici ma question:

Est-il possible, à partir de recherches portant sur une désignation d’œuvres (toutes les paysages de ma liste par exemple), de joindre aux résultats la ligne précédent correspondant au nom de l'artiste (c'est à dire écrite en lettres capitales).
Le but étant d'obtenir des couples artistes/œuvres.

Merci d'avance!

Wilfrid



ADORYAN (Hélène) — 1930 — née à Budapest. — 16, rue Jacques-Callot. 6e. . . .
17 (Mathurin. — 1.000 fr.
18 Peinture. — 800 fr.
ADOUR (Pauline) — 1905 — née à Paris. — 19, rue Le Verrier, 6".
19 Peinture. — 2.000 fr.
20 Peinture. — 2.000 fr.
AGELASTO-BARBIER (Mme Gertrade) — 1928 — née à Paris. — 67, rue Dareau, 14e.
21 Portrait. — 1.800 fr.
22 Nature morte. — 1.800 fr.
AGUET (William) — 1920 — né à Paris — Suisse. — 52, rue de Courcelles, 8e.
23 Paysage. — 1.500 fr.
24 Paysage. — 1.500 fr.

Gabriel Terraz
Messages : 591
Enregistré le : 26 Sep 2011, 15:11

Re: océrisation et reformatage des données

Messagepar Gabriel Terraz » 25 Oct 2015, 09:49

Salut,
Tout dépend si tu veux garder les autres lignes mais ce n'est pas très compliqué.
Tu utiises rep pour trouver les lignes avec paysage et tu colles avec la ligné précédente :

gr <- grep("Paysage" , salon , )

Code : Tout sélectionner

En conservant que ces nouvelles lignes :
paste(salon[gr-1] , salon[rl])


En conservant les autres lignes :

Code : Tout sélectionner

gr <- grep("Paysage" , rl , )
salon[gr-1] <- paste(salon[gr-1] , salon[rl])
salon <- salon[-gr]

Wilfrid Car
Messages : 59
Enregistré le : 09 Avr 2015, 13:35

Re: océrisation et reformatage des données

Messagepar Wilfrid Car » 25 Oct 2015, 10:50

Merci pour cette réponse matinale ! J'y avais pensé mais les artistes exposent en moyenne 2/3 oeuvres ce qui complique les choses...
Cordialement,
Wilfrid

Wilfrid Car
Messages : 59
Enregistré le : 09 Avr 2015, 13:35

Re: océrisation et reformatage des données

Messagepar Wilfrid Car » 02 Nov 2015, 15:50

Bonjour à tous,

Je cherche à extraire des noms et prénoms de ma liste

J'utilise l’instruction suivante pour les patronymes (fonction str_extract du package stringR)

Code : Tout sélectionner

artistes5 <- str_extract(artistes4, "[A-ZÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝYÆOO|\"'\"]{2,}")


Mon problème est qu'elle ne prend pas en charge les noms composés...peut-on l'améliorer?
Pensez vous également pouvoir m'aider à récupérer les prénoms?
merci d'avance!
Wilfrid


[1904] "SAIN DE HEERS Emilie 1907 née à Nanterre Seine 80 rue Taitbout 9"
[1905] "SAINRICE 1927 né à Gap HautesAlpes 34 me des Boulangers 5"
[1906] "SAINTANGE 1923 né à NeuillysurSeine 8 rue Meissonier 17e"
[1907] "SAINTDELIS René de 1905 né à SaintOmer PdeC Etretat SeineInférieure"

Alexandre Dangléant
Messages : 270
Enregistré le : 30 Mar 2010, 14:38

Re: océrisation et reformatage des données

Messagepar Alexandre Dangléant » 02 Nov 2015, 16:32

Bonjour,

Naïvement, je dirais :

Code : Tout sélectionner

gsub('(.+) [0-9]{4}.+', '\\1', artiste4)

L'idée est d’arrêter la capture à partir de la date, en excluant également l'espace.

Cordialement.

Wilfrid Car
Messages : 59
Enregistré le : 09 Avr 2015, 13:35

Re: océrisation et reformatage des données

Messagepar Wilfrid Car » 02 Nov 2015, 16:46

Bonjour et merci,
Cela fonctionne. Seul bémol: je ne comprend pas très bien l'expression régulière employée...

Alexandre Dangléant
Messages : 270
Enregistré le : 30 Mar 2010, 14:38

Re: océrisation et reformatage des données

Messagepar Alexandre Dangléant » 03 Nov 2015, 10:39

Bonjour,

C'est une des manières les plus simples, à mon sens, d'agir sur le texte quand tu arrives à déterminer des "amorces" récurrentes. Pour détailler pas à pas :

. = un caractère quelconque, cela inclus TOUT.
+ = indique que le type de caractère précédent (donc le .) se répète de 1 à l'infini, jusqu'à...
" " = ... l'apparition d'un espace suivi de... (note : je mets les guillemets pour désigner l'espace, mais ils n'y sont pas dans le gsub)
[0-9]{4} = 4 décimaux, strictement, puis...
.+ = ...d'un nombre indéterminé d'autres caractères quelconques, pour terminer la chaîne.

et les () servent à délimiter ce que tu captures dans le '\\1'. Note que tu peux faire plusieurs () et les désigner par 1, 2, 3 etc. Donc là j'indique que ce qui m'intéresse est tout ce qui précède l'espace et les 4 décimaux.

Pour ceux que cela intéresse, qq liens utiles pour apprendre à utiliser les expressions régulières:

Un cours de base : https://openclassrooms.com/courses/conc ... partie-1-2
Un testeur d'expression en ligne : https://regex101.com/#pcre

Attention toutefois pour ce dernier lien, il y a qq légère différence lorsqu'on passe de pcre à R, mais ça m'a quand même été bien utile.

Cordialement.

Wilfrid Car
Messages : 59
Enregistré le : 09 Avr 2015, 13:35

Re: océrisation et reformatage des données

Messagepar Wilfrid Car » 03 Nov 2015, 13:03

Merci pour cette réponse détaillée ainsi que la référence openclassroom
C'est déjà beaucoup plus clair!

- J'utilise le testeur RegexR pour décortiquer des expressions mais cela nécessite parfois une conversion R / regexR concernant la syntaxe, ce qui ne facilite pas les choses!

- Ce qui me manque dans le traitement des chaines de caractères, ce sont des exemples de cas concrets commentés.
" Comment séparer un patronyme d'un prénom (avec le cas d'un patronyme composé) et les placer dans deux colonnes d'un data.frame"


Je suis preneur de références abordant ce type de cas ...et d'expressions...

Cordialement.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité