web-dev-qa-db-fra.com

Fichier texte R et exploration de texte ... comment charger des données

J'utilise le paquet R tm et je veux faire de l'exploration de texte. Ceci est un document et est traité comme un sac de mots.

Je ne comprends pas la documentation sur la façon de charger un fichier texte et de créer les objets nécessaires pour commencer à utiliser des fonctionnalités telles que ....

stemDocument(x, language = map_IETF(Language(x)))

Supposons donc que ceci est mon doc "ceci est un test de charge R" 

Comment charger les données pour le traitement de texte et créer l'objet x?

15
user959129

Comme @richiemorrisroe, j'ai trouvé cela mal documenté. Voici comment obtenir mon texte à utiliser avec le package tm et créer la matrice de termes de document:

library(tm) #load text mining library
setwd('F:/My Documents/My texts') #sets R's working directory to near where my files are
a  <-Corpus(DirSource("/My Documents/My texts"), readerControl = list(language="lat")) #specifies the exact folder where my text file(s) is for analysis with tm.
summary(a)  #check what went in
a <- tm_map(a, removeNumbers)
a <- tm_map(a, removePunctuation)
a <- tm_map(a , stripWhitespace)
a <- tm_map(a, tolower)
a <- tm_map(a, removeWords, stopwords("english")) # this stopword file is at C:\Users\[username]\Documents\R\win-library\2.13\tm\stopwords 
a <- tm_map(a, stemDocument, language = "english")
adtm <-DocumentTermMatrix(a) 
adtm <- removeSparseTerms(adtm, 0.75)

Dans ce cas, vous n'avez pas besoin de spécifier le nom de fichier exact. Tant qu'il s'agit du seul répertoire de la ligne 3, il sera utilisé par les fonctions tm. Je le fais de cette façon parce que je n’ai pas réussi à spécifier le nom du fichier à la ligne 3. 

Si quelqu'un peut suggérer comment insérer du texte dans le paquet LDA, je vous en serais très reconnaissant. Je n'ai pas été capable de régler ça du tout.

22
Ben

J'ai en fait trouvé cela assez difficile au début, alors voici une explication plus complète.

Tout d'abord, vous devez configurer une source pour vos documents texte. J'ai trouvé que le moyen le plus simple (en particulier si vous envisagez d'ajouter plus de documents, est de créer une source de répertoire qui lira tous vos fichiers.

source <- DirSource("yourdirectoryname/") #input path for documents
YourCorpus <- Corpus(source, readerControl=list(reader=readPlain)) #load in documents

Vous pouvez ensuite appliquer la fonction StemDocument à votre corpus. HTH.

6
richiemorrisroe

Ne pouvez-vous pas simplement utiliser la fonction readPlain de la même bibliothèque? Ou vous pouvez simplement utiliser la fonction scan plus commune.

mydoc.txt <-scan("./mydoc.txt", what = "character")
6
Pieter

Je crois que ce que vous vouliez faire était de lire un fichier individuel dans un corpus, puis de lui faire traiter les différentes lignes du fichier texte comme des observations différentes.

Voyez si cela vous donne ce que vous voulez:

text <- read.delim("this is a test for R load.txt", sep = "/t")
text_corpus <- Corpus(VectorSource(text), readerControl = list(language = "en"))

Cela suppose que le fichier "il s'agit d'un test pour R load.txt" ne comporte qu'une seule colonne contenant les données de texte.

Ici le "text_corpus" est l'objet que vous recherchez.

J'espère que cela t'aides.

2
Shreyes

Voici ma solution pour un fichier texte avec une ligne par observation. la dernière vignette sur tm (février 2017) donne plus de détails.

text <- read.delim(textFileName, header=F, sep = "\n",stringsAsFactors = F)
colnames(text) <- c("MyCol")
docs <- text$MyCol
a <- VCorpus(VectorSource(docs))
0
GM1313