gpt4 book ai didi

java - 获取大量随机推文

转载 作者:行者123 更新时间:2023-11-30 04:03:40 26 4
gpt4 key购买 nike

我必须收集一大组(3000-5000)条随机选择的推文进行手动注释,但我有一些限制:

  1. 所有推文都必须附有图像;
  2. 不允许重复的推文;
  3. 我需要诸如评论之类的信息,因此在发布时间后几秒钟获取它们是没有用的,
  4. 我必须使用 Java 处理数据,因此我打算使用 Twitter4J 或 Hosebird Client。
  5. 推文可能必须是随机选择的,不指定任何标签(例如“食物”或“运动”)。

我设法使用 Hosebird 客户端创建一个 Stream 并用推文填充 BlockingQueue,但这样我就不会遵守限制 3 和 5。

另一方面,在 Twitter4J 中,使用 Query 类,我无法找到同时满足 1 到 5 的解决方案。

我觉得使用队列可以帮助我解决重复推文的问题,但我并没有成功满足我的所有先决条件。

我的问题是:是否可以尊重我对 twitter4j 或 HBC 的所有限制?如果是,有人可以给我一些代码或建议吗?

谢谢

最佳答案

我认为twitter4j足以满足你的所有条件。您可以在 twitter4J 中使用流式传输。如果您不给它过滤参数,它会给您一个推文流。例如;

条件-1)当您从流中获取推文时,您可以查看 media_entity 部分以检查是否至少有一个媒体对象且其类型为图像。如果是这样,您可以将其保存在任何数据库的表中。

例如:

 MediaEntity[] mediaEntities = status.getMediaEntities();

for (MediaEntity mediaEntity : mediaEntities)
if (mediaEntity.getType() == "photo")
{
// Save status object which has the tweet and its metadata

break;
}

条件-2)每条推文都有一个唯一的推文 ID,另一件事是流应用程序不能对同一条推文点击两次。但是,如果您独立运行两个不同的流媒体应用程序,则这两个应用程序可能会点击同一条推文。即使您运行两个应用程序,您也可以在保存之前检查数据库表中的推文 ID。

条件3)(详细说明你的意思!)据我所知,Twitter还没有像Facebook那样的评论机制。如果您指的是转发,您可以通过 Twitter4J 的另一个应用程序同时搜索特定推文的转发。

条件-4)我不了解 Hosebird 客户端系统,但我了解并经常使用 Twitter4J。我可以说 Twitter4J 是一个纯基于 Java 的系统。您需要使用的只是添加 jar 文件作为对 java 应用程序的引用,然后就可以使用了。这很简单。

条件-5)我已经为我的流应用程序提供了一组关键字,以捕获包含特定关键字或主题标签的推文。在您的情况下,您可能不会给出任何参数,因此这意味着流应用程序将无条件地捕获所有推文。为此,你可以看看我的过滤机制作为例子:

 FilterQuery fq = new FilterQuery();
String keywords[] = {"sport", "politics", "health"}; //etc..

fq.track(keywords);

twitterStream.addListener(statusListener);
twitterStream.filter(fq);

最后,我在下面粘贴了一个完整的 java 方法作为示例,说明如何使用它。我希望它对你有帮助。 :D

  private static void GetTweetStreamForKeywords()
{
TwitterStream twitterStream = new TwitterStreamFactory(config).getInstance();

StatusListener statusListener = new StatusListener() {

@Override
public void onStatus(Status status) {
// The main section that you get the tweet. You can access it by status object.
// You can save it in a database table.
}


@Override
public void onDeletionNotice(StatusDeletionNotice sdn) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void onTrackLimitationNotice(int i) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void onScrubGeo(long l, long l1) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void onStallWarning(StallWarning sw) {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void onException(Exception ex) {
logWriter.WriteErrorLog(ex, "onException()");
}
};

FilterQuery fq = new FilterQuery();

String keywords[] = {"sport", "politics", "health"};

fq.track(keywords);

twitterStream.addListener(statusListener);
twitterStream.filter(fq);
}

关于java - 获取大量随机推文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21315425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com