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("からだに", "いいもの",
                                        "KARADA", "GOOD",
                                        paste0("いいもの",
                                               emoji_name[150:300]),
                                        "KARADA GOOD",
                                        paste0("からだに",
                                               emoji_name[150:300],
                                               emoji_name[150:300],
                                               "いいもの")),
                                      n, replace = TRUE))
########

#絵文字が含まれるテキストをカウント:emoji_summaryコマンド
#テキストデータを指定:tweet_textオプション
#Twitterデータではないので処理後に行名を変更しています
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

#テキスト内の絵文字のuniコードと数をカウント:emoji_extract_unnestコマンド
#絵文字1つ毎に1行が返される
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

#テキスト内の絵文字のuniコードを取得:emoji_extract_nestコマンド
#uniコードはlistで返される
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   "からだに\U0001f590\U0001f3fd\U0001f590\U0001f3fdいいもの" <chr [4]>     
#2 ID2   "いいもの\U0001f4ab"                                       <chr [1]>     
#3 ID3   "いいもの\U0001f5e8<U+FE0F>"                               <chr [1]>     
#4 ID4   "いいもの\U0001f590\U0001f3fe"                             <chr [2]>     
#5 ID5   "いいもの\U0001f4a2"                                       <chr [1]>  

#絵文字のカテゴリを表示:emoji_categorizeコマンド
TestData %>%
  emoji_categorize(tweet_text = Text_Data)
# A tibble: 2,949 x 3
#Group Text_Data                              .emoji_category  
#<chr> <chr>                                  <chr>            
#1 ID2   "いいもの\U0001f4ab"                   Smileys & Emotion
#2 ID3   "いいもの\U0001f5e8<U+FE0F>"           Smileys & Emotion
#3 ID5   "いいもの\U0001f4a2"                   Smileys & Emotion
#4 ID6   "いいもの\U0001f4a6"                   Smileys & Emotion
#5 ID7   "からだに\U0001f649\U0001f649いいもの" Smileys & Emotion
#6 ID8   "いいもの\U0001f499"                   Smileys & Emotion
#7 ID9   "いいもの\U0001f49f"                   Smileys & Emotion
#8 ID11  "からだに\U0001f4a9\U0001f4a9いいもの" Smileys & Emotion
#9 ID12  "いいもの\U0001f649"                   Smileys & Emotion
#10 ID15  "いいもの\U0001f47e"                   Smileys & Emotion
# ... with 2,939 more rows

#データ内の絵文字使用ランキング:top_n_emojisコマンド
#表示する順位:nオプション
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をコピーしました