Emoticons in Twitter Sentiment Analysis in r

后端 未结 2 1985
小鲜肉
小鲜肉 2020-12-03 05:35

How do I handle/get rid of emoticons so that I can sort tweets for sentiment analysis?

Getting: Error in sort.list(y) : invalid input

Thanks

and

相关标签:
2条回答
  • 2020-12-03 05:55

    This should get rid of the emoticons, using iconv as suggested by ndoogan.

    Some reproducible data:

    require(twitteR) 
    # note that I had to register my twitter credentials first
    # here's the method: http://stackoverflow.com/q/9916283/1036500
    s <- searchTwitter('#emoticons', cainfo="cacert.pem") 
    
    # convert to data frame
    df <- do.call("rbind", lapply(s, as.data.frame))
    
    # inspect, yes there are some odd characters in row five
    head(df)
    
                                                                                                                                                    text
    1                                                                      ROFLOL: echte #emoticons [humor] http://t.co/0d6fA7RJsY via @tweetsmania  ;-)
    2 “@teeLARGE: when tmobile get the iphone in 2 wks im killin everybody w/ emoticons &amp; \nall the other stuff i cant see on android!" \n#Emoticons
    3                      E poi ricevi dei messaggi del genere da tua mamma xD #crazymum #iloveyou #emoticons #aiutooo #bestlike http://t.co/Yee1LB9ZQa
    4                                                #emoticons I want to change my name to an #emoticon. Is it too soon? #prince http://t.co/AgmR5Lnhrk
    5  I use emoticons too much. #addicted #admittingit #emoticons <ed><U+00A0><U+00BD><ed><U+00B8><U+00AC><ed><U+00A0><U+00BD><ed><U+00B8><U+0081> haha
    6                                                                                         What you text What I see #Emoticons http://t.co/BKowBSLJ0s
    

    Here's the key line that will remove the emoticons:

    # Clean text to remove odd characters
    df$text <- sapply(df$text,function(row) iconv(row, "latin1", "ASCII", sub=""))
    

    Now inspect again, to see if the odd characters are gone (see row 5)

    head(df)    
                                                                                                                                   text
    1                                                                     ROFLOL: echte #emoticons [humor] http://t.co/0d6fA7RJsY via @tweetsmania  ;-)
    2 @teeLARGE: when tmobile get the iphone in 2 wks im killin everybody w/ emoticons &amp; \nall the other stuff i cant see on android!" \n#Emoticons
    3                     E poi ricevi dei messaggi del genere da tua mamma xD #crazymum #iloveyou #emoticons #aiutooo #bestlike http://t.co/Yee1LB9ZQa
    4                                               #emoticons I want to change my name to an #emoticon. Is it too soon? #prince http://t.co/AgmR5Lnhrk
    5                                                                                 I use emoticons too much. #addicted #admittingit #emoticons  haha
    6                                                                                        What you text What I see #Emoticons http://t.co/BKowBSLJ0s
    
    0 讨论(0)
  • 2020-12-03 05:59

    You can use regular expression to detect non-alphabet characters and remove them. Sample code:

    rmNonAlphabet <- function(str) {
      words <- unlist(strsplit(str, " "))
      in.alphabet <- grep(words, pattern = "[a-z|0-9]", ignore.case = T)
      nice.str <- paste(words[in.alphabet], collapse = " ")
      nice.str
    }
    
    0 讨论(0)
提交回复
热议问题