【问题标题】:How do I extract hashtags from tweets in R?如何从 R 中的推文中提取主题标签?
【发布时间】:2012-12-07 12:11:58
【问题描述】:

我知道有人问过这个问题here 和here,但是当我尝试时遇到了一个小问题:

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")

它给了:" # . #"

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

编辑:我不希望对推文进行标记,因为: 1. 我不会为我的程序的其余部分标记推文, 2. 如果我扩展它以处理大量推文,这将是一个非常昂贵的步骤。

【问题讨论】:

    标签: regex r tweets


    【解决方案1】:

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

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

    这里有两个级别的解析。在str_extract 中的低级正则表达式函数获取您要搜索的模式(即 "#\S+")之前,它首先由 R 解析。R 不将 \S 识别为有效的转义字符并引发错误。通过使用\\ 转义斜线,您告诉R 将\ 和S 作为两个普通字符 传递给正则表达式函数,而不是将其解释为一个转义字符 em>。

    旁道

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

    【讨论】:

    • 行得通,谢谢!但是如何从推文中提取所有主题标签?这会给我第一个出现的主题标签。有什么办法绕过它?
    • x
    • 很好的答案,可能想使用#\\w+ 而不是#\\S+ 所以不包括标点符号
    【解决方案2】:

    只是插话。根据您访问 twitter 数据的方式,可能已经为您解析了此信息。例如,如果您访问示例流,原始 JSON 格式有一个条目,可以将引用、标签等解析为您的数组。请在此处查看twitter api documentation。

    【讨论】:

      【解决方案3】:

      如何将#\S+ 替换为#\\\S+

      【讨论】:

        猜你喜欢
        • 2017-04-12
        • 1970-01-01
        • 1970-01-01
        • 2015-08-04
        • 2018-07-15
        • 2021-07-30
        • 2014-06-14
        • 1970-01-01
        • 2014-06-26
        相关资源
        最近更新 更多