R 用表情符号发推特

R 用表情符号发推特,r,regex,twitter,R,Regex,Twitter,我放弃了twitter API和包rtweet中的tweet,但我不知道如何使用emojis文本,因为它们的格式为“\U0001f600”,我尝试的所有正则表达式代码直到现在都失败了。我什么也得不到 比如说 text = 'text text. \U0001f600' grepl('U',text) 给我假的 grepl('000',text) 也给我假 另一个问题是,它们通常会粘在前面的单词上(例如我在这里\U0001f600) 那么我如何让R识别这种格式的表情符号呢?我可以在gre

我放弃了twitter API和包
rtweet
中的tweet,但我不知道如何使用emojis文本,因为它们的格式为“\U0001f600”,我尝试的所有正则表达式代码直到现在都失败了。我什么也得不到

比如说

 text = 'text text. \U0001f600'
 grepl('U',text)
给我假的

 grepl('000',text)
也给我假

另一个问题是,它们通常会粘在前面的单词上(例如
我在这里\U0001f600


那么我如何让R识别这种格式的表情符号呢?我可以在grepl中输入什么内容,以使该格式的任何表情都返回TRUE?

在R中,大多数东西都有一个包。在本例中,它附带了
词典
包,其中包含大量词典。使用textclean,您可以使用两个功能,
replace\u emoji
replace\u emoji\u identifier

text = c("text text. \U0001f600", "i am here\U0001f600")

# replace emoji with identifier:
textclean::replace_emoji_identifier(text)
[1] "text text. lexiconvygwtlyrpywfarytvfis " "i am here lexiconvygwtlyrpywfarytvfis " 

# replace emoji with text representation
textclean::replace_emoji(text)
[1] "text text. grinning face " "i am here grinning face " 
接下来,您可以使用
mountair
在表情符号上使用情绪评分,或用于文本分析
quanteda
。如果您只想检查预期输出中的状态:

grepl("lexicon[[:alpha:]]{20}", textclean::replace_emoji_identifier(text))
[1] TRUE TRUE

在R中,大多数东西都有一个包。在本例中,它附带了
词典
包,其中包含大量词典。使用textclean,您可以使用两个功能,
replace\u emoji
replace\u emoji\u identifier

text = c("text text. \U0001f600", "i am here\U0001f600")

# replace emoji with identifier:
textclean::replace_emoji_identifier(text)
[1] "text text. lexiconvygwtlyrpywfarytvfis " "i am here lexiconvygwtlyrpywfarytvfis " 

# replace emoji with text representation
textclean::replace_emoji(text)
[1] "text text. grinning face " "i am here grinning face " 
接下来,您可以使用
mountair
在表情符号上使用情绪评分,或用于文本分析
quanteda
。如果您只想检查预期输出中的状态:

grepl("lexicon[[:alpha:]]{20}", textclean::replace_emoji_identifier(text))
[1] TRUE TRUE

您的问题是在代码中使用了单个字符
\

text = 'text text. \U0001f600'
它真的应该是
\

text = 'text text. \\U0001f600'
我在使用图书馆时也有过类似的经历

在我的例子中,tweet带来了一些Unicode代码点,而不仅仅是表情符号,并且具有以下格式:
“一些文本”
。在本例中,我所做的是将代码点“转换”为其图形表示:

library(stringi)

#I use gsub() to replace "<U+code-point>" with "\\ucode-point", the appropriate format
# And stri_unescape_unicode() to un-escape all Unicode sequences    
stri_unescape_unicode(gsub("<U\\+(\\S+)>",
                                   "\\\\u\\1", #replace by \\ucode-point
                                   "some text with #COVID<U+30FC>19"))
#[1] "some text with #COVIDー19"
库(stringi)
#我使用gsub()将“”替换为“\\ucode point”,即适当的格式
#和stri_unescape_unicode()取消对所有unicode序列的转义
stri_unescape_unicode(gsub(““,”),
“\\\u\\1”,替换为\\u代码点
“一些带有#COVID19“)的文本)
#[1] “一些带有#新冠病毒的文本ー19"
如果Unicode代码点没有像我的例子()中那样进行分隔,则应将正则表达式从
更改为
“U(\\S+)”
。这里您应该小心,因为如果在代码点之后出现空格字符,这将正常工作。如果在代码点之前和之后都附加了单词,则必须更加具体,并指明组成该代码点的字符数,例如
“U(..)

您可以尝试使用字符类细化此正则表达式,或仅指定十六进制数字
“U([A-Fa-f0-9]+)”

请注意,在RStudio控制台中,不会看到表情符号,您可以应用此功能,但要查看表情符号,必须使用R库。但是,可以看到其他字符:
“#COVID19”
在RStudio控制台中显示为
“#COVID”ー19“

编辑:实际上,
“\\S+”
在有连续的Unicode代码点(如
)时对我不起作用。在本例中,它只替换了第一个匹配项,我没有深入研究,只是将正则表达式更改为

“[A-Fa-f0-9]”
表示十六进制数字。

您的问题是在代码中使用单个字符
\

text = 'text text. \U0001f600'
它真的应该是
\

text = 'text text. \\U0001f600'
我在使用图书馆时也有过类似的经历

在我的例子中,tweet带来了一些Unicode代码点,而不仅仅是表情符号,并且具有以下格式:
“一些文本”
。在本例中,我所做的是将代码点“转换”为其图形表示:

library(stringi)

#I use gsub() to replace "<U+code-point>" with "\\ucode-point", the appropriate format
# And stri_unescape_unicode() to un-escape all Unicode sequences    
stri_unescape_unicode(gsub("<U\\+(\\S+)>",
                                   "\\\\u\\1", #replace by \\ucode-point
                                   "some text with #COVID<U+30FC>19"))
#[1] "some text with #COVIDー19"
库(stringi)
#我使用gsub()将“”替换为“\\ucode point”,即适当的格式
#和stri_unescape_unicode()取消对所有unicode序列的转义
stri_unescape_unicode(gsub(““,”),
“\\\u\\1”,替换为\\u代码点
“一些带有#COVID19“)的文本)
#[1] “一些带有#新冠病毒的文本ー19"
如果Unicode代码点没有像我的例子()中那样进行分隔,则应将正则表达式从
更改为
“U(\\S+)”
。这里您应该小心,因为如果在代码点之后出现空格字符,这将正常工作。如果在代码点之前和之后都附加了单词,则必须更加具体,并指明组成该代码点的字符数,例如
“U(..)

您可以尝试使用字符类细化此正则表达式,或仅指定十六进制数字
“U([A-Fa-f0-9]+)”

请注意,在RStudio控制台中,不会看到表情符号,您可以应用此功能,但要查看表情符号,必须使用R库。但是,可以看到其他字符:
“#COVID19”
在RStudio控制台中显示为
“#COVID”ー19“

编辑:实际上,
“\\S+”
在有连续的Unicode代码点(如
)时对我不起作用。在本例中,它只替换了第一个匹配项,我没有深入研究,只是将正则表达式更改为

“[A-Fa-f0-9]”
表示十六进制数字。

没有
U
,没有
000
,请参阅。有
如果你想用rtweet去掉这些字符,你可以用rtweet::plain_tweets(你的文本栏名)@WiktorStribiżew我想用它们做很多事情(数一数,排序,看看哪个发生得最多)但首先我想摆脱它们,因为它们在我的wordcloud中看起来不好看。@HarroCyranka我想保留它们并隔离t