首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在txt中读取中文时出错:语料库()仅适用于字符、语料库、语料库、data.frame、kwic对象

在txt中读取中文时出错:语料库()仅适用于字符、语料库、语料库、data.frame、kwic对象
EN

Stack Overflow用户
提问于 2020-01-28 14:51:35
回答 2查看 351关注 0票数 4

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

代码语言:javascript
复制
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返回:

代码语言:javascript
复制
Error in corpus.default(v36.seg) : 
  corpus() only works on character, corpus, Corpus, data.frame, kwic objects.

我不明白为什么文本是有问题的。如果你能帮我解决这个问题,我将非常感激。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-01-28 22:32:56

在注释中给出您的文本示例,我将它们放在一个文本文件中。接下来,按照Ken的说明,您将看到该文本在quanteda中可以很好地使用。从那里你可以做你需要的所有NLP。一定要查看quanteda参考页面上的Chinese example

免责声明:我似乎无法将您评论中的中文示例文本粘贴到此答案中,因为系统认为我放入了垃圾邮件:-(

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2020-01-28 21:52:27

没有一个可重复的例子是无法判断的,但我可以提出两个可能解决这个问题的方法。第一种方法是使用readtext包简化文本文件的读取。第二,你肯定需要"word“标记器,而不是"fasterword”,它只是简单地拆分空格-中国人不会在单词之间使用空格。" word“知道中文单词的界限。

试试这个:

代码语言:javascript
复制
library("quanteda")

readtext::readtext("v36.rtxt") %>%
    corpus() %>%
    tokens(what = "word") %>%
    dfm()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59943477

复制
相关文章

相似问题

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