如何从R中的推文中提取主题标签?

时间:2012-12-07 12:11:59

标签: regex r tweets

我知道这个问题已经被问到herehere但是当我尝试时出现了一个小问题:

x<- str_extract("Hello peopllz! My new home is #crazy gr8! #wow", "#\S+")
Error: '\S' is an unrecognized escape in character string starting "#\S"

我将正则表达式更改为"#(.+) ?""#\\s",但他们没有提取主题标签。

然后我尝试了gsub方式:

x<- gsub("[^#(.+) ?]","","Hello! #London is gr8. #Wow")

它给出了:" # . #"

我出错的任何想法?我希望我的输出作为推文中所有主题标签的向量/列表(没有哈希!)

编辑:我不想对推文进行标记,因为: 我没有为我的其他程序提供推文的标记, 如果我扩展它以处理大量的推文,那将是一个非常昂贵的步骤。

3 个答案:

答案 0 :(得分:9)

使用"#\\S+"代替"#\S+"

str_extract_all("Hello peopllz! My new home is #crazy gr8! #wow", "#\\S+")
# [[1]]
# [1] "#crazy" "#wow"  

这里有两个级别的解析。在str_extract中的低级正则表达式函数获取您要搜索的模式( "#\S+")之前,它首先由R解析.R不识别{{1} }作为有效的转义字符并抛出错误。通过使用\S转义斜杠,您告诉R将\\\作为两个普通字符传递给regexp函数,而不是将其解释为一个逃脱角色

侧轨

这可以产生相当奇怪的表达。想象一下,您在S窗体上有一个Windows网络上计算机的地址列表。要搜索它,您需要输入"\\computer",在内部转换为str_extract(adr, "\\\\\\w+"),然后搜索。

答案 1 :(得分:3)

正好进入。根据您访问Twitter数据的方式,可能已经为您解析了这些信息。例如,如果访问示例流,则原始JSON格式具有一个条目,可以将引用,标记等作为数组解析。请在此处查看twitter api documentation

答案 2 :(得分:0)

如何用#\S+

替换#\\\S+