Quanteda textplot_xray 按非唯一 docvar 分组为文档
Quanteda textplot_xray grouped by non-unique docvar as document
我有一个包含 10 个文档的 Quanteda 语料库,其中有几个是同一作者的。我将作者存储在单独的 docvar 列中 - myCorpus$documents[,"author"]
> docvars(myCorpus)
author
206035 author1
269823 author2
304225 author1
422364 author2
<...snip..>
我正在绘制 Lexical Dispersion Plot with xplot_xray、
textplot_xray(
kwic(myCorpus, "image"),
kwic(myCorpus, "one"),
kwic(myCorpus, "like"),
kwic(myCorpusus, "time"),
kwic(myCorpus, "just"),
scale = "absolute"
)
如何使用 myCorpus$documents[,"author"]
作为文档标识符而不是文档 ID?
我不是要对文档进行分组,我只是想通过作者来识别文档。我认识到文档 ID 需要是唯一的,所以不能简单地用 docnames(myCorpus)<-
重命名文档
textplot 文档名称取自 docnames
语料库。在这种情况下,您希望创建按 author
文档变量分组的新文档。这可以使用 texts()
提取器函数及其 groups
参数来完成。
为了创建一个可重现的示例,我将使用 built-in 数据对象 data_char_sampletext
,并将其分割成句子以形成新文档,然后模拟作者 docvar。
library("quanteda")
# quanteda version 1.0.0
myCorpus <- corpus(data_char_sampletext) %>%
corpus_reshape(to = "sentences")
# make some duplicated author docvar values
set.seed(1)
docvars(myCorpus, "author") <-
sample(c("author1", "author2", "author3"),
size = ndoc(myCorpus), replace = TRUE)
这会产生:
summary(myCorpus)
# Corpus consisting of 15 documents:
#
# Text Types Tokens Sentences author
# text1.1 23 23 1 author1
# text1.2 40 53 1 author2
# text1.3 48 63 1 author2
# text1.4 30 39 1 author3
# text1.5 20 25 1 author1
# text1.6 43 57 1 author3
# text1.7 13 15 1 author3
# text1.8 25 26 1 author2
# text1.9 9 9 1 author2
# text1.10 37 53 1 author1
# text1.11 32 41 1 author1
# text1.12 30 30 1 author1
# text1.13 28 35 1 author3
# text1.14 16 18 1 author2
# text1.15 32 42 1 author3
#
# Source: /Users/kbenoit/tmp/* on x86_64 by kbenoit
# Created: Fri Feb 16 18:03:13 2018
# Notes: corpus_reshape.corpus(., to = "sentences")
现在,我们将文本提取为字符向量,通过 author
文档变量对它们进行分组。这会生成一个长度为 3 的命名字符向量,其中名称是(唯一的)作者标识符。
groupedtexts <- texts(myCorpus, groups = "author")
length(groupedtexts)
# [1] 3
names(groupedtexts)
# [1] "author1" "author2" "author3"
然后(如图):
textplot_xray(
kwic(groupedtexts, "and"),
kwic(groupedtexts, "for")
)
我有一个包含 10 个文档的 Quanteda 语料库,其中有几个是同一作者的。我将作者存储在单独的 docvar 列中 - myCorpus$documents[,"author"]
> docvars(myCorpus)
author
206035 author1
269823 author2
304225 author1
422364 author2
<...snip..>
我正在绘制 Lexical Dispersion Plot with xplot_xray、
textplot_xray(
kwic(myCorpus, "image"),
kwic(myCorpus, "one"),
kwic(myCorpus, "like"),
kwic(myCorpusus, "time"),
kwic(myCorpus, "just"),
scale = "absolute"
)
如何使用 myCorpus$documents[,"author"]
作为文档标识符而不是文档 ID?
我不是要对文档进行分组,我只是想通过作者来识别文档。我认识到文档 ID 需要是唯一的,所以不能简单地用 docnames(myCorpus)<-
textplot 文档名称取自 docnames
语料库。在这种情况下,您希望创建按 author
文档变量分组的新文档。这可以使用 texts()
提取器函数及其 groups
参数来完成。
为了创建一个可重现的示例,我将使用 built-in 数据对象 data_char_sampletext
,并将其分割成句子以形成新文档,然后模拟作者 docvar。
library("quanteda")
# quanteda version 1.0.0
myCorpus <- corpus(data_char_sampletext) %>%
corpus_reshape(to = "sentences")
# make some duplicated author docvar values
set.seed(1)
docvars(myCorpus, "author") <-
sample(c("author1", "author2", "author3"),
size = ndoc(myCorpus), replace = TRUE)
这会产生:
summary(myCorpus)
# Corpus consisting of 15 documents:
#
# Text Types Tokens Sentences author
# text1.1 23 23 1 author1
# text1.2 40 53 1 author2
# text1.3 48 63 1 author2
# text1.4 30 39 1 author3
# text1.5 20 25 1 author1
# text1.6 43 57 1 author3
# text1.7 13 15 1 author3
# text1.8 25 26 1 author2
# text1.9 9 9 1 author2
# text1.10 37 53 1 author1
# text1.11 32 41 1 author1
# text1.12 30 30 1 author1
# text1.13 28 35 1 author3
# text1.14 16 18 1 author2
# text1.15 32 42 1 author3
#
# Source: /Users/kbenoit/tmp/* on x86_64 by kbenoit
# Created: Fri Feb 16 18:03:13 2018
# Notes: corpus_reshape.corpus(., to = "sentences")
现在,我们将文本提取为字符向量,通过 author
文档变量对它们进行分组。这会生成一个长度为 3 的命名字符向量,其中名称是(唯一的)作者标识符。
groupedtexts <- texts(myCorpus, groups = "author")
length(groupedtexts)
# [1] 3
names(groupedtexts)
# [1] "author1" "author2" "author3"
然后(如图):
textplot_xray(
kwic(groupedtexts, "and"),
kwic(groupedtexts, "for")
)