在 R 中转换表情符号文本
Transforming emoji text in R
在 R 中进行一些文本挖掘。我有一个包含 25k 文档的语料库。我目前正在清理我的语料库,作为这个过程的一部分,我正在翻译成小写字母。我的实现:
createCorpus <- function(corpusData){
aCorpus <- Corpus(DataframeSource(corpusData))
...
aCorpus <- tm_map(aCorpus,content_transformer(tolower))
}
但是,对于任何包含表情符号的文档文本,我都会收到以下错误。请注意,我删除了 actual 文本。
Error in FUN(content(x), ...) : invalid input '...' in
'utf8towcs'
现在,我尝试按照 this answer 中的建议在 转换为小写之前添加 str_replace_all(aCorpus$content,"[^[:graph:]]", " ")
。这会产生与上面完全相同的错误,几乎就像它实际上没有做任何事情一样。
我也按照建议 here 尝试了 tm_map(aCorpus, function(x) iconv(enc2utf8(x), sub = "byte"))
,但出现错误:
Error in enc2utf8(x) : argument is not a character vector
我觉得 str_replace_all()
是正确的方法,但我一定做错了什么?如何删除所有表情符号字符以便清理我的语料库?
EDIT 为了澄清起见,传递给函数的参数是单列数据框,其中每一行都是一个单独的文档。
我设法使用以下方法解决了问题:
tm_map(aCorpus, function(x) iconv(enc2utf8(x$content), sub = "byte"))
代替:
tm_map(aCorpus, function(x) iconv(enc2utf8(x), sub = "byte"))
问题是我必须直接参考语料库的内容,而不仅仅是语料库本身。通过使用 x$content
作为参数而不仅仅是 x
.
来实现
在 R 中进行一些文本挖掘。我有一个包含 25k 文档的语料库。我目前正在清理我的语料库,作为这个过程的一部分,我正在翻译成小写字母。我的实现:
createCorpus <- function(corpusData){
aCorpus <- Corpus(DataframeSource(corpusData))
...
aCorpus <- tm_map(aCorpus,content_transformer(tolower))
}
但是,对于任何包含表情符号的文档文本,我都会收到以下错误。请注意,我删除了 actual 文本。
Error in FUN(content(x), ...) : invalid input '...' in 'utf8towcs'
现在,我尝试按照 this answer 中的建议在 转换为小写之前添加 str_replace_all(aCorpus$content,"[^[:graph:]]", " ")
。这会产生与上面完全相同的错误,几乎就像它实际上没有做任何事情一样。
我也按照建议 here 尝试了 tm_map(aCorpus, function(x) iconv(enc2utf8(x), sub = "byte"))
,但出现错误:
Error in enc2utf8(x) : argument is not a character vector
我觉得 str_replace_all()
是正确的方法,但我一定做错了什么?如何删除所有表情符号字符以便清理我的语料库?
EDIT 为了澄清起见,传递给函数的参数是单列数据框,其中每一行都是一个单独的文档。
我设法使用以下方法解决了问题:
tm_map(aCorpus, function(x) iconv(enc2utf8(x$content), sub = "byte"))
代替:
tm_map(aCorpus, function(x) iconv(enc2utf8(x), sub = "byte"))
问题是我必须直接参考语料库的内容,而不仅仅是语料库本身。通过使用 x$content
作为参数而不仅仅是 x
.