风暴和停止的话

时间:2014-03-12 11:29:48

标签: data-mining apache-storm stop-words topic-modeling

我是风暴框架中的新手(https://storm.incubator.apache.org/about/integrates.html), 我用我的代码进行本地测试,我认为如果删除停用词,它会表现良好,但我在网上搜索,我看不到任何在风暴中删除停用词的例子。

1 个答案:

答案 0 :(得分:2)

如果停用词列表的大小足够小以适应内存,最直接的方法是简单地使用知道该列表的风暴Filter的实现过滤元组。如果此列表随着时间的推移而演变,则此Filter可能会经常轮询数据库以获取最新的停用词列表。

如果停用词列表的大小较大,则可以使用QueryFunction从拓扑中使用stateQuery函数调用,其中包含:{/ p>

  • 收到一批要检查的元组(一次说10000个)
  • 根据内容构建单个查询,并在持久性中查找相应的停用词
  • 为每个元组添加一个布尔值,指定每个元组的内容

+之后添加Filter以根据该布尔值进行过滤。

如果你觉得有冒险精神:

另一种更快的方法是使用bloom filter approximation。我听说Algebird是为了提供这种功能并且针对烫伤和风暴(这有多酷?),但我不知道它有多稳定,也没有任何实际经验将它插入风暴(如果天气多雨,可能是星期天......)。

此外,Cascading(与Storm没有直接关系但在地图上有一组非常相似的原始抽象减少)在this tutorial中建议了一种基于左连接的方法。 Storm中存在这样的连接,并且右边的分支可能每次都有FixedBatchSpout发出所有停用词,或者甚至是每次都从持久性中读取停止词列表的最新版本的自定义spout,所以也许那也行吗?也许?这也假设停用词列表的大小相对较小。