保留从转换过程中删除的行
Keep removed rows from a convert process
来自这个命令
quant_stm <- convert(tDfm, to = "stm")
我收到一条警告信息
警告信息:
In dfm2stm(x, docvars, omit_empty = TRUE) :
Dropped empty document(s): g_32, m_21, g_32, [... truncated]
有什么方法可以将此警告消息的值保存在数据框中吗?
不是我能弄清楚。为什么?因为stm的“文档”输入的数据结构没有办法记录没有特征的文档。
让我们来看看它是如何工作的。首先,我们创建一个 dfm,其中包含具有四个不同特征的三个文档,其中一个文档仅包含第四个特征(称之为“d”)。
library("quanteda")
## Package version: 2.1.2
dfmat <- dfm(c(
"a a c c",
"b b c c",
"d d d d"
))
现在,如果我们删除该功能,第三个文档现在是空的。这就是上面输出中删除的内容。
(x <- dfm_remove(dfmat, "d"))
## Document-feature matrix of: 3 documents, 3 features (55.6% sparse).
## features
## docs a c b
## text1 2 2 0
## text2 0 2 2
## text3 0 0 0
在 quanteda internal function dfm2dtm()
中,这是正在发生的事情:
x <- x[, order(featnames(x))]
x <- as(x, "dgTMatrix")
structure(quanteda:::ijv.to.doc(x@i + 1, x@j + 1, x@x),
names = rownames(x)[which(rowSums(x) > 0)]
)
## $text1
## [,1] [,2]
## [1,] 1 3
## [2,] 2 2
##
## $text2
## [,1] [,2]
## [1,] 2 3
## [2,] 2 2
请注意,在该对象中,它是 stm 输入的“文档”部分,该结构为每个文档记录了一个两行矩阵,其中第一行是“vocab”元素的索引,以及第二行是该词汇元素(特征)的计数。仅记录具有非零计数的词汇元素 - 这就是为什么 text2 中没有第一行为“1”的列(因为 text2 没有“a”特征)。
因此:方案本身无法记录未找到的内容,如果在文档中未找到任何内容,则会被省略。
注意 没有真正的理由使用 convert(x, to = "stm")
因为 stm()
函数可以直接使用 dfm。 (searchK()
但是不能,所以你可能需要它。)
来自这个命令
quant_stm <- convert(tDfm, to = "stm")
我收到一条警告信息 警告信息:
In dfm2stm(x, docvars, omit_empty = TRUE) :
Dropped empty document(s): g_32, m_21, g_32, [... truncated]
有什么方法可以将此警告消息的值保存在数据框中吗?
不是我能弄清楚。为什么?因为stm的“文档”输入的数据结构没有办法记录没有特征的文档。
让我们来看看它是如何工作的。首先,我们创建一个 dfm,其中包含具有四个不同特征的三个文档,其中一个文档仅包含第四个特征(称之为“d”)。
library("quanteda")
## Package version: 2.1.2
dfmat <- dfm(c(
"a a c c",
"b b c c",
"d d d d"
))
现在,如果我们删除该功能,第三个文档现在是空的。这就是上面输出中删除的内容。
(x <- dfm_remove(dfmat, "d"))
## Document-feature matrix of: 3 documents, 3 features (55.6% sparse).
## features
## docs a c b
## text1 2 2 0
## text2 0 2 2
## text3 0 0 0
在 quanteda internal function dfm2dtm()
中,这是正在发生的事情:
x <- x[, order(featnames(x))]
x <- as(x, "dgTMatrix")
structure(quanteda:::ijv.to.doc(x@i + 1, x@j + 1, x@x),
names = rownames(x)[which(rowSums(x) > 0)]
)
## $text1
## [,1] [,2]
## [1,] 1 3
## [2,] 2 2
##
## $text2
## [,1] [,2]
## [1,] 2 3
## [2,] 2 2
请注意,在该对象中,它是 stm 输入的“文档”部分,该结构为每个文档记录了一个两行矩阵,其中第一行是“vocab”元素的索引,以及第二行是该词汇元素(特征)的计数。仅记录具有非零计数的词汇元素 - 这就是为什么 text2 中没有第一行为“1”的列(因为 text2 没有“a”特征)。
因此:方案本身无法记录未找到的内容,如果在文档中未找到任何内容,则会被省略。
注意 没有真正的理由使用 convert(x, to = "stm")
因为 stm()
函数可以直接使用 dfm。 (searchK()
但是不能,所以你可能需要它。)