仅包含话题标签的推文的正则表达式



我正在使用R,并且有大量的推文数据帧。我想要一个 grep 调用,它将选择仅由主题标签组成的推文(希望从最终数据框中排除这些)。

我最初的 grep 努力:

hashtagonly_tweets_INDEX = grep("^#\w*[^\w]", allTweets$V1,
                            value=F,
                            ignore.case = T,
                            fixed=F)

我希望这会选择多个以主题标签 ^#\w* 开头的单词,而不是选择没有主题标签 [^\w] 的单词。

但是,在这一点上,我显然已经耗尽了人才,因为此收集的推文类型仍然包含主题标签中的文本,例如:

#wtf 现在甚至正在发生。 这辆卡车在高速公路中心行驶50。 #learntodrive

#WhatGrindsMyGears 当有人在我面前拉出来时,永远不会继续达到限速或更高。 #roadrage

#Traffic #Westminster #travel #roadrage #transport #London #tourism #sightseeing #dark #clouds

任何建议非常感谢,

谢谢

不确定我是否理解您的问题,这是一个正则表达式,它匹配仅包含主题标签的推文:

^s*(?:#w+s*)+$

若要确定特定推文是否只有主题标签,可以使用 strsplit 对其进行标记,然后在列表中搜索不以"#"开头的条目。考虑推文1(仅主题标签)和推文2(主题标签加单词)。

tweet1 <- "#Traffic #in #Westminster #travel #roadrage #transport #London #tourism #sightseeing #dark #clouds"
tweet2 <- "#Traffic in #Westminster #travel #roadrage #transport #London #tourism #sightseeing #dark #clouds"
haswords <- function(tweet) {
    strings <- strsplit(tweet,' ')
    for (word in 1:length(strings[[1]])) {
        if (substring(strings[[1]][word],1,1) != '#') {
            return (TRUE)
        }
    }
    FALSE
}

该函数haswords()为推文 2 返回 TRUE,为推文 1 返回 FALSE。

最新更新