Rで解析:大変便利です!!絵文字が楽々集計できます「tidyEmoji」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

テキストに絵文字が含まれると抽出、集計が大変手間です。そんな手間を考えずにテキストの解析が可能な大変便利なパッケージの紹介です。

パッケージにはテキスト内の絵文字のカウントだけでなく、絵文字のカテゴリやデータ全体の絵文字使用ランキングなどのコマンドが収録されています。

テキスト解析の対象がSNSなどに広がっていますので大変便利なパッケージだと思います。パッケージHPを下記に紹介します。

tidyEmoji:https://cran.r-project.org/web/packages/tidyEmoji/vignettes/introduction.html

パッケージバージョンは0.1.0。実行コマンドはwindows 11のR version 4.1.2で確認しています。

スポンサーリンク

パッケージのインストール

下記、コマンドを実行してください。20.02.20にCRANからのインストールが可能なことを確認しました。

万が一インストールできない場合は以下よりパッケージの.tar.gzをダウンロードしてローカルでインストールしてください。

tidyEmoji:https://cran.r-project.org/web/packages/tidyEmoji/index.html

#パッケージのインストール
#devtools::install_github("PursuitOfDataScience/tidyEmoji")
#CRAN
install.packages("tidyEmoji")

実行コマンド

詳細はコメント、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("tidyEmoji")

###データ例の作成#####
#emojiパッケージがなければインストール
if(!require("emoji", quietly = TRUE)){
  install.packages("emoji");require("emoji")
}
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
set.seed(1234)
n <- 3000
TestData <- tibble(Group = paste0("ID", 1:n),
                   Text_Data = sample(c("&#12363;&#12425;&#12384;&#12395;", "&#12356;&#12356;&#12418;&#12398;",
                                        "KARADA", "GOOD",
                                        paste0("&#12356;&#12356;&#12418;&#12398;",
                                               emoji_name[150:300]),
                                        "KARADA GOOD",
                                        paste0("&#12363;&#12425;&#12384;&#12395;",
                                               emoji_name[150:300],
                                               emoji_name[150:300],
                                               "&#12356;&#12356;&#12418;&#12398;")),
                                      n, replace = TRUE))
########

#&#32117;&#25991;&#23383;&#12364;&#21547;&#12414;&#12428;&#12427;&#12486;&#12461;&#12473;&#12488;&#12434;&#12459;&#12454;&#12531;&#12488;:emoji_summary&#12467;&#12510;&#12531;&#12489;
#&#12486;&#12461;&#12473;&#12488;&#12487;&#12540;&#12479;&#12434;&#25351;&#23450;:tweet_text&#12458;&#12503;&#12471;&#12519;&#12531;
#Twitter&#12487;&#12540;&#12479;&#12391;&#12399;&#12394;&#12356;&#12398;&#12391;&#20966;&#29702;&#24460;&#12395;&#34892;&#21517;&#12434;&#22793;&#26356;&#12375;&#12390;&#12356;&#12414;&#12377;
TestData %>%
  emoji_summary(tweet_text = Text_Data) %>%
  rename(Emoji_Text = emoji_tweets,
         Total_Text = total_tweets)
# A tibble: 1 x 2
#Emoji_Text Total_Text
# <int>      <int>
#1 2949       3000

#&#12486;&#12461;&#12473;&#12488;&#20869;&#12398;&#32117;&#25991;&#23383;&#12398;uni&#12467;&#12540;&#12489;&#12392;&#25968;&#12434;&#12459;&#12454;&#12531;&#12488;:emoji_extract_unnest&#12467;&#12510;&#12531;&#12489;
#&#32117;&#25991;&#23383;&#65297;&#12388;&#27598;&#12395;&#65297;&#34892;&#12364;&#36820;&#12373;&#12428;&#12427;
TestData %>%
emoji_extract_unnest(tweet_text = Text_Data) 
# A tibble: 3,580 x 3
# row_number .emoji_unicode .emoji_count
#  <int> <chr>                 <int>
#1    1 "\U0001f3fd"              2
#2    1 "\U0001f590"              2
#3    2 "\U0001f4ab"              1
#4    3 "\U0001f5e8<U+FE0F>"      1
#5    4 "\U0001f3fe"              1
#6    4 "\U0001f590"              1
#7    5 "\U0001f4a2"              1
#8    6 "\U0001f4a6"              1
#9    7 "\U0001f649"              2
#10   8 "\U0001f499"              1
# ... with 3,570 more rows

