根据推文中存在的关键字分配ID

时间:2019-01-18 12:10:41

标签: r nlp uniqueidentifier

我通过输入44个不同的关键字提取了Tweets,并且输出在一个文件中,该文件总共包含40万条tweets。输出文件具有包含相关关键字的推文。如何创建一个单独的ID列,其中包含该推文中存在的关键字?

例如:该推文是:

  

安得拉邦(Andhra Pradesh)是犯有危害妇女罪行的最高州

这里的关键词是“危害妇女的罪行”

我想创建一个专栏,为该推文分配关键字“危害妇女的罪行”,确切地说是一种ID列。

#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 :(得分:2)

我们可以使用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" 

答案 1 :(得分:2)

您可以使用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)"

最后,我们可以在数据框中添加一列,以从tweet中提取关键字。

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返回在推文中找到的所有关键字。