2017-11-01 7 views

답변

0

스 토크 워드를 식별하는 한 가지 방법은 대부분의 문서에 나타나는 것을 살펴 보는 것입니다. 이 쿼리에서

단계 : 관련성, 품질 (최소 길이를 선택, 최소 점수를 선택하여 subreddits 선택)에 대한

  1. 필터 게시물.
  2. HTML 인코딩 값을 이스케이프 처리합니다.
  3. 단어의 수를 결정하십시오 (이 경우 r'[a-z]{1,20}\'?[a-z]+').
  4. 각 단어는 각 주석에서 반복되는 횟수와 관계없이 문서 (주석) 당 한 번만 계산됩니다.
  5. 나타나는 최대 문서 수를 계산하여 상위 x 단어를 가져옵니다.

검색어 :

#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