quanteda - 按百分比查找最常见的术语

问题描述

我经常使用以下代码从文本中查找 top-n 特征:

    top_n_terms <- text %>% 
      tokens(remove_numbers = TRUE,remove_punct = TRUE,remove_symbols = TRUE) %>% 
      tokens_ngrams(n = 1:3) %>% 
      dfm() %>% 
      dfm_remove(stopwords("en")) %>% 
      topfeatures(n = 3000)

此外,我想用 xx% 输入而不是 n = xx 找到前 10% 的特征。我该如何调整代码

非常感谢您的帮助。

解决方法

您可以使用函数 nfeat() 来获取特征的数量。将此乘以 0.1,您可以自动获得它。或者您可以在此代码之前定义一个变量,您可以在其中指定所需的百分比。

请参阅下面使用 data_corpus_inaugural 的示例。使用您的选择,这应该有 190261 个特征,但使用具有 10% 选择的代码会返回 19026 个特征。

top_n_terms <- data_corpus_inaugural  %>% 
  tokens(remove_numbers = TRUE,remove_punct = TRUE,remove_symbols = TRUE) %>% 
  tokens_ngrams(n = 1:3) %>% 
  dfm() %>% 
  dfm_remove(stopwords("en")) %>% 
  topfeatures(n = nfeat(.) * 0.1) # note the . in nfeat. replace 0.1 with variable if needed.

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...