为什么 R 将我的 CSV 文件中的所有行合并为一个完整的文档?
Why is R merging all the rows in my CSV file as one whole document?
我正在使用 R
进行情绪分析。我的源文件包含大约 50 条客人评论,已在 Excel
中创建(每条评论记录在单行单列中)。因此,所有评论都在 A 列中,没有 headers。然后该文件已另存为 csv
文件并存储在文件夹中。
我的R
代码如下:
library (tm)
docs<-Corpus(DirSource('E:/Sentiment Analysis'))
#checking a particular review in the document
writeLines(as.character(docs[[20]]))
运行 最后一行给我一条越界错误信息。
当我将其更改为 writeLines(as.character(docs[[1]]))
时,R 显示所有评论,就好像它们是一整段一样。
我该如何解决这个问题?
与 DirSource()
一起使用的 tm::Corpus()
函数将每个文件视为一个单独的文档,而不是将一个文件中的每一行都视为一个单独的文档。
要将文本文件的每一行作为单独的文档读取,可以使用 Corpus(VectorSource())
语法。
例如,我们将创建一个文本文件,从目录中读取它以说明 Corpus()
与 DirSource()
的行为方式对比我们将如何与 VectorSource()
一起读取.
# represent contents of the text file that was stored in
# ./data/ExcelFile1.csv
aTextFile <- "This is line one of text.
This is line two of text. This is a second sentence in line two."
library(tm)
# read as the OP read it
corpusDir <- "./data/textMining"
aCorpus <- Corpus(DirSource(corpusDir))
length(aCorpus) # shows only one item in list, entire file
# use pipe as separator because documents include commas.
aDataFrame <- read.table("./data/textMining/ExcelFile1.csv",header=FALSE,
sep="|",stringsAsFactors=FALSE)
# use VectorSource to treat each row as a separate document
aCorpus <- Corpus(VectorSource(aDataFrame$V1))
# print the two documents
aCorpus[1]$content
aCorpus[2]$content
...和输出。首先,我们用 DirSource()
:
读取语料库的长度
> length(aCorpus) # shows only one item in list, entire file
[1] 1
其次,我们将打印第二次读取的两行,说明它们被视为单独的文档。
> aCorpus <- Corpus(VectorSource(aDataFrame$V1))
> aCorpus[1]$content
[1] "This is line one of text."
> aCorpus[2]$content
[1] "This is line two of text. This is a second sentence in line two. "
>
我正在使用 R
进行情绪分析。我的源文件包含大约 50 条客人评论,已在 Excel
中创建(每条评论记录在单行单列中)。因此,所有评论都在 A 列中,没有 headers。然后该文件已另存为 csv
文件并存储在文件夹中。
我的R
代码如下:
library (tm)
docs<-Corpus(DirSource('E:/Sentiment Analysis'))
#checking a particular review in the document
writeLines(as.character(docs[[20]]))
运行 最后一行给我一条越界错误信息。
当我将其更改为 writeLines(as.character(docs[[1]]))
时,R 显示所有评论,就好像它们是一整段一样。
我该如何解决这个问题?
与 DirSource()
一起使用的 tm::Corpus()
函数将每个文件视为一个单独的文档,而不是将一个文件中的每一行都视为一个单独的文档。
要将文本文件的每一行作为单独的文档读取,可以使用 Corpus(VectorSource())
语法。
例如,我们将创建一个文本文件,从目录中读取它以说明 Corpus()
与 DirSource()
的行为方式对比我们将如何与 VectorSource()
一起读取.
# represent contents of the text file that was stored in
# ./data/ExcelFile1.csv
aTextFile <- "This is line one of text.
This is line two of text. This is a second sentence in line two."
library(tm)
# read as the OP read it
corpusDir <- "./data/textMining"
aCorpus <- Corpus(DirSource(corpusDir))
length(aCorpus) # shows only one item in list, entire file
# use pipe as separator because documents include commas.
aDataFrame <- read.table("./data/textMining/ExcelFile1.csv",header=FALSE,
sep="|",stringsAsFactors=FALSE)
# use VectorSource to treat each row as a separate document
aCorpus <- Corpus(VectorSource(aDataFrame$V1))
# print the two documents
aCorpus[1]$content
aCorpus[2]$content
...和输出。首先,我们用 DirSource()
:
> length(aCorpus) # shows only one item in list, entire file
[1] 1
其次,我们将打印第二次读取的两行,说明它们被视为单独的文档。
> aCorpus <- Corpus(VectorSource(aDataFrame$V1))
> aCorpus[1]$content
[1] "This is line one of text."
> aCorpus[2]$content
[1] "This is line two of text. This is a second sentence in line two. "
>