【发布时间】:2015-08-16 14:51:27
【问题描述】:
如何将语料库转换为 R 中还包含元数据的数据框?我已经尝试过convert corpus into data.frame in R 的建议,但生成的数据框只包含语料库中所有文档的文本行。
我还需要文档 ID,也许还需要两列中文本行的行号。
那么,如何扩展这个命令:dataframe <- data.frame(text=unlist(sapply(mycorpus,[, "content")), stringsAsFactors=FALSE) 来获取数据?
我已经试过了
dataframe <-
data.frame(id=sapply(corpus, meta(corpus, "id")),
text=unlist(sapply(corpus, `[`, "content")),
stringsAsFactors=F)
但这没有帮助;我只收到一条错误消息“match.fun(FUN) 中的错误: 'meta(corpus, "id")' ist nicht Funktion, Zeichen oder Symbol"
语料库是从纯文本文件中提取的;这是一个例子:
> str(corpus)
[...]
$ 1178531510 :List of 2
..$ content: chr [1:67] " uberrasch sagt [...] gemacht echt schad verursacht" ...
..$ meta :List of 7
.. ..$ author : chr(0)
.. ..$ datetimestamp: POSIXlt[1:1], format: "2015-08-16 14:44:11"
.. ..$ description : chr(0)
.. ..$ heading : chr(0)
.. ..$ id : chr "1178531510" # <--- This is the ID i want in the data.frame
.. ..$ language : chr "de"
.. ..$ origin : chr(0)
.. ..- attr(*, "class")= chr "TextDocumentMeta"
..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument"
[...]
提前非常感谢:)
【问题讨论】:
-
sapply(corpus, meta(corpus, "id"))应该是sapply(corpus, meta, "id") -
谢谢,这似乎工作得更好,但现在我收到了这个错误:
Error in data.frame(id = sapply(corpus, meta, "id"), text = unlist(sapply(corpus, : Argumente implizieren unterschiedliche Anzahl Zeilen: 323, 10012 -
好吧,您的代码和我的更正适用于示例数据集
data(acq) ; corpus <- acq,所以问题可能出在您的数据中:您得到 323 id,但是 10012 文本内容(我猜,我的德语生锈了)...你的语料库的长度是多少?您能否发布重现问题的语料库样本部分? -
语料库包含 323 个文档,但有 10012 行文本。在数据框中,每一行文本都是一行。
-
你可以试试这个:
unlist(lapply(sapply(corpus,[, "content"),paste,collapse="\n"))