Создать пустышку в соответствии с поиском в словаре - PullRequest
1 голос
/ 19 марта 2020

Я использую Quanteda для создания словарей и поиска терминов.

Вот воспроизводимый пример моих данных:

    dput(tweets[1:4, ])
structure(list(tweet_id = c("174457180812_10156824364270813", 
"174457180812_10156824136360813", "174457180812_10156823535820813", 
"174457180812_10156823868565813"), tweet_message = c("Climate change is a big issue", 
"We should care about the environment", "Let's rethink environmental policies", 
"#Davos WEF"
), date = c("2019-03-25T23:03:56+0000", "2019-03-25T21:10:36+0000", 
"2019-03-25T21:00:03+0000", "2019-03-25T20:00:03+0000"), group = c("1", 
"2", "3", "4")), row.names = c(NA, -4L), class = c("tbl_df", 
"tbl", "data.frame"))

Вот как я использую свой словарь после совет, полученный от этого форума:

climate_corpus <- corpus(tweets, text_field = "tweet_message")

climatechange_dict <- 
    dictionary(list(climate = c("environment*", "climate change")))

groupeddfm <- tokens(climate_corpus) %>%
    tokens_lookup(dictionary = climatechange_dict) %>%
    dfm(groups = "group")

convert(groupeddfm, to = "data.frame")

Мне нужно создать пустышку в моем исходном наборе данных "твиты", равную 1, когда tokens_lookup идентифицирует слово, включенное в мой словарь, в одном конкретном c наблюдение (твит). Используя мой воспроизводимый пример, я хотел бы создать пустышку, равную 1 для первых трех наблюдений (они включают словарные слова) и равную 0 для четвертого (без словарных слов).

Буду очень признателен за вашу помощь в этом. Большое спасибо!

1 Ответ

0 голосов
/ 19 марта 2020
library("quanteda")
## Package version: 2.0.1

tweets <- structure(
  list(tweet_id = c(
    "174457180812_10156824364270813",
    "174457180812_10156824136360813", "174457180812_10156823535820813",
    "174457180812_10156823868565813"
  ), tweet_message = c(
    "Climate change is a big issue",
    "We should care about the environment", "Let's rethink environmental policies",
    "#Davos WEF"
  ), date = c(
    "2019-03-25T23:03:56+0000", "2019-03-25T21:10:36+0000",
    "2019-03-25T21:00:03+0000", "2019-03-25T20:00:03+0000"
  ), group = c(
    "1",
    "2", "3", "4"
  )),
  row.names = c(NA, -4L), class = c(
    "tbl_df",
    "tbl", "data.frame"
  )
)

climate_corpus <- corpus(tweets, text_field = "tweet_message")
climatechange_dict <-
  dictionary(list(climate = c("environment*", "climate change")))

groupeddfm <- tokens(climate_corpus) %>%
  tokens_lookup(dictionary = climatechange_dict) %>%
  dfm(groups = "group")

tweets$mentions_climate <- as.logical(groupeddfm[, "climate"])
tweets
## # A tibble: 4 x 5
##   tweet_id           tweet_message          date          group mentions_climate
##   <chr>              <chr>                  <chr>         <chr> <lgl>           
## 1 174457180812_1015… Climate change is a b… 2019-03-25T2… 1     TRUE            
## 2 174457180812_1015… We should care about … 2019-03-25T2… 2     TRUE            
## 3 174457180812_1015… Let's rethink environ… 2019-03-25T2… 3     TRUE            
## 4 174457180812_1015… #Davos WEF             2019-03-25T2… 4     FALSE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...