#&#12486;&#12461;&#12473;&#12488;&#20869;&#12398;&#32117;&#25991;&#23383;&#12398;uni&#12467;&#12540;&#12489;&#12434;&#21462;&#24471;:emoji_extract_nest&#12467;&#12510;&#12531;&#12489;
#uni&#12467;&#12540;&#12489;&#12399;list&#12391;&#36820;&#12373;&#12428;&#12427;
TestData %>%
  emoji_extract_nest(tweet_text = Text_Data) %>%
  head(5)
# A tibble: 3,000 x 3
#Group Text_Data                                                  .emoji_unicode
#<chr> <chr>                                                      <list>        
#1 ID1   "&#12363;&#12425;&#12384;&#12395;\U0001f590\U0001f3fd\U0001f590\U0001f3fd&#12356;&#12356;&#12418;&#12398;" <chr [4]>     
#2 ID2   "&#12356;&#12356;&#12418;&#12398;\U0001f4ab"                                       <chr [1]>     
#3 ID3   "&#12356;&#12356;&#12418;&#12398;\U0001f5e8<U+FE0F>"                               <chr [1]>     
#4 ID4   "&#12356;&#12356;&#12418;&#12398;\U0001f590\U0001f3fe"                             <chr [2]>     
#5 ID5   "&#12356;&#12356;&#12418;&#12398;\U0001f4a2"                                       <chr [1]>  

#&#32117;&#25991;&#23383;&#12398;&#12459;&#12486;&#12468;&#12522;&#12434;&#34920;&#31034;&#65306;emoji_categorize&#12467;&#12510;&#12531;&#12489;
TestData %>%
  emoji_categorize(tweet_text = Text_Data)
# A tibble: 2,949 x 3
#Group Text_Data                              .emoji_category  
#<chr> <chr>                                  <chr>            
#1 ID2   "&#12356;&#12356;&#12418;&#12398;\U0001f4ab"                   Smileys & Emotion
#2 ID3   "&#12356;&#12356;&#12418;&#12398;\U0001f5e8<U+FE0F>"           Smileys & Emotion
#3 ID5   "&#12356;&#12356;&#12418;&#12398;\U0001f4a2"                   Smileys & Emotion
#4 ID6   "&#12356;&#12356;&#12418;&#12398;\U0001f4a6"                   Smileys & Emotion
#5 ID7   "&#12363;&#12425;&#12384;&#12395;\U0001f649\U0001f649&#12356;&#12356;&#12418;&#12398;" Smileys & Emotion
#6 ID8   "&#12356;&#12356;&#12418;&#12398;\U0001f499"                   Smileys & Emotion
#7 ID9   "&#12356;&#12356;&#12418;&#12398;\U0001f49f"                   Smileys & Emotion
#8 ID11  "&#12363;&#12425;&#12384;&#12395;\U0001f4a9\U0001f4a9&#12356;&#12356;&#12418;&#12398;" Smileys & Emotion
#9 ID12  "&#12356;&#12356;&#12418;&#12398;\U0001f649"                   Smileys & Emotion
#10 ID15  "&#12356;&#12356;&#12418;&#12398;\U0001f47e"                   Smileys & Emotion
# ... with 2,939 more rows

#&#12487;&#12540;&#12479;&#20869;&#12398;&#32117;&#25991;&#23383;&#20351;&#29992;&#12521;&#12531;&#12461;&#12531;&#12464;:top_n_emojis&#12467;&#12510;&#12531;&#12489;
#&#34920;&#31034;&#12377;&#12427;&#38918;&#20301;:n&#12458;&#12503;&#12471;&#12519;&#12531;
TestData %>%
  top_n_emojis(tweet_text = Text_Data, n = 5)
# A tibble: 5 x 4
#  emoji_name            unicode      emoji_category     n
#  <chr>                 <chr>        <chr>          <int>
#1 wave                  "\U0001f44b" People & Body    230
#2 light_skin_tone       "\U0001f3fb" Component        219
#3 medium_dark_skin_tone "\U0001f3fe" Component        204
#4 raised_back_of_hand   "\U0001f91a" People & Body    197
#5 vulcan_salute         "\U0001f596" People & Body    188

少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました