【问题标题】:How to find n-grams with the reddit dataset with BigQuery如何使用 BigQuery 使用 reddit 数据集查找 n-gram
【发布时间】:2016-02-11 17:56:46
【问题描述】:

我正在查看 reddit 数据集和 older question,该 older question 正在研究使用 BigQuery 查找二元组 - 但是该问题的答案不适用于 URL、引号等。有没有更好的方法这样做并将其推广到三元组而不是二元组?

【问题讨论】:

    标签: sql google-bigquery reddit


    【解决方案1】:

    这样就可以了:

    SELECT word, nextword, nextword2, COUNT(*) c 
    FROM (
    SELECT pos, id, word, LEAD(word) OVER(PARTITION BY id ORDER BY pos) nextword, LEAD(word, 2) OVER(PARTITION BY id ORDER BY pos) nextword2 FROM (
    SELECT id, word, pos FROM FLATTEN(
      (SELECT id, REGEXP_REPLACE(word, 'QUOTE', "'") word, POSITION(word) pos FROM
       (SELECT id, SPLIT(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(LOWER(body), "'", 'QUOTE'), r'http.?://[^ ]*', r'URL'), r'\b', ' '), ' ') word 
        FROM [fh-bigquery:reddit_comments.2016_01]
        WHERE score>200
        HAVING REGEXP_MATCH(word, '[a-zA-Z0-9]')
       )
      ), word)
    ))
    WHERE nextword IS NOT null
    GROUP EACH BY 1, 2, 3
    ORDER BY c DESC
    LIMIT 100
    

    (请注意,我将过滤到得分 >200 的 cmets 以获得更快的结果 - 您可以整月移动该过滤器)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 2013-10-06
      • 2018-02-20
      • 2021-02-09
      • 2014-12-13
      相关资源
      最近更新 更多