我尝试使用R,jiebaR和语料库生成一个词云并获取中文语音的词频,但无法生成语料库。这是我的代码:

library(jiebaR)
library(stringr)
library(corpus)

cutter <- worker()

v36 <- readLines('v36.txt', encoding = 'UTF-8')

seg_x <- function(x) {str_c(cutter[x], collapse = '')}

x.out <- sapply(v36, seg_x, USE.NAMES = FALSE)

v36.seg <- x.out
v36.seg

library(quanteda)

corpus <- corpus(v36.seg)  #Error begins here.
summary(corpus, showmeta = TRUE, 1)
texts(corpus)[1]

tokens(corpus, what = 'fasterword')[1]

tokens <- tokens(v36.seg, what = 'fasterword')
dfm <- dfm(tokens)
dfm



我的文本文件包含以下几段:

r - 读取txt中的中文时出错:corpus()仅适用于字符,语料库,语料库,data.frame,kwic对象-LMLPHP

创建语料库时错误开始。 R返回:
Error in corpus.default(v36.seg) :
  corpus() only works on character, corpus, Corpus, data.frame, kwic objects.

我不明白为什么文字有问题。谢谢您能帮助我解决问题。谢谢。

最佳答案

给定注释中的文本示例,我将其放在文本文件中。接下来,根据Ken的指示,您将看到在Quanteda中可以很好地使用该文本。从那里,您可以执行所需的所有NLP。请在Quanteda参考页上检查Chinese example

免责声明:由于系统认为我正在发送垃圾邮件,因此,我似乎无法将您评论中的中文示例文本粘贴到此答案中:

library(quanteda)
library(readtext)

v36 <- readtext::readtext("v36.txt", encoding = "UTF8")

my_dfm <- v36 %>%  corpus() %>%
  tokens(what = "word") %>%
  dfm()

# show frequency to check if words are available.
dplyr::as_tibble(textstat_frequency(my_dfm))

# A tibble: 79 x 5
   feature frequency  rank docfreq group
   <chr>       <dbl> <int>   <dbl> <chr>
 1 ,              6     1       1 all
 2 政府            6     1       1 all
 3 。              5     3       1 all
 4 在              3     4       1 all
 5 的              3     4       1 all
 6 安排            3     4       1 all
 7 發言人          2     7       1 all
 8 (              2     7       1 all
 9 一月            2     7       1 all
10 )              2     7       1 all
# ... with 69 more rows

关于r - 读取txt中的中文时出错:corpus()仅适用于字符,语料库,语料库,data.frame,kwic对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59943477/

10-12 17:41