【问题标题】:Count certain letters in each document in a Quanteda corpus计算 Quanteda 语料库中每个文档中的某些字母
【发布时间】:2020-12-09 09:28:49
【问题描述】:

具体来说,我需要统计每个文档中每个元音的频率:ei 为“高”元音; aou 作为“低”元音。

有没有办法计算 R 中 quanteda 语料库中每个文档中某些字母的频率? 到目前为止,我只遇到过对单词或句子级别进行操作的函数,例如token_select()ntoken()

欢迎任何帮助。我考虑了一个正则表达式模式,但我不确定如何将它应用于 Quanteda 语料库中的每个单独文档并从中获取计数。

这是一个可以玩的最小工作示例:

require(quanteda)

text1 <- "This is some gibberish for you."
text2 <- "Some more gibberish. Enjoy!"
text3 <- "Gibber, gibber, gibber away."

corp <- rbind(text1, text2, text3) %>% 
  quanteda::corpus() 

【问题讨论】:

    标签: r data-science quanteda


    【解决方案1】:

    您想将文本标记为字符,然后使用字典将元音映射到高元音和低元音两类。方法如下:

    library("quanteda")
    ## Package version: 2.1.2
    
    text1 <- "This is some gibberish for you."
    text2 <- "Some more gibberish. Enjoy!"
    text3 <- "Gibber, gibber, gibber away."
    
    corp <- corpus(c(text1, text2, text3))
    
    toks <- tokens(corp, what = "character")
    dict <- dictionary(list(
      high_vowels = c("e", "i"),
      low_vowels = c("a", "o", "u")
    ))
    
    tokens_lookup(toks, dict) %>%
      dfm()
    ## Document-feature matrix of: 3 documents, 2 features (0.0% sparse).
    ##        features
    ## docs    high_vowels low_vowels
    ##   text1           6          4
    ##   text2           6          3
    ##   text3           6          2
    

    【讨论】:

    • 工作就像一个魅力。感觉从你的回复中学到了很多。之前我不明白 dictionary() 方法有多强大。现在想到了很多用例。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 2019-03-27
    • 1970-01-01
    • 2016-09-24
    相关资源
    最近更新 更多