Premiers pas avec le langage de programmation R / Partie I
Travail avec R sur la traduction allemande de "Schau heimwärts, Engel !" de Thomas Wolfe
Mes premiers pas de débutant avec le langage de programmation R sont basés sur la traduction allemande du roman "Schau heimwärts, Engel !", écrit de façon autobiographique par Thomas Wolfe en 1929.
Comme je suis artistiquement impliqué dans le travail du peintre letton Mark Rothko, j'analyse la traduction allemande du roman autobiographique Schau heimwärts, Engel ! de Thomas Wolfe ? Quel est le rapport entre l'un et l'autre ?
Voici une histoire courte et concise : au plus tard lorsque j'ai commencé à m'intéresser aux données biographiques de Mark Rothko, qui est né sous le nom de Marcus Rothkowitz à Daugavpils, en Lettonie, j'ai commencé à réévaluer textuellement sa vie et les points de contact avec la réalité qui pourrait l'entourer. Par hasard, j'ai vu le film Génie
(lien) et j'ai commencé à lire des livres de Thomas Wolfe en raison de l'impression durable que ce film m'a laissée. J'ai associé des passages de textes des romans de Wolfe avec les expériences de vie réelles et hypothétiques de Mark Rothko. Je pense que Wolfe a trouvé les mots parfaits pour décrire les expériences possibles de Rothko. Le langage de Wolfe, semblable à celui des peintures de Mark Rothko, est imprégné d'un pouvoir immense, dont il attribue une influence massive et impressionnante sur nos vies aux choses qui nous entourent. Sa langue, sa richesse linguistique m'ont beaucoup impressionné et m'ont fait une grande impression.
Thomas Wolfe
Thomas Wolfe, écrivain américain, est né à Ashville, en Caroline du Nord, en 1900. Il est le dernier de huit enfants, fils d'une mère irlandaise et écossaise et d'un tailleur de pierre allemand et pennsylvanien. Wolfe est mort de la tuberculose cérébrale à l'âge de 38 ans.
Il y a Thomas Wolfe, un garçon de, je crois, trente ans ou moins, dont le seul roman Look Homeward, Angel peut être placé à côté de nos meilleures œuvres littéraires, une création colossale de profonde convoitise pour la vie.
En lisant le livre, je suis tombé sur de nombreux termes que je ne connais ou ne comprends plus aujourd'hui. Il s'agit en partie de particularités linguistiques du traducteur, ainsi que de références littéraires à la littérature, au théâtre et à l'opérette, qui nous sont totalement étrangères aujourd'hui, car elles n'apparaissent plus dans notre canon pédagogique ou sont tout au plus citées une fois, sans que nous sachions à quoi ces références se réfèrent. À titre d'exemple, je voudrais juste mentionner - sans distinction - que perkolieren
, Gargantua
, Lord-Fauntleroy-Locken
ou bukolische Wildnis
. Je vais écrire un support et une explication d'accompagnement pour beaucoup de ces termes dans un autre article.
Cela m'a finalement amené à effectuer ma première analyse de texte avec R sur le texte Schau heimwärts, Engel !
de Thomas Wolfe. Le texte sous-jacent de la traduction allemande de Hans Schiebelhuth, honoré à titre posthume par le prix Georg Büchner, est disponible en ligne dans le cadre du projet Gutenberg.
C'était un nouveau territoire.
Son coeur s'est éclairé.
Source : Thomas Wolfe, Schau heimwärts, Engel!
, Rowohlt Verlag GmbH, Hamburg 1954
Cette documentation sur mes premiers pas avec R est explicitement destinée aux débutants et devrait les encourager à utiliser R comme base pour une compréhension éventuellement encore meilleure du texte. Je suis encore au tout début et je me laisse aller là où mon humeur et mes recherches me mènent.
Le texte
Le début
Dans un premier temps, j'ai créé un fichier unique à partir des quarante chapitres du livre.
J'ai nommé ce fichier schauheimwaertsengel.txt.
Tout d'abord, je ne veux pas travailler avec RStudio mais seulement avec la simple R-Console.
Qu'est-ce que R ?
R est un système de calculs et de graphiques statistiques. Il se compose d'un langage de programmation et d'un environnement d'exécution avec des graphiques, un débogueur, l'accès à certaines fonctions du système et la possibilité d'exécuter des programmes stockés dans des fichiers de script.
R a une structure modulaire, ce qui signifie qu'en plus des paquets avec les fonctions de base déjà incluses, plus de 2500 autres paquets peuvent être installés.
Où puis-je trouver R ?
R peut être téléchargé sur la page du projet R. J'ai installé la version 64 bits.
Premiers pas
Permettez-moi de commencer par dire Je suis un débutant absolu en R. Je suis heureux de chaque commentaire qui m'aide à transformer les approches encombrantes d'un débutant en actions et modes de pensée plus intelligents. Comme je ne suis pas un programmeur concepteur, mais un concepteur de programmes, je n'ai pas de véritable expérience des langages de programmation, ce qui me rend parfois difficile d'adapter certains exemples tirés des résultats du net à mes besoins.
Mes premiers pas ont été basés sur cette série de vidéos de l'Académie Jalayer. Merci beaucoup pour ce tutoriel très compréhensible.
Après l'installation, je lance R et je trouve cet écran : La console R..
Dans R, vous travaillez avec des objets et des commandes (ordres). Nous commençons par trouver où se trouve notre répertoire de travail. Pour cela, nous utilisons la commande getwd() - get working directory.
12getwd()
[1] "C:/Users/benutzer/Documents"
Nous pouvons changer cela avec setwd(). Tous mes projets R se trouvent sur C dans le dossier R. Comme je travaille sur les textes de Wolfe, j'ai nommé le répertoire r-wolfe. Lors de la définition de répertoires de travail, il faut s'assurer que le répertoire existe.
Nous écrivons donc et vérifions à nouveau :
123setwd("C:/R/r-wolfe")
getwd()
[1] "C:/R/r-wolfe"
Parfait.
Tous les fichiers que nous chargeons ou enregistrons en tant qu'objets sont maintenant dans C:/R/r-wolfe. Avec dir(), nous pouvons afficher tous les fichiers du répertoire de travail.
12dir()
[1] "auszug.txt" "schauheimwaertsengel.txt"
Le répertoire contient deux fichiers : auszug.txt et le texte intégral schauheimwaertsengel.txt. L'application de toutes les commandes aux deux textes est pour une meilleure illustration, les exemples de texte et de codage peuvent être mieux affichés avec le texte court du fichier auszug.txt. Le texte complet de Schau heimwärts, Engel !
contient plus de 1,2 million de caractères et près de 10 000 lignes. Pour des raisons de droits d'auteur, je demande à chacun de compiler ce texte lui-même.
Um den Text in R bearbeiten zu können, lade ich ihn als Objekt in R. Dabei hatte ich zunächst einige Probleme mit den Umlauten.
Als erstes möchte ich mir den Text von auszug.txt einmal in der Konsole anzeigen lassen. Bitte auf die Groß- und Kleinschreibung von Kommandos in R achten!
Schauen wir es uns einmal an.
1234readLines("auszug.txt")
[1] "Ein Engländer namens Gilbert Gaunt (was er später in Gant änderte, vermutlich ein Zugeständnis an die Aussprache der Yankees) war im Jahre 1837 auf einem Segler von Bristol nach Baltimore gekommen. "
[2] ""
[3] "Den Wert eines Gasthauses, das er sich gekauft hatte, ließ er seine unfürsorgliche Kehle hinunterrollen."
Le contenu du document chargé est affiché directement dans la console avec la commande. Il comporte 3 lignes et on constate immédiatement que les caractères spéciaux ne sont pas chargés correctement car le format UTF8 n'a pas été reconnu correctement.
Mais si nous spécifions le bon encodage, le problème est rapidement résolu :
1234readLines("auszug.txt", encoding = "UTF-8")
[1] "Ein Engländer namens Gilbert Gaunt (was er später in Gant änderte, vermutlich ein Zugeständnis an die Aussprache der Yankees) war im Jahre 1837 auf einem Segler von Bristol nach Baltimore gekommen. "
[2] ""
[3] "Den Wert eines Gasthauses, das er sich gekauft hatte, ließ er seine unfürsorgliche Kehle hinunterrollen."
C'est mieux comme ça !
Pour ajouter le texte du fichier auszug.txt à un objet nommé extract avec une commande nous utilisons <- . L'objet peut alors être facilement affiché dans la console avec auszug.
12345auszug <- readLines("auszug.txt", encoding = "UTF-8")
auszug
[1] "Ein Engländer namens Gilbert Gaunt (was er später in Gant änderte, vermutlich ein Zugeständnis an die Aussprache der Yankees) war im Jahre 1837 auf einem Segler von Bristol nach Baltimore gekommen. "
[2] ""
[3] "Den Wert eines Gasthauses, das er sich gekauft hatte, ließ er seine unfürsorgliche Kehle hinunterrollen."
Nous faisons la même chose avec le fichier schauheimwaertsengel.txt, que nous chargeons dans l'objet wolfetext.
1wolfetext <- readLines("schauheimwaertsengel.txt", encoding = "UTF-8")
Supprimer les lignes vides avec collapse()
Comme nous l'avons vu ci-dessus dans auszug, l'objet auszug contient quelques lignes vides, que nous supprimons avec cette commande.
1auszug <- paste(auszug, collapse=' ')
Nous remplaçons les lignes avec collapse() par un caractère d'espace. Les espaces en double sont supprimés par la suite. Le résultat est maintenant une ligne de texte.
12auszug
[1] "Ein Engländer namens Gilbert Gaunt (was er später in Gant änderte, vermutlich ein Zugeständnis an die Aussprache der Yankees) war im Jahre 1837 auf einem Segler von Bristol nach Baltimore gekommen. Den Wert eines Gasthauses, das er sich gekauft hatte, ließ er seine unfürsorgliche Kehle hinunterrollen."
Je me passe ici de la représentation de l'objet wolfetext. Mais je procède avec le texte exactement de la même manière qu'avec auszug, c'est-à-dire que je remplace toutes les lignes par un espace avec collapse() et j'attribue le résultat à l'objet wolfetext avec la commande.
1wolfetext <- paste(wolfetext, collapse=' ')
Supprimer les signes de ponctuation et les caractères spéciaux avec gsub()
Nos textes contiennent des signes de ponctuation en plus de nombreux mots dits d'arrêt ou de remplissage. Les expressions régulières permettent de les supprimer plus facilement. Les expressions régulières sont une chose magique en soi, une bonne introduction aux expressions régulières que j'ai trouvée ici : dans ce tutoriel et ici, on peut trouver une liste assez complète de toutes les expressions, entre autres à ce stade. Autres liens : Regular Expressions in stringr, R Regular Expressions, Regular Expressions with The R Language.
Nous commençons par supprimer toute la ponctuation et les caractères spéciaux et les remplaçons par des espaces.
12gsub(pattern="\\W", replace=" ", auszug)
[1] "Ein Engländer namens Gilbert Gaunt was er später in Gant änderte vermutlich ein Zugeständnis an die Aussprache der Yankees war im Jahre 1837 auf einem Segler von Bristol nach Baltimore gekommen Den Wert eines Gasthauses das er sich gekauft hatte ließ er seine unfürsorgliche Kehle hinunterrollen "
Et nous voyons : Toutes les ponctuations et tous les caractères spéciaux ont été supprimés et remplacés par des espaces.
Avec la commande suivante, nous attribuons les résultats des deux commandes à nos deux objets auszug et wolfetext. auszug et wolfetext contiennent désormais du texte sans ponctuation et sans caractères spéciaux et sans espaces.
12auszug <- gsub(pattern="\\W", replace=" ", auszug)
wolfetext <- gsub(pattern="\\W", replace=" ", wolfetext)
En outre, tous les chiffres sont maintenant tous supprimés avec
12auszug <- gsub(pattern="\\d", replace=" ", auszug)
wolfetext <- gsub(pattern="\\d", replace=" ", wolfetext)
Pour un meilleur traitement du texte, tous les mots du texte sont maintenant convertis en minuscules avec la fonction tolower().
12tolower(auszug)
[1] "ein engländer namens gilbert gaunt was er später in gant änderte vermutlich ein zugeständnis an die aussprache der yankees war im jahre auf einem segler von bristol nach baltimore gekommen den wert eines gasthauses das er sich gekauft hatte ließ er seine unfürsorgliche kehle hinunterrollen "
Et nous assignons maintenant la commande à auszug et wolfetext.
12auszug <- tolower(auszug)
wolfetext <- tolower(wolfetext)
Maintenant, nous supprimons toutes les chaînes de longueur 1 de nos textes et affectons à nouveau la commande directement à l'objet auszug. Nous procédons de la même manière avec wolfetext. Cela se fait avec le RegEx \\b[A-z]\\b{1}.
12auszug <- gsub(pattern="\\b[A-z]\\b{1}", replace=" ", auszug)
wolfetext <- gsub(pattern="\\b[A-z]\\b{1}", replace=" ", wolfetext )
Je voudrais maintenant sauvegarder les deux objets auszug et wolfetext avant de poursuivre le traitement. Cela se fait avec la fonction write.table().
12write.table(auszug, "auszug-lower.txt", sep="\t")
write.table(wolfetext, "schauheimwaertsengel-lower.txt", sep="\t")
Notre répertoire de travail contient maintenant 4 fichiers. Les fichiers auszug-lower.txt et schauheimwaertsengel-lower.txt contiennent le texte original sans lignes blanches, sans signes de ponctuation et sans chiffres ou chaînes à une partie.
12dir()
[1] "auszug-lower.txt" "auszug.txt" "schauheimwaertsengel.txt" "schauheimwaertsengel-lower.txt"
Paquets en R
Le paquet de filtrage et un tout petit peu de statistiques.
Les paquets R sont des ensembles de fonctions et de données développés par la communauté. Ils améliorent les performances de R en améliorant les fonctionnalités de base existantes de R ou en ajoutant de nouvelles fonctionnalités. (...) Récemment, le dépôt officiel (CRAN) a atteint 10 000 paquets publiés, et beaucoup d'autres sont disponibles publiquement sur Internet. (Source : https://www.datacamp.com/community/tutorials/r-packages-guide).
Comme je veux compter certains mots, j'ai d'abord installé le paquet stringr. Packages en installe un simplement via le menu Packages ou avec la fonction install.packages().
1install.packages("stringr")
Dans certains cas, nous devons préciser dans la fenêtre contextuelle à partir de quel serveur nous voulons télécharger le paquet et où il doit être installé. Et avec library(), un paquet installé est chargé dans l'espace de travail. Si le paquet est déjà installé, il doit être chargé au moins à chaque sesson.
1library(stringr)
Combien de fois Wolfe écrit-il
er ou sie?
Jetzt können wir ein paar Suchfunktionen auf unsere Texte loslassen. Ich fange einmal mit der Suche nach den Zeichenketten er
und sie
an, zunächst, damit das Ergebnis einfacher überprüfbar ist, mit dem Objekt auszug.
Nous pouvons maintenant laisser certaines fonctions de recherche libres sur nos textes. Je commence par rechercher les chaînes de caractères que er
et sie
, tout d'abord, pour que le résultat soit plus facile à vérifier, avec l'objet auszug.
12str_count(auszug, "er")
[1] 12
eravec le résultat 12.
On obtient 12 résultats. Si nous regardons l'extrait, nous voyons que später
, engländer
et par exemple segler
contiennent également la ficelle er
. Si nous ajoutons deux espaces à notre recherche, nous ne trouverons que le mot er
.
12str_count(auszug, " er ")
[1] 3
erhits.
Nous obtenons 3 résultats, ce qui est correct. Pour le fichier wolfetext, il y a 4946 occurrences pour er
et 3901 pour sie
. Cela représente un ratio de 55,9 % à 44,1 %. Un résultat pas forcément surprenant pour un roman autobiographique écrit par un auteur masculin à prédominance masculine en 1929.
Bien entendu, il manque une enquête plus détaillée sur la manière dont les mots sont utilisés et dans quel contexte.
1234str_count(wolfetext, " er ")
[1] 4946
str_count(wolfetext, " sie ")
[1] 3901
eret
siedans le texte.
La recherche peut également être combinée :
12str_count(wolfetext, c(" er "," sie "))
[1] 4946 3901
Dans la prochaine étape, je voudrais examiner l'occurrence des protagonistes de manière quantitative, pour savoir si je peux détecter une tendance à certains verbes modaux dans le texte. En outre, je voudrais supprimer tous les mots d'arrêt ou de remplissage du texte et enfin créer un nuage de mots dans l'ensemble du texte.
Je le ferai dans la deuxième partie, qui sera publiée ici cette semaine, je l'espère.
Si vous avez des suggestions ou des critiques à me faire, laissez-les dans les commentaires ! Et si vous avez de bons conseils pour les R-Instructions qui concernent spécifiquement l'analyse de texte et le text mining, veuillez les laisser dans les commentaires. J'aime aussi lire ce que vous avez déjà fait avec R !
tl, dr;
Mes premiers pas de débutant avec le langage de programmation R sont basés sur le roman Schau nachwärts, Engel !
écrit de façon autobiographique par Thomas Wolfe en 1929.
Commentaires (0)