У меня есть такие данные:
library(dplyr)
glimpse(samp)
Observations: 10
Variables: 2
$ text <chr> "@VirginAmerica What @dhepburn said.", "@VirginAmerica plus you've ...
$ airline_sentiment <chr> "neutral", "positive", "neutral", "negative", "negative", "negative...
Я хочу сравнить вхождение слов в текстовой переменной со словами в лексиконе, т. Е. Я хочу посчитать, как часто в тексте появляется определенное слово на основе лексикона.
Лексикон выглядит так
library(lexicon)
hash_sentiment_sentiword[1:5]
x y
1: 365 days -0.50
2: 366 days 0.25
3: 3tc -0.25
4: a fortiori 0.25
5: a good deal 0.25
Я знаю, что есть такие функции, как str_detect
. Однако из этого я получаю только значения true / false.
Результат должен быть таким (псевдокод):
text x y n
1. word 1 word 1 score 2
2. word 2 word 2 score 1
3. word 3 word 3 score 10
4. word 4 word 4 score 0
5. word 5 word 5 score 0
...
текст: слово текстового столбца из samp
;
x и y: столбец x и y из hash_sentiment_sentiword
;
n: частота появления слова x в тексте. Например, слово «удивительный» находится в x и встречается в тексте один раз. Так что для «удивительного» n будет 1. «страна» не в х, а в тексте. Так что п будет 0.
Вот маленький dput()
:
dput(samp)
structure(list(text = c("@VirginAmerica Thanks!", "@VirginAmerica SFO-PDX schedule is still MIA.",
"@VirginAmerica So excited for my first cross country flight LAX to MCO I've heard nothing but great things about Virgin America. #29DaysToGo",
"@VirginAmerica I flew from NYC to SFO last week and couldn't fully sit in my seat due to two large gentleman on either side of me. HELP!",
"I <U+2764><U+FE0F> flying @VirginAmerica. <U+263A><U+FE0F><U+0001F44D>",
"@VirginAmerica you know what would be amazingly awesome? BOS-FLL PLEASE!!!!!!! I want to fly with only you."
), airline_sentiment = c("positive", "negative", "positive",
"negative", "positive", "positive")), row.names = 15:20, class = "data.frame")