我正在尝试创建一个从Twitter收集数据的应用程序:我想获取一个单词列表并确定它们在给定时间范围内出现的频率。
我应该如何完成这项工作?
答案 0 :(得分:5)
对于Twitter直接支持的产品,你没有太多选择。
您可以使用Twitter Search API但it has the following limitations:
- 当前索引包括六到九天的推文。
- 您无法使用搜索API查找超过一周的推文。
也就是说,如果您可以在此范围内搜索推文,那么您可以使用有限数量的参数来按时间过滤推文:
until
- 将推文发送到特定日期since_id
- 为您提供自某个推文ID max_id
- 为您提供特定推文ID的推文由于tweet ID按升序增加,因此最好尝试使用限定您要搜索的范围的推文ID。
请注意,对于关键字,您可以使用q
参数。
另请注意,您必须使用page
和rpp
(每页结果)参数来分页结果。
您也可以使用第三方服务存档推文,但这里的风险是,只要您需要这些服务,这些服务可能就不存在了。
如果你有足够的容量,我建议你使用Streaming API来获取你的应用程序中的一些推文,然后存储这些推文以供将来处理。
基本上,您与Twitter建立并保持开放式连接,然后将Twitter发送给您。请注意,此Feed是速率限制和质量控制的。但是,从您在应用程序中打开开关的那一刻起,这是保存所需数据的好方法。
一旦你清理 你将获得结果,获得频率很容易。假设您要存储结果,我建议您使用document-oriented database(类似elasticsearch或RavenDB);它们更适合处理返回Tweet Entities的JSON格式,并为您提供更好的机制,以便将来查询和操作该数据。
在上述两个解决方案中,您都可以获得项目总数的计数以及适合某个搜索项的项目数(如果需要,您还可以过滤JSON文档的属性)。
如果您想获得术语frequency/inverse document frequency,那么我相信elasticsearch将允许您直接访问索引的统计信息(不确定RavenDB),或者您可以使用{{3自己构建文档存储库如果你想变得非常简陋(实现起来要做的工作要多得多,但你更接近你想要的数据)。