-4

我正在尝试创建一个从 Twitter 收集数据的应用程序:我想获取一个单词列表并确定它们在给定时间范围内出现的频率。

我应该如何去完成这个?

4

1 回答 1

5

对于 Twitter 直接支持的产品,您没有太多选择。

您可以使用Twitter 搜索 API,但它有以下限制

  • 当前索引包括六九天的推文。
  • 你不能使用搜索 API 来查找大约一周前的推文。

也就是说,如果您可以在此范围内搜索推文,那么您可以使用有限数量的参数来按时间过滤推文:

  • until- 将在特定日期返回推文
  • since_id- 为您提供自某个推文 ID 以来发生的推文
  • max_id- 为您提供最多特定推文 ID 的推文

因为推文 ID 是按升序增加的,所以最好尝试使用推文的 ID 来划分您要搜索的范围。

请注意,对于关键字,您将使用q参数。

另请注意,您必须通过使用pagerpp(每页结果)参数对结果进行分页。

您也可以使用第三方服务来存档推文,但这里的风险是,只要您需要,这些服务可能就不会存在。

如果您有能力,我建议您使用Streaming API将大量推文提供给您的应用程序,然后将其存储以供将来处理。

基本上,您与 Twitter 建立并保持开放连接,然后 Twitter 会向您提供推文。请注意,此 Feed 是受速率限制和质量控制的。但是,从您在应用程序中打开开关的那一刻起,它是一种将您想要的数据保留多久的好方法。

一旦你弄清楚了如何获得结果,获得频率就很容易了。假设您要存储结果,我建议使用面向文档的数据库(例如elasticsearchRavenDB);它们更适合处理返回推文实体的 JSON 格式,并为您提供更好的机制,以便将来查询和操作该数据。

在上述两种解决方案中,您都可以获得项目总数的计数以及适合某个搜索词的项目数(如果需要,您还可以过滤 JSON 文档的属性)。

如果您想获得词频/逆文档频率,那么我相信弹性搜索将允许您直接访问索引的这些统计信息(不确定 RavenDB),或者如果您愿意,您可以使用Lucene.NET自己构建一个文档存储获得真正的准系统(实施起来需要更多的工作,但您更接近您想要获得的统计数据)。

于 2012-04-04T20:41:16.317 回答