我正在使用R使用阿拉伯语进行情感分析,在清理步骤中,我需要删除单个字符。 我使用此代码将其删除,并且可以正常工作,但是出现了一些问题
例如这里是数据
R<-("للمدافعين قال شركة وطنية قلت أقنعهم يعاملوننا كمواطنينقال جودتها عالية قلت جيدة غيرها غ")
正如您在此处看到的,“غ”是单个字符
gsub(" *\\b[[:alpha:]]{1}\\b *", "", R)
[1] "للمدافعين قال شركة وطنية قلت أقنعهم يعاملوننا كمواطنينقال جودتها عالية قلت جيدة غيرها\n"
但是当我尝试将其应用到像此处这样的文本列的整个数据集上
subdata1$text = gsub("*\\b[[:alpha:]]{1}\\b *", "", subdata1$text)
它不能删除任何东西,我也不知道为什么?
希望您了解我
谢谢
答案 0 :(得分:1)
在您的情况下,似乎[:alpha:]
POSIX字符类不适用于所有Unicode字母。
我建议使用PCRE模式:
gsub("(*UCP)\\b\\p{L}\\b", "", R, perl=TRUE)
在这里,(*UCP)
必须使\b
字边界能够识别Unicode,并且\p{L}
与BMP平面中的任何Unicode字母匹配。 perl=TRUE
参数是使用PCRE regex引擎处理模式所必需的。