在 Quantida 中构建具有较小语料库文本的语料库作为变量

Build a Corpus with smaller corpuses texts as variable in Quantida

我是初学者 r 用户,我的项目需要一些帮助。

我想建立一个用于文本分析的量化语料库。我从许多网站上抓取了网页,从而获得了每个网站的数据框。我要做的是分析文本数据。我有兴趣了解这些网页的整体内容,但我也希望将单个网站作为变量,我可以 select 因为我想看看这个级别是否有任何显着变化。我尝试为每个站点语料库分配不同的标签,然后合并它们:

corp_site1<-语料库(dataframe_site1$txt, meta= "site1")

corp_site2<-语料库(dataframe_site2$txt, meta= "site2")

corp_site3<-语料库(dataframe_site3$txt, meta= "site3")

corp_tot<-corp_site1+corp_site2+corp_site3

当我尝试执行最后一个代码时,我收到以下错误消息:

错误:无法将语料库与重复的文档名称合并

我不确定此消息的含义(我试图在 google 上查找但找不到任何内容)并且我不知道我做错了什么。我还查看了 docnames 和 docvars,它们不能用于我的情况,因为我没有定义站点名称的数据框级元素。

如有任何帮助,我们将不胜感激!

错误是因为你有三个语料库对象,每个对象都有一个同名文档。在 quanteda 中,文档名必须是唯一的。

另一个问题是您试图将网站名称指定为“元数据”,它特定于语料库,而不是每个文档。 (语料库元数据也需要采用命名列表的格式。)

更好的方法是在构建语料库之前合并数据。如果 non-textual 数据在 data.frame 中,它将自动导入为“docvar”或 document-level 元数据字段。下面,我展示了一个示例,其中使用了一些与您抓取的 data.frame 对象的结构相匹配的样本数据。

# create sample data
data_frame_site1 <- data.frame(
  txt = "This is website one.",
  meta = "site1"
)
data_frame_site2 <- data.frame(
  txt = "This is website two.",
  meta = "site2"
)
data_frame_site3 <- data.frame(
  txt = "This is website three.",
  meta = "site3"
)

现在让我们创建一个对象。我这样做是为了在此处合并所有名为 data_frame_* 的数据对象,因为如果您有很多这样的对象,您可能会发现它更方便。

# puts all of your objects into one data.frame
all_df <- do.call(rbind, lapply(ls(pattern = "^data_frame_"), get))
all_df
##                      txt  meta
## 1   This is website one. site1
## 2   This is website two. site2
## 3 This is website three. site3

制作语料库现在很容易,它会自动将您的 meta 列导入为文档变量。

# now make the corpus
library("quanteda")
## Package version: 2.1.2

corp <- corpus(all_df, text_field = "txt")
corp
## Corpus consisting of 3 documents and 1 docvar.
## text1 :
## "This is website one."
## 
## text2 :
## "This is website two."
## 
## text3 :
## "This is website three."
summary(corp)
## Corpus consisting of 3 documents, showing 3 documents:
## 
##   Text Types Tokens Sentences  meta
##  text1     5      5         1 site1
##  text2     5      5         1 site2
##  text3     5      5         1 site3