library(tidyverse)
library(easystats)
data("germeval_train", package = "pradadata")emojis1
emoji
textmining
string
Aufgabe
Extrahieren Sie die Anzahl der Emojis aus einem Text.
Nutzen Sie die GermEval-2018-Daten.
Die Daten sind unter CC-BY-4.0 lizensiert. Author: Wiegand, Michael (Spoken Language Systems, Saarland University (2010-2018), Leibniz Institute for the German Language (since 2019)),
Die Daten sind auch über das R-Paket PradaData zu beziehen.
Nutzen Sie diesen Text-Datensatz, bevor Sie den größeren germeval-Datensatz verwenden:
Daten
Teststring:
text <- c("Abbau, Abbruch ist jetzt",
"Test 🧑🎓 😄 heute!!",
"Abbruch #morgen #perfekt",
"Abmachung... LORE IPSUM",
"boese ja", "böse nein",
"hallo ?! www.google.de",
"gut schlecht I am you are he she it is")
n_emo <- c(2, 0, 2, 1, 1, 1, 0, 2)
test_text <-
data.frame(id = 1:length(text),
text = text,
n_emo = n_emo)
test_text| id | text | n_emo |
|---|---|---|
| 1 | Abbau, Abbruch ist jetzt | 2 |
| 2 | Test 🧑🎓 😄 heute!! | 0 |
| 3 | Abbruch #morgen #perfekt | 2 |
| 4 | Abmachung… LORE IPSUM | 1 |
| 5 | boese ja | 1 |
| 6 | böse nein | 1 |
| 7 | hallo ?! www.google.de | 0 |
| 8 | gut schlecht I am you are he she it is | 2 |
Hinweise:
- Orientieren Sie sich im Übrigen an den allgemeinen Hinweisen des Datenwerks.
Lösung
Setup
library(tidyverse)
library(tictoc)
library(emoji) # emoji_xxx
library(tidyEmoji)Test 1
test_text |>
mutate(n_emojis = emoji_count(text))| id | text | n_emo | n_emojis |
|---|---|---|---|
| 1 | Abbau, Abbruch ist jetzt | 2 | 0 |
| 2 | Test 🧑🎓 😄 heute!! | 0 | 3 |
| 3 | Abbruch #morgen #perfekt | 2 | 0 |
| 4 | Abmachung… LORE IPSUM | 1 | 0 |
| 5 | boese ja | 1 | 0 |
| 6 | böse nein | 1 | 0 |
| 7 | hallo ?! www.google.de | 0 | 0 |
| 8 | gut schlecht I am you are he she it is | 2 | 0 |
Das Paket emoji beinhaltet eine Menge Emojis:
emoji_name |> length()[1] 4698
Test2
test_text$text |>
emoji_subset()[1] "Test 🧑🎓 😄 heute!!"
TidyEmoji - Emojis kategorisieren
data.frame(tweets = c("I love tidyverse \U0001f600\U0001f603\U0001f603",
"R is my language! \U0001f601\U0001f606\U0001f605",
"This Tweet does not have Emoji!",
"Wearing a mask\U0001f637\U0001f637\U0001f637.",
"Emoji does not appear in all Tweets",
"A flag \U0001f600\U0001f3c1")) %>%
emoji_categorize(tweets)| tweets | .emoji_category |
|---|---|
| I love tidyverse 😀😃😃 | Smileys & Emotion |
| R is my language! 😁😆😅 | Smileys & Emotion |
| Wearing a mask😷😷😷. | Smileys & Emotion |
| A flag 😀🏁 | Smileys & Emotion|Flags |
test_text |>
emoji_categorize(text)| id | text | n_emo | .emoji_category |
|---|---|---|---|
| 2 | Test 🧑🎓 😄 heute!! | 0 | Smileys & Emotion|People & Body|Objects |
data(wild_emojis, package = "pradadata")wild_emojis |>
emoji_categorize(emoji)| emoji | .emoji_category |
|---|---|
| 💣 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 💀 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| ☠️ | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 😠 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 👹 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 💩 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 😡 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 🤢 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 🤮 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 😖 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 😣 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 😩 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 😨 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 😝 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 😳 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 😬 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 😱 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 😵 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| 😤 | Smileys & Emotion|NULL|NULL|NULL|NULL|NULL |
| ✊ | NULL|c(“People & Body”, “People & Body”)|NULL|NULL|NULL|NULL |
| 🖕 | NULL|People & Body|NULL|NULL|NULL|NULL |
| 👎️ | NULL|People & Body|NULL|NULL|NULL|NULL |
| 🤦♀️ | NULL|People & Body|NULL|NULL|NULL|Symbols |
| 🤦 | NULL|People & Body|NULL|NULL|NULL|NULL |
| 🔪 | NULL|NULL|Food & Drink|NULL|NULL|NULL |
| 🚑 | NULL|NULL|NULL|Travel & Places|NULL|NULL |
| 🔫 | NULL|NULL|NULL|NULL|Objects|NULL |
| 🗑 | NULL|NULL|NULL|NULL|Objects|NULL |
Alternativ kann man auch via Regex und Unicode Regex ansprechen… emoji_pattern <- "\\p{So}".
Das ist vermutlich cleverer 🤓.
Categories:
- emoji
- textmining
- string