Я занимаюсь анализом настроений и хотел бы, чтобы все биграммы начинались со слова отрицания, такого как «не».Использование %in%
прекрасно работает с простой строкой, но для тех, которые содержат специальный символ, такой как апостроф, оно не работает для моего текста.
Биграммы из текста:
> head(sup4_bigrams_count,3)
# A tibble: 3 x 3
word1 word2 n
<chr> <chr> <int>
1 parent’s day 8
2 mother’s day 7
3 bachelor’s degree 6
> sup4_bigrams_count$word1 %>% unique
......
[61] "daily" "day" "de" "define"
[65] "depth" "developed" "didn’t" "differentiated"
[69] "difunctioning" "diploma" "doesn’t" "don’t"
Яинтерес к биграммам, начинающимся с «не», «не» и «не».Но обратите внимание, что в этих словах это ’
вместо '
, поэтому я скопировал эти слова прямо из текста.Аналогично для «не» и «не».Это работает, но отображает одно слово за раз.
> sup4_bigrams_count %>% filter(str_detect(word1,"didn’t"))
# A tibble: 3 x 3
word1 word2 n
<chr> <chr> <int>
1 didn’t argue 1
2 didn’t miss 1
3 didn’t shame 1
Но с использованием% в% это не работает вообще.
negate_words <- c("didn’t","doesn’t","don’t")
> sup4_bigrams_count %>% filter(word1 %in% negate_words)
# A tibble: 0 x 3
# ... with 3 variables: word1 <chr>, word2 <chr>, n <int>
Но если я использую эти слова для создания другогофрейм данных,% в% работает нормально.
a <- data_frame(word=c("didn’t","doesn’t","don’t"),ind=1:3)
n <- c("didn’t","doesn’t")
> a %>% filter(word %in% n)
# A tibble: 2 x 2
word ind
<chr> <int>
1 didn’t 1
2 doesn’t 2
Что я могу только сделать, это отфильтровать по str_detect
три раза и rbind
их вместе, но это намного сложнее и не будетбудь проще, если у меня длинный список слов отрицания.Надеюсь, что кто-то может помочь с этим.