如何使用SQL(BigQuery)计算TF / IDF
发布时间:2021-01-23 16:01:10 所属栏目:MsSql教程 来源:网络整理
导读:我正在对reddit注释进行文本分析,我想在BigQuery中计算TF-IDF. 解决方法 此查询适用于5个阶段: 获取我感兴趣的所有reddit帖子.规范化单词(LOWER,只有字母和’,unescape一些HTML).将这些单词拆分为数组. 计算每个文档中每个单词的tf(术语频率) – 计算它在每
我正在对reddit注释进行文本分析,我想在BigQuery中计算TF-IDF. 解决方法此查询适用于5个阶段:>获取我感兴趣的所有reddit帖子.规范化单词(LOWER,只有字母和’,unescape一些HTML).将这些单词拆分为数组. 此查询通过将获取的值传递到链上,在一次传递中设法执行此操作. #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]{2,20}'?[a-z]+') words,COUNT(*) OVER() docs_n FROM `fh-bigquery.reddit_comments.2017_07` WHERE body NOT IN ('[deleted]','[removed]') AND subreddit = 'movies' AND score > 100 ),words_tf AS ( SELECT id,word,COUNT(*) / ARRAY_LENGTH(ANY_VALUE(words)) tf,ARRAY_LENGTH(ANY_VALUE(words)) words_in_doc,ANY_VALUE(docs_n) docs_n FROM words_by_post,UNNEST(words) word GROUP BY id,word HAVING words_in_doc>30 ),docs_idf AS ( SELECT tf.id,tf.tf,ARRAY_LENGTH(tfs) docs_with_word,LOG(docs_n/ARRAY_LENGTH(tfs)) idf FROM ( SELECT word,ARRAY_AGG(STRUCT(tf,id,words_in_doc)) tfs,ANY_VALUE(docs_n) docs_n FROM words_tf GROUP BY 1 ),UNNEST(tfs) tf ) SELECT *,tf*idf tfidf FROM docs_idf WHERE docs_with_word > 1 ORDER BY tfidf DESC LIMIT 1000 (编辑:宣城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 如何使用外部SQL数据库中的数据填充SharePoi
- sql-server-2008 – 支持复制的最便宜的Microsoft SQL Serv
- Sql中session阻塞怎样处理,对阻塞你了解多少?
- 为Athlon 64量身订制 微软推出64位测试版Win XP
- sql-server-2008 – SQL 2008镜像,如何从镜像数据库进行故障
- sql-server-2008 – 链接服务器“(null)”的OLE DB提供程序
- 看清IE地址! 网购骗局毒害“幼年”电子商务
- HTML Table 空白单元格补全的实现方法
- 阿里CEO张勇:网络安全需要全生态协作
- 如何将GHOST镜像恢复到硬盘