Ant*_*yrd -4 .net twitter web-services
我正在尝试创建一个从Twitter收集数据的应用程序:我想获取一个单词列表并确定它们在给定时间范围内出现的频率.
我该怎么做呢?
对于Twitter直接支持的产品,您没有太多选择.
您可以使用Twitter Search API,但它具有以下限制:
- 目前的索引包括六到九天的推文.
- 您无法使用搜索API查找超过一周的推文.
也就是说,如果您可以在此范围内搜索推文,那么您可以使用有限数量的参数来按时间过滤推文:
until - 将推文发送到特定日期since_id - 为您提供自某个推文ID以来发生的推文max_id - 为您提供特定推文ID的推文由于tweet ID按升序递增,因此最好尝试使用限定您要搜索的范围的推文ID.
请注意,对于关键字,您将使用该q参数.
另请注意,您必须通过使用page和rpp(每页结果)参数来分页结果.
您也可以使用第三方服务来存档推文,但这里的风险是,只要您需要这些服务,这些服务可能就不存在了.
如果你有这个容量,我建议使用Streaming API来获取一个连接到你的应用程序的大量推文,然后你可以存储这些推文以供将来处理.
基本上,您与Twitter建立并保持开放的联系,然后Twitter会向您发送推文.请注意,此Feed是速率限制和质量控制的.但是,从您在应用程序中打开开关的那一刻起,这是保持所需数据的好方法.
一旦你清理了如何获得结果,获得频率很容易.假设你存储的结果,我建议使用面向文档的数据库(像elasticsearch或RavenDB); 它们更适合处理返回Tweet实体的JSON格式,并为您提供更好的机制,以便将来查询和操作该数据.
在上述两个解决方案中,您都可以获得项目总数的计数以及适合某个搜索项的项目数(如果需要,还可以过滤JSON文档的属性).
如果你想获得术语频率/反向文档频率,那么我相信elasticsearch将允许你直接访问索引的统计数据(不确定RavenDB),或者你可以自己用Lucene.NET构建文档存储,如果你想要真正实现这一点(实施起来要做的工作要多得多,但你更接近你想要获得的统计数据).