R текстовый файл и текстовый поиск... как загрузить данные
Я использую пакет R tm
, и я хочу сделать некоторый интеллектуальный анализ текста. Это один документ и рассматривается как мешок слов.
Я не понимаю документацию о том, как загрузить текстовый файл и создать необходимые объекты, чтобы начать использовать такие функции, как....
stemDocument(x, language = map_IETF(Language(x)))
Итак, предположим, что это мой документ "это тест на нагрузку R"
Как загрузить данные для обработки текста и создать объект x?
Ответы
Ответ 1
Как и @richiemorrisroe, я нашел это плохо документированным. Здесь, как я получаю свой текст для использования с пакетом tm и создаю матрицу терминов документа:
library(tm) #load text mining library
setwd('F:/My Documents/My texts') #sets R 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)
В этом случае вам не нужно указывать точное имя файла. Пока он единственный в каталоге, указанном в строке 3, он будет использоваться функциями tm. Я делаю это так, потому что я не имел никакого успеха в указании имени файла в строке 3.
Если кто-нибудь может предложить, как получить текст в пакете lda, я был бы очень благодарен. Я вообще не смог это сделать.
Ответ 2
Не можете ли вы просто использовать функцию readPlain
из той же библиотеки? Или вы можете просто использовать более общую функцию scan
.
mydoc.txt <-scan("./mydoc.txt", what = "character")
Ответ 3
Я на самом деле нашел это довольно сложным для начала, поэтому здесь более полное объяснение.
Сначала вам нужно настроить источник текстовых документов. Я обнаружил, что самый простой способ (особенно если вы планируете добавлять дополнительные документы, - это создать источник каталога, который будет читать все ваши файлы.
source <- DirSource("yourdirectoryname/") #input path for documents
YourCorpus <- Corpus(source, readerControl=list(reader=readPlain)) #load in documents
Затем вы можете применить функцию StemDocument к своему корпусу. НТН.
Ответ 4
Я полагаю, что вы хотели сделать, это прочитать отдельный файл в корпусе, а затем заставить его рассматривать разные строки в текстовом файле как разные наблюдения.
Убедитесь, что это дает вам то, что вы хотите:
text <- read.delim("this is a test for R load.txt", sep = "/t")
text_corpus <- Corpus(VectorSource(text), readerControl = list(language = "en"))
Это предполагает, что файл "это тест для R load.txt" имеет только один столбец с текстовыми данными.
Здесь "text_corpus" - это тот объект, который вы ищете.
Надеюсь, что это поможет.
Ответ 5
Здесь мое решение для текстового файла с линией за наблюдение. последняя виньетка на tm (февраль 2017) дает более подробную информацию.
text <- read.delim(textFileName, header=F, sep = "\n",stringsAsFactors = F)
colnames(text) <- c("MyCol")
docs <- text$MyCol
a <- VCorpus(VectorSource(docs))