R语言使用iconv编码emoji后含表情文本返回NA问题求解
问题原因
你使用iconv(texts, 'UTF-8', 'ASCII')转码时,ASCII字符集不支持emoji这类Unicode特殊字符,iconv默认遇到无法转换的字符就会返回NA,这就是含emoji的第4条消息内容丢失的核心原因。
解决方法
根据你的需求可以选择两种方案:
不需要保留emoji,仅保留文本内容
给iconv添加sub参数,指定无法转换的字符的替换规则,避免返回NA:texts = posts$message # 无法转换的字符直接删除 texts <- iconv(texts, 'UTF-8', 'ASCII', sub = "") # 如果需要标记emoji位置,也可以替换为自定义标识,比如 sub = "[emoji]" corpus <- Corpus(VectorSource(texts))修改后运行
inspect(corpus[4])就能正常看到除emoji外的完整文本内容。需要保留emoji用于情感分析
目前主流的R文本处理包(tm、tidytext等)都原生支持UTF-8编码,完全不需要转成ASCII,直接用原始UTF-8文本构建语料库即可:texts = posts$message # 去掉转ASCII的代码,直接构建语料库 corpus <- Corpus(VectorSource(texts))如果后续需要将emoji纳入情感计算,可以使用
emoji包将emoji转换为对应的文本描述(比如蓝色爱心转换为:blue_heart:),再匹配情感词典计算分值即可。
内容的提问来源于stack exchange,提问作者Nabboitaliae
相关产品推荐
相关产品推荐

