R — исправить сортировку при использовании anti_join для удаления стоп-слов (создание нграмм)

Очень плохо знаком с R и кодированием и пытаюсь провести частотный анализ длинного списка предложений и их заданного веса. Я удалил вложенные и видоизмененные данные, но когда я пытаюсь удалить стоп-слова, порядок сортировки слов в каждом предложении становится случайным. Мне нужно создать биграммы позже, и я бы предпочел, чтобы они были основаны на исходной фразе.

Вот соответствующий код, может предоставить больше, если недостаточно:

library(dplyr)
library(tidytext)

data = data%>%
  anti_join(stop_words)%>%
  filter(!is.na(word))

Что я могу сделать, чтобы сохранить исходный порядок сортировки в каждом предложении? Все слова в предложении проиндексированы, поэтому я могу сопоставить их с заданным весом. Есть ли лучший способ удалить стоп-слова, который не испортит порядок сортировки?

Видел здесь аналогичный вопрос, но он не решен: Как чтобы запретить anti_join изменять порядок сортировки в R?

Также попробовал это, но не сработало: сортировать группы внутри отсортированных групп?

Получил помощь от коллеги в написании этого, но, к сожалению, они больше не доступны, поэтому любая информация будет полезна. Спасибо!


person shwarmashubs    schedule 15.08.2017    source источник


Ответы (1)


Вы можете добавить индекс сортировки к своим данным перед сортировкой

library(dplyr)
library(tidytext)

data = data %>%
  dplyr::mutate(idx = 1:n()) %>%
  dplyr::anti_join(stop_words) %>%
  dplyr::filter(!is.na(word)) %>%
  dplyr::arrange(idx)

(dplyr:: не обязателен, но поможет вам вспомнить, откуда берется функция)

person Stefan F    schedule 15.08.2017
comment
Пробовал это, но мой индекс предназначен для всей фразы, а не для каждого слова в ней, поэтому само предложение все еще зашифровано. Я хочу, чтобы биграммы были созданы для исходной фразы, поэтому, например, используя твит Трампа «Сделаем Америку снова великой», вместо того, чтобы возвращать «Сделаем Америку, Америку великой и снова великой», мой код возвращает биграммы, такие как «Сделай великой» :( - person shwarmashubs; 15.08.2017
comment
не могли бы вы опубликовать пример, как выглядят ваши данные? Лучше всего будет воспроизводимый пример, чтобы мы могли поиграть с ним. - person Stefan F; 15.08.2017