使用TwitterStream检索推文语言或按语言过滤

时间:2013-06-10 12:25:16

标签: java twitter twitter4j

我想使用TwitterStream类按语言检索或过滤。我想只获得一种语言的推文或以其他方式检索所有内容,然后识别每种推文语言。

我已经构建了此代码,但getIsoLanguageCode()始终返回null(请参阅版本3.0.4 JavaDocs)。我认为他们在使用这种方法时遇到了问题。

TwitterStream twitterStream = TwitterPrintRandomStream.createTwitterConnection();
StatusListener listener = new StatusListener() {

    public void onStatus(Status status) {
        String tw =  status.getText() + " " + status.getIsoLanguageCode();
        System.out.println(tw);
    }
    ...
}

我也尝试了方法Status.getUser().getLang(),但它返回用户的语言而不是推文。有没有办法做到这一点?

提前致谢。

3 个答案:

答案 0 :(得分:2)

我认为你不能依赖iso_language_code - 我在REST或流API中找不到对它的引用。

推文确实有lang属性,表示推文的编写语言。这是recently added to the API,不幸的是,Twitter4J还没有为您提供访问权限。

版本3.0.4中有一个task to add it,但工作似乎尚未开始。不幸的是,你需要等到他们添加它,或者你可以给他们一个手并提交拉动请求。

答案 1 :(得分:1)

status.getPlace().getCountryCode()应该可以获得ISO 3166-1 alpha 2国家/地区代码

答案 2 :(得分:1)

首先,尝试获取status.getLang()并将其放入字符串然后将其与status.getText()进行比较,如果匹配,您可以获得仅包含status.getLang()中的语言的推文

您可以尝试以下代码

String filterTweet=null
String language= status.getLang()
String filterLang="(language code)"
If (filterLang.Matches(language)){
filterTweet=status.getText()}