Назначьте идентификатор на основе ключевых слов, присутствующих в твитах - PullRequest
0 голосов
/ 18 января 2019

Я извлек твиты, введя 44 различных ключевых слова, и результат находится в файле, который состоит из 400 тысяч твитов. Выходной файл содержит твиты, которые содержат соответствующие ключевые слова. Как я могу создать отдельный столбец идентификаторов, который содержит ключевое слово, присутствующее в этом твите?

Например: твит:

Андхра-Прадеш - высшее государство с преступлениями против женщин

ключевое слово здесь "преступления против женщин"

Я хотел бы создать столбец, который присваивает твиту ключевое слово "преступления против женщин", точнее, столбец идентификаторов.

#input column 1
Tweet<-("Andhra Pradesh is the highest state with crimes against women")

#expected output column 2 beside the Tweet column
Keyword<-("crimes against women")

Редактировать: я не хочу извлекать какую-либо часть твита, я просто хочу иметь возможность назначить твиту в новом столбце ключевое слово, которое он содержит, чтобы он помог мне отделить твиты на основе этого ключевого слова ,

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Вы можете выполнить этот анализ с пакетом stringr, однако я не думаю, что вам нужно использовать sapply.

Рассмотрим следующий список ключевых слов и таблицу с твитами:

keyword_list <- c("crimes against women", "downloading tweets", "r analysis")

tweets <- data.frame(
  tweet = c("Andhra Pradesh is the highest state with crimes against women",
            "I am downloading tweets",
            "I love r analysis",
            "downloading tweets helps with my r analysis")
)

Сначала вы хотите объединить ваши ключевые слова в одно регулярное выражение, которое ищет любую из строк.

keyword_pattern <- paste0(
  "(",
  paste0(keyword_list, collapse = "|"),
  ")"
)

keyword_pattern
#> [1] "(crimes against women|downloading tweets|r analysis)"

Наконец, мы можем добавить столбец к фрейму данных, который извлекает ключевое слово из твита.

tweets$keyword <- str_extract(tweets$tweet, keyword_pattern)

> tweets
#>                                                           tweet              keyword
#> 1 Andhra Pradesh is the highest state with crimes against women crimes against women
#> 2                                       I am downloading tweets   downloading tweets
#> 3                                             I love r analysis           r analysis
#> 4                   downloading tweets helps with my r analysis   downloading tweets

Как показывает последний пример, вам нужно подумать о том, что вы хотите делать, когда твит содержит несколько ключевых слов. В этом случае возвращаемое ключевое слово - просто первое найденное в твите. Однако вы также можете использовать str_extract_all для возврата ВСЕХ ключевых слов, найденных в твите.

0 голосов
/ 18 января 2019

Мы можем использовать stringr, что очень удобно для строковых операций, и просто использовать str_extract, т.е.

str_extract(Tweet, Keyword)
#[1] "crimes against women"

Для нескольких ключевых слов и нескольких строк вам необходимо подать заявку, т.е.

Keyword <- c("crimes against women", "something")
Tweet <- c("Andhra Pradesh is the highest state with crimes against women", 
           "another string with something else")

sapply(Tweet, function(i)str_extract(i, paste(Keyword, collapse = '|')))

#    Andhra Pradesh is the highest state with crimes against women                            another string with something else 
#                                           "crimes against women"                                                   "something" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...