如何使用BigQuery识别停用词?

时间:2017-11-01 15:56:51

标签: sql google-bigquery text-analysis

我正在查看reddit评论。我使用了一些常见的禁用词列表,但我想为此数据集创建一个自定义词。我怎么能用SQL做到这一点?

1 个答案:

答案 0 :(得分:1)

识别停用词的一种方法是查看大多数文档中显示的词。

此查询中的步骤:

  1. 过滤帖子的相关性,质量(选择您的subreddits,选择最低分数,选择最小长度)。
  2. Unescape reddit HTML编码值。
  3. 决定什么算作单词(在本例中为r'[a-z]{1,20}\'?[a-z]+')。
  4. 每个单词只对每个文档(评论)计算一次,无论每次评论中重复多少次。
  5. 通过指望他们出现的文件数量来获取前x个单词。
  6. 查询:

    #standardSQL
    WITH words_by_post AS (
      SELECT CONCAT(link_id, '/', id) id, REGEXP_EXTRACT_ALL(
        REGEXP_REPLACE(REGEXP_REPLACE(LOWER(body), '&', '&'), r'&[a-z]{2,4};', '*')
          , r'[a-z]{1,20}\'?[a-z]+') words
      FROM `fh-bigquery.reddit_comments.2017_07`  
      WHERE body NOT IN ('[deleted]', '[removed]')
      AND subreddit IN ('AskReddit', 'funny', 'movies')
      AND score > 100
    ), words_per_doc AS (
      SELECT id, word
      FROM words_by_post, UNNEST(words) word
      WHERE ARRAY_LENGTH(words) > 20
      GROUP BY id, word
    )
    
    SELECT word, COUNT(*) docs_with_word
    FROM words_per_doc
    GROUP BY 1
    ORDER BY docs_with_word DESC
    LIMIT 100
    

    enter image description here