worker <- worker(bylines = FALSE) > words <- segment(comments,worker) > # 删除停用词 > words <- removeWords(words, stopwords) Error in gsub(sprintf("(*UCP)\\b(%s)\\b", paste(sort(words, decreasing = TRUE), : 'pattern' is invalid UTF-8
时间: 2023-06-16 12:01:58 浏览: 116
这个错误通常是由于输入文本中包含非 UTF-8 编码字符导致的。你可以尝试使用 `iconv()` 函数将输入文本转换为 UTF-8 编码,例如:
```R
comments <- iconv(comments, from = "gbk", to = "UTF-8//IGNORE")
```
这里假设输入文本编码为 GBK,你可以根据实际情况进行相应的调整。`//IGNORE` 参数可以忽略无法转换的字符,避免出现相同的错误。然后再执行分词和停用词过滤的操作。
相关问题
library(jiebaR) > library(tm) > cm1 <- readxl::read_excel("cm1.xlsx") > # 合并所有评论 > comments <- paste(cm1$comments, collapse = "") > # 重新读取停用词表,确保每个词语都在单独的一行中 > stopwords <- readLines("my_stopwords.txt", encoding = "UTF-8", warn = FALSE) > # 确认 stopwords 变量是长度为1的字符向量 > stopwords <- paste(stopwords, collapse = "\n") > # 使用 jiebaR 包进行分词 > worker <- worker(bylines = FALSE) > words <- segment(comments,worker) > # 删除停用词 > words <- removeWords(words, stopwords) Error in gsub(sprintf("(*UCP)\\b(%s)\\b", paste(sort(words, decreasing = TRUE), : 'pattern' is invalid UTF-8
这个错误可能是由于停用词表文件的编码格式与你的 R 会话不兼容导致的。你可以尝试在读取停用词表时指定编码格式,例如:
```
stopwords <- readLines("my_stopwords.txt", encoding = "UTF-8-BOM", warn = FALSE)
```
如果仍然出现相同的错误,请检查你的停用词表文件是否包含无效的 UTF-8 字符。你可以使用其他编辑器或工具检查文件,并尝试手动删除或替换这些字符。
阅读全文