如何在换行符“\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 不是字符向量!!!