nltk中对词性进行过滤,是不是特别消耗计算量?
目标: 对文本进行预处理,需要抽取词性为名词、动词的词;
背景: 现在有70k+个文本数据,单个文本含有300左右的单词;
问题: 发现根据词性过滤,速度很慢。
有没有好的解决方法?
Answers
消耗计算量?
这是个什么词啊?23333。
你都把问题的标签加上“数据挖掘”了,怎么会问这种问题呢。
对一个程序来说,瓶颈就在 IO 和 CPU 。(我觉得,你的意思应该是消耗 CPU 吧)
70k+,不算多。可以一次性都放入内存中,因此瓶颈不在 IO 。
速度慢
twitter 几亿的数据,如果为了生成上月的热榜,即使用三四个小时来分析这些数据,也不算慢。分析一次,显示一个月。下月月底,再花三四个小时分析。
但是,如果像 segmentfault 网站一样,每次用户提问,都会在左边显示出相似问题,就算等半分钟,也觉得慢。
一台电脑不行,就多来几台,使用 Hadoop 的 MapReduce 模型,操作 N 台电脑,就像一台电脑一样。
不够快?你想 实时 的?
那只能用终极杀器了:Streaming(流)计算模型。
流计算的思路是, 数据流进来的时候就处理 。也就是数据一边流,我就一边开始处理了。牛X吧,基本上算是实时了。BUT,数据流过了,处理就结束了。最开始,我们分析了每个词的名词个数,现在有新要求了,要分析动词,不好意思,数据流走了,分析不了了。。。。
综上,你需要的是新的统计模型,试试 Streaming 吧。
看似 Streaming 很简单,很强大,实则不然。
那么问题来了:(留几个小问题)
-
数组长度未知,只遍历一次数组,找到最大的值。(难度:★)
-
数组长度未知,只遍历一次数组,找到出现次数最多的值。(难度:★★)
-
数组长度未知,只遍历一次数组,取出一个随机值。(注意要保证随机性 难度:★★★)