如何在换行符“\n”后将语料库内容转换为矢量
How do I transform Corpus content to vector after newline "\n"
当我尝试在纯文本上使用 strsplit 时,它具有所需的 属性 存储值从字符串转换为包含字符串的向量。例如,
txt = "The fox is Brown.\nThe Fox has a tail."
strsplit(txt, "\n")
对于我正在使用 NLP 包的实际问题,tm (v0.7-1) in R 3.4.0 on Windows 7.
当我创建语料库并尝试在 tm 中使用 content_transformer 函数时,它反而破坏了我的语料库返回内容向量。
require(tm) #version 0.7-1
txt = "The fox is Brown.\nThe Fox has a tail."
docs = Corpus(VectorSource(txt))
to_newline = content_transformer(function (x) unlist(strsplit(x, "\n")))
docs = tm_map(docs, to_newline)
str(docs)
上面代码中 str(docs)
的输出如下所示:
List of 2
$ 1:List of 2
..$ content: chr "The fox is Brown."
..$ meta :List of 7
.. ..$ author : chr(0)
.. ..$ datetimestamp: POSIXlt[1:1], format: "2017-06-25 15:11:55"
.. ..$ description : chr(0)
.. ..$ heading : chr(0)
.. ..$ id : chr "1"
.. ..$ language : chr "en"
.. ..$ origin : chr(0)
.. ..- attr(*, "class")= chr "TextDocumentMeta"
..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument"
$ 2:List of 2
..$ content: chr "The Fox has a tail."
..$ meta :List of 7
.. ..$ author : chr(0)
.. ..$ datetimestamp: POSIXlt[1:1], format: "2017-06-25 15:11:55"
.. ..$ description : chr(0)
.. ..$ heading : chr(0)
.. ..$ id : chr "2"
.. ..$ language : chr "en"
.. ..$ origin : chr(0)
.. ..- attr(*, "class")= chr "TextDocumentMeta"
..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument"
- attr(*, "class")= chr [1:2] "SimpleCorpus" "Corpus"
我希望它看起来像下面这样,其中 $ content
是一个字符向量:
List of 1
$ 1:List of 2
..$ content: chr [1:2] "The fox is Brown." "The Fox has a tail."
..$ meta :List of 7
.. ..$ author : chr(0)
.. ..$ datetimestamp: POSIXlt[1:1], format: "2017-06-25 15:11:55"
.. ..$ description : chr(0)
.. ..$ heading : chr(0)
.. ..$ id : chr "1"
.. ..$ language : chr "en"
.. ..$ origin : chr(0)
.. ..- attr(*, "class")= chr "TextDocumentMeta"
..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument"
这需要大量的反复试验。事实上,我使用 DirSource
来读取数据语料库,我需要做的就是将语料库中的函数序列读取转换为 VCorpus(DirSource(directory_name), ...)
.
为了演示问题创建一个文本文件:
The fox is Brown.
The Fox has a tail.
将文件保存在您工作目录中名为 test
的文件夹中,并将文件另存为 test.txt
.
然后运行:
docs = VCorpus(DirSource("./test"))
str(docs)
注意 content
不是字符向量!!!
当我尝试在纯文本上使用 strsplit 时,它具有所需的 属性 存储值从字符串转换为包含字符串的向量。例如,
txt = "The fox is Brown.\nThe Fox has a tail."
strsplit(txt, "\n")
对于我正在使用 NLP 包的实际问题,tm (v0.7-1) in R 3.4.0 on Windows 7.
当我创建语料库并尝试在 tm 中使用 content_transformer 函数时,它反而破坏了我的语料库返回内容向量。
require(tm) #version 0.7-1
txt = "The fox is Brown.\nThe Fox has a tail."
docs = Corpus(VectorSource(txt))
to_newline = content_transformer(function (x) unlist(strsplit(x, "\n")))
docs = tm_map(docs, to_newline)
str(docs)
上面代码中 str(docs)
的输出如下所示:
List of 2
$ 1:List of 2
..$ content: chr "The fox is Brown."
..$ meta :List of 7
.. ..$ author : chr(0)
.. ..$ datetimestamp: POSIXlt[1:1], format: "2017-06-25 15:11:55"
.. ..$ description : chr(0)
.. ..$ heading : chr(0)
.. ..$ id : chr "1"
.. ..$ language : chr "en"
.. ..$ origin : chr(0)
.. ..- attr(*, "class")= chr "TextDocumentMeta"
..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument"
$ 2:List of 2
..$ content: chr "The Fox has a tail."
..$ meta :List of 7
.. ..$ author : chr(0)
.. ..$ datetimestamp: POSIXlt[1:1], format: "2017-06-25 15:11:55"
.. ..$ description : chr(0)
.. ..$ heading : chr(0)
.. ..$ id : chr "2"
.. ..$ language : chr "en"
.. ..$ origin : chr(0)
.. ..- attr(*, "class")= chr "TextDocumentMeta"
..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument"
- attr(*, "class")= chr [1:2] "SimpleCorpus" "Corpus"
我希望它看起来像下面这样,其中 $ content
是一个字符向量:
List of 1
$ 1:List of 2
..$ content: chr [1:2] "The fox is Brown." "The Fox has a tail."
..$ meta :List of 7
.. ..$ author : chr(0)
.. ..$ datetimestamp: POSIXlt[1:1], format: "2017-06-25 15:11:55"
.. ..$ description : chr(0)
.. ..$ heading : chr(0)
.. ..$ id : chr "1"
.. ..$ language : chr "en"
.. ..$ origin : chr(0)
.. ..- attr(*, "class")= chr "TextDocumentMeta"
..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument"
这需要大量的反复试验。事实上,我使用 DirSource
来读取数据语料库,我需要做的就是将语料库中的函数序列读取转换为 VCorpus(DirSource(directory_name), ...)
.
为了演示问题创建一个文本文件:
The fox is Brown.
The Fox has a tail.
将文件保存在您工作目录中名为 test
的文件夹中,并将文件另存为 test.txt
.
然后运行:
docs = VCorpus(DirSource("./test"))
str(docs)
注意 content
不是字符向量!!!