TF-IDF 提取大数量的文章关键字时如何解决算不动的问题?

2022-04-17 23:12:23 +08:00
 LeeReamond

爬取了某大而全论坛的公开帖子,一共爬了一百多万条,因为该论坛下有详细的分类目录感觉用来做 nlp 入门学习数据很合适。

起步想跑个 tfidf 看看为每个帖子自动加关键字标签的效果怎么样。遇到的问题是,如果用 python 的 sklearn 库实现的话,似乎需要把所有帖子的内容一股脑装进内存里才能算,不光内存爆炸,而且算的巨慢,跑了几次都是卡住几个小时没反应,后来无奈只能关了。

想问一下类似这种大文本有办法分批处理吗?简单想了一下问题在于,比如所有文章里所有出现的词语的总的表是随着不断加入新的语句而不断变化的,不存在说算完 A 贴的数据后该数据就不会再变了这么一个说法,所以感觉似乎做不到分段计算。如果不能分段计算的话,类似 V2EX 这种,似乎听站长说也是 tfidf ,这么大的数据量又是怎么算出来的呢。

821 次点击
所在节点    问与答
13 条回复
westoy
2022-04-17 23:29:50 +08:00
V 站好像只是拿结巴的 tf-idf 提取关键词爬一下主帖

另外, 传下去, 楼主爬了色中色......
flavoury
2022-04-17 23:33:53 +08:00
lithiumii
2022-04-18 00:32:57 +08:00
那就用 genism ?
Donahue
2022-04-18 00:35:09 +08:00
大力出奇迹~
或者用 hadoop 集群 mad reduce 实现
shm7
2022-04-18 00:55:27 +08:00
“ 每个帖子自动加关键字标签”
对每个帖子的文本,跑一下 tfidf 不就好了,jieba 提供了 tfidf 和 textrank 2 个接口。google 的 rake 也不错
murmur
2022-04-18 07:51:38 +08:00
不是对所有内容全装内存,至少得做一次词法分析吧,去掉一些没用的东西,只剩下动词、名词、最好能区分出命名实体
LeeReamond
2022-04-18 09:07:08 +08:00
@murmur 我筛除了大部分没有实体含义的词性。最后得到的词有三万多个。。所以按 100 万帖子算的话,整个 tfidf 的矩阵大小就是 100 万*三万,太难顶了
murmur
2022-04-18 09:11:19 +08:00
@LeeReamond 同类型的帖子没必要输入那么多,你输入 1000 个帖子是这些,输入 10000 个帖子还是这些
LeeReamond
2022-04-18 09:22:16 +08:00
@murmur 不是很懂,主要 tf-idf 有个整体词频,我不输入所有贴的话怎么得到总体词频呢。你的意思是取样算出来的和整体也差不多?不过也不知道咋取样啊,比如我导入 A 板块的帖子,那用这个板块产生的词频算 B 板块的 tf 是不是就不太对了
paopjian
2022-04-18 09:58:54 +08:00
tfidf 就是大力出奇迹,公司里是直接上的服务器.你这个数据量有点过分了,先玩玩一千左右的数据吧
LeeReamond
2022-04-18 10:36:25 +08:00
@paopjian 有什么其他效果好的 /常见的摘要算法推荐吗?想做点生产能实用的到的东西。。tfidf 其实只是想当个 helloworld 跑,概念和实现啥的都挺简单的,没想到真的跑起来发现完全跑不动。。
LeeReamond
2022-04-18 10:37:14 +08:00
@LeeReamond 实用就是比如我是百度贴吧的维护者,然后我想给每个帖子一楼加个自动摘要之类的。。像简单能学到的 tfidf 似乎完全应付不了百度贴吧的数据量
paopjian
2022-04-18 14:10:21 +08:00
目前 nlp 文本摘要还是比较困难的,用 bert 做分类还是比较简单的.
hanlp 有个摘要功能,你可以去看看,paddlenlp 有对英文的开源摘要功能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/847549

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX