首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将DFM转换成数据文件而保留文档?

如何将DFM转换成数据文件而保留文档?
EN

Stack Overflow用户
提问于 2020-02-26 17:49:42
回答 1查看 745关注 0票数 2

我正在使用quanteda软件包和关于它的非常好的教程来对纸质文章进行各种操作。随着时间的推移,我通过在mainwordsDFM中选择特定单词并使用textstat_frequency(mainwordsDFM, group = "Date")获得它们的频率,然后将结果转换为数据,然后用ggplot绘制。然而,我现在尝试绘制一个单词的频率随时间的变化,并通过纸。我在上一次操作中使用的解决方案在这种情况下不起作用,因为只可能包含一个变量来分组频率分析的结果。

因此,我想知道是否有可能将mainwordsDFM转换为数据格式,但是当我使用convert(mainwordsDFM, to = "data.frame")时,包含在dfm中的 docVars消失了,只留下所选单词.的出现。

是否有一种在不丢失docVars ?的情况下将此dfm转换为数据格式的方法?

正如您可能已经理解的,我对转换dfm感兴趣,因为它允许我保留特定的单词,当我的原始数据(从我制作语料库的地方,然后是令牌,然后是dfm)有完整的文本时。

我对它的效用表示怀疑,但下面是我的dfm负责人的dput:

代码语言:javascript
运行
复制
new("dfm", settings = list(), weightTf = list(scheme = "count", 
    base = NULL, K = NULL), weightDf = list(scheme = "unary", 
    base = NULL, c = NULL, smoothing = NULL, threshold = NULL), 
    smooth = 0, ngrams = 1L, skip = 0L, concatenator = "_", version = c(1L, 
    5L, 2L), docvars = structure(list(Date = structure(c(9132, 
    9136, 9136, 9141, 9141, 9142), class = "Date"), Journal = c("Libération", 
    "Libération", "Libération", "Libération", "Le Monde", "La Tribune (France)"
    ), Titre = c("Autriche, Finlande et Suède, trois nouveaux prêts à jouer les bons élèves", 
    "La Suède fait ses débuts dans l'Union européenne en passant par Paris", 
    "1994: Année gay?", "\"\"\"\"Le Péril jeune\"\"\"\" fait table rase des années 70", 
    "OLYMPISME   Un comité contre la discrimination des athlètes musulmanes a été créé  \"\"\"\"Atlanta Plus\"\"\"\" lutte pour l'exclusion des J.O. de 1996 des délégations exclusivement masculines", 
    "La démonstration de force des eurodéputés"), Auteur = c("MILLOT Lorraine", 
    "MILLOT Lorraine", "REMES Erik", "PERON Didier", "AULAGNON MICHELE", 
    NA), Year = structure(c(9131, 9131, 9131, 9131, 9131, 9131
    ), class = "Date"), mois = structure(c(9131, 9131, 9131, 
    9131, 9131, 9131), class = "Date")), row.names = c("1", "2", 
    "3", "4", "5", "6"), class = "data.frame"), i = 2:4, p = c(0L, 
    1L, 2L, 3L, 3L), Dim = c(6L, 4L), Dimnames = list(docs = c("1", 
    "2", "3", "4", "5", "6"), features = c("sexisme", "féminisme", 
    "droitsdesfemmes", "égalitédessexes")), x = c(1, 2, 1), factors = list())

这里是史泰尔:

代码语言:javascript
运行
复制
Formal class 'dfm' [package "quanteda"] with 15 slots
  ..@ settings    : list()
  ..@ weightTf    :List of 3
  .. ..$ scheme: chr "count"
  .. ..$ base  : NULL
  .. ..$ K     : NULL
  ..@ weightDf    :List of 5
  .. ..$ scheme   : chr "unary"
  .. ..$ base     : NULL
  .. ..$ c        : NULL
  .. ..$ smoothing: NULL
  .. ..$ threshold: NULL
  ..@ smooth      : num 0
  ..@ ngrams      : int 1
  ..@ skip        : int 0
  ..@ concatenator: chr "_"
  ..@ version     : int [1:3] 1 5 2
  ..@ docvars     :'data.frame':    16014 obs. of  6 variables:
  .. ..$ Date   : Date[1:16014], format: "1995-01-02" "1995-01-06" "1995-01-06" "1995-01-11" ...
  .. ..$ Journal: chr [1:16014] "Libération" "Libération" "Libération" "Libération" ...
  .. ..$ Titre  : chr [1:16014] "Autriche, Finlande et Suède, trois nouveaux prêts à jouer les bons élèves" "La Suède fait ses débuts dans l'Union européenne en passant par Paris" "1994: Année gay?" "\"\"\"\"Le Péril jeune\"\"\"\" fait table rase des années 70" ...
  .. ..$ Auteur : chr [1:16014] "MILLOT Lorraine" "MILLOT Lorraine" "REMES Erik" "PERON Didier" ...
  .. ..$ Year   : Date[1:16014], format: "1995-01-01" "1995-01-01" "1995-01-01" "1995-01-01" ...
  .. ..$ mois   : Date[1:16014], format: "1995-01-01" "1995-01-01" "1995-01-01" "1995-01-01" ...
  ..@ i           : int [1:14822] 2 10 13 14 18 19 20 24 25 26 ...
  ..@ p           : int [1:5] 0 2935 8389 14690 14822
  ..@ Dim         : int [1:2] 16014 4
  ..@ Dimnames    :List of 2
  .. ..$ docs    : chr [1:16014] "1" "2" "3" "4" ...
  .. ..$ features: chr [1:4] "sexisme" "féminisme" "droitsdesfemmes" "égalitédessexes"
  ..@ x           : num [1:14822] 1 2 1 1 1 1 1 1 1 1 ...
  ..@ factors     : list()

非常感谢,问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-26 18:03:10

假设您的dfm被称为test,您可以这样做:

代码语言:javascript
运行
复制
library(magrittr)
test %>% 
  convert(to = "data.frame") %>% 
  cbind(docvars(test))

或者没有管道:

代码语言:javascript
运行
复制
cbind(convert(test, to = "data.frame"), docvars(test))

据我所知,这是唯一的方法,因为convert不提取文档变量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60419692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档