TP9: Utilisation des expressions régulières en R pour le traitement des données email

Page 1 sur 2Lecteur de document UniversityLib

TP9: Utilisation des expressions régulières en R pour le traitement des données email

Data Science · lab

Voir tous les documents en intelligence artificielle et données

TP9

Table des matières

• Lecture des données

• Expressions régulières

• Expression régulière en R

Lecture des données

email_df <- read.csv("email-list.csv")

email_df

Notre simple ensemble de données contient donc une liste de noms et une liste de leurs emails correspondants. Disons que

nous voulons simplement compter la fréquence des domaines de courrier électronique. Mais plusieurs problèmes se posent

avant même que nous puissions essayer. Si nous essayons de compter simplement la colonne des courriels, nous ne

parviendrons pas à obtenir ce que nous voulons puisque chaque email est unique. Et si nous divisons la chaîne à l'adresse "@",

nous n'obtiendrons toujours pas ce que nous voulons, car même les emails ayant les mêmes domaines peuvent avoir des

extensions régionales différentes. Alors comment pouvons-nous facilement et rapidement extraire les données nécessaires ?

Publicité

Expressions régulières

Les expressions régulières sont des expressions génériques qui sont utilisées pour faire correspondre des motifs dans les

chaînes de caractères et le texte. Une façon d'illustrer cela est d'utiliser une simple expression qui peut correspondre à une

chaîne de courrier électronique. Mais avant de l'écrire, voyons comment un courrier électronique est structuré :

$[[email protected]](mailto://[email protected]?cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-

WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-RP0101EN-SkillsNetwork-

20900564&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345

678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-

SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-RP0101EN-SkillsNetwork-

20900564&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345

678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-

SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-RP0101EN-SkillsNetwork-

20900564&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345

678&cvo_campaign=000026UJ)$

Publicité

Ainsi, un email est composé d'une chaîne de caractères suivie d'un symbole "@" et d'une autre chaîne de caractères. Dans les

expressions régulières R, nous pouvons l'exprimer ainsi :

$.+@.+$

Où :

• Le symbole '." correspond à n'importe quel caractère.

• Le symbole '+' répète le symbole précédent une ou plusieurs fois. Ainsi, le symbole ".+" correspondra à n'importe

quelle chaîne de caractères.

• Le symbole '@' correspond uniquement au caractère '@'.

Maintenant, pour notre problème, qui consiste à extraire le domaine d'un courriel en excluant le code url régional, nous avons

besoin d'une expression qui corresponde spécifiquement à ce que nous voulons :

$@.+\\.$

Où le symbole '\.' correspond spécifiquement au caractère '.'

Expressions régulières en R

Examinons maintenant quelques fonctions R qui fonctionnent avec des fonctions R.

Publicité

La fonction grep ci-dessous prend en compte une expression régulière et une liste de chaînes de caractères à rechercher et

renvoie les positions de l'endroit où elles apparaissent dans la liste.

grep("@.+", c("[email protected]" , "not an email", "[email protected]"))

grep possède également un paramètre supplémentaire appelé "value" qui modifie la sortie pour afficher les chaînes de

caractères au lieu des positions de la liste.

grep("@.+", c("[email protected]", "not an email", "[email protected]"), value=TRUE)

La fonction suivante, "gsub", est une fonction de substitution. Elle prend en compte une expression régulière, la chaîne que

vous voulez échanger avec les correspondances et une liste de chaînes avec lesquelles vous voulez effectuer l'échange. La

cellule de code ci-dessous met à jour les e-mails valides avec un nouveau domaine :

gsub("@.+", "@newdomain.com", c("[email protected]", "not an email",

"[email protected]"))

Les fonctions ci-dessous, "regexpr" et "regmatches", fonctionnent conjointement pour extraire les correspondances

trouvées par une expression régulière spécifiée dans "regexpr".

matches <- regexpr("@.*", c("[email protected]", "not an email", "[email protected]"))

Publicité

regmatches(c("[email protected]", "not an email", "[email protected]"), matches)

Cette fonction est en fait parfaite pour notre problème puisque nous avons simplement besoin d'extraire les informations

spécifiques que nous voulons. Utilisons-la donc avec l'expression régulière que nous avons définie ci-dessus et stockons les

chaînes extraites dans une nouvelle colonne de notre dataframe.

matches <- regexpr("@.*\\.", email_df[,'Email'])

email_df[,'Domain'] = regmatches(email_df[,'Email'], matches)

Et voici le Dataframe qui en résulte :

email_df

Maintenant, nous pouvons enfin construire le tableau des fréquences pour les domaines de notre dataframe !

table(email_df[,'Domain'])