分析R中的Facebook评论以进行感伤分析。表情符号在<>之间的文本中进行编码。符号。
示例:
"Jesus te ama!!! <U+2764> Ou não...?<U+1F628> (fé em stand by)"
<U+2764>
和<U+1F628>
是表情符号(沉重的黑色心脏和可怕的脸,
分别地)。
因此,除了表情符号代码外,我需要拆分字/数字和标点/符号。 我用gsub函数做了这个:
a1 <- "([[:alpha:]])([[:punct:]])"
a2 <- "([[:punct:]])([[:alpha:]])"
b <- "\\1 \\2"
gsub(a1, b, gsub(a2, b, "Jesus te ama!!! <U+2764> Ou não...?<U+1F628> (fé em stand by)"))
...但是,从逻辑上讲,结果也会影响表情符号代码:
[1] "Jesus te ama !!! < U +2764> Ou não ...?< U +1F628> ( fé em stand by )"
目标是为&lt;&gt;之间的文本创建一个例外,将其拆分为外部并且不要在内部拆分 - 即:
[1] "Jesus te ama !!! <U+2764> Ou não ...? <U+1F628> ( fé em stand by )"
请注意:
- 有时句子/单词/ punct和表情符号代码之间的空格不存在(需要创建)
- 要求短片序列保持连接(例如&#34; !!!&#34;,&#34; ......?&#34;)
醇>
我该怎么做?
答案 0 :(得分:1)
您可以使用以下正则表达式解决方案:
a1 <- "(?<=<)U\\+\\w+>(*SKIP)(*F)|(?<=\\S)(?=<U\\+\\w+>)|(?<=[[:alpha:]])(?=[[:punct:]])|(?<=[[:punct:]])(?=[[:alpha:]])"
gsub(a1, " ", "Jesus te ama!!! <U+2764> Ou não...?<U+1F628> (fé em stand by)", perl=TRUE)
# => [1] "Jesus te ama !!! <U+2764> Ou não ...? <U+1F628> ( fé em stand by )"
此PCRE正则表达式(请参阅perl=TRUE
调用中的gsub
参数)匹配:
(?<=<)U\\+\\w+>(*SKIP)(*F)
- 一个U+
和1+个字符,如果前面有>
,则<
- 并且匹配值将被PCRE动词{{1}丢弃并且从本场比赛结束时查找下一场比赛(*SKIP)(*F)
- 或|
- 非空白字符必须立即出现在当前位置的左侧,并且(?<=\\S)(?=<U\\+\\w+>)
,1 +字字符和<U+
必须立即出现在当前位置的权利>
- 或|
- 必须在当前位置的左侧立即显示一封信,并且必须在当前位置的右侧立即显示标点符号(?<=[[:alpha:]])(?=[[:punct:]])
- 或|
- 必须在当前位置的左侧立即显示标点符号,并且必须在当前位置的右侧立即显示一个字母答案 1 :(得分:1)
> str <- "Jesus te ama!!! <U+2764> Ou não...?<U+1F628> (fé em stand by)"
> strsplit(str,"[[:space:]]|(?=[.!?])",perl=TRUE)
[[1]]
[1] "Jesus" "te" "ama" "!" "!" "!"
[7] "" "<U+2764>" "" "Ou" "não" "."
[13] "." "." "?" "<U+1F628>" "(fé" "em"
[19] "stand" "by)"