【问题标题】:Assign an ID based on keywords present in Tweets根据推文中的关键字分配 ID
【发布时间】:2019-01-18 12:10:40
【问题描述】:

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

例如:推文是:

安得拉邦是对妇女犯罪的最高州

这里的关键词是“针对女性的犯罪”

我想创建一个列,将关键字“针对女性的犯罪”分配给推文,准确地说是一种 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")

编辑:我不想提取推文的任何部分,我只想能够在一个新列中为推文分配它包含的关键字,这样它将帮助我根据这个关键字分离推文.

【问题讨论】:

  • 你有想要从推文中提取的关键字列表吗?
  • 是的,我有关键字列表——确切地说是 44 个。我首先使用关键字来提取推文。
  • 哦,对不起。我以为这就是你要找的。我看错了。让我重新打开你的问题

标签: r nlp uniqueidentifier


【解决方案1】:

您可以使用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 返回推文中找到的所有关键字。

【讨论】:

    【解决方案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" 
    

    【讨论】:

      猜你喜欢
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      相关资源
      最近更新 更多