【问题标题】:Twitter4j: search for keywords within a hashtagTwitter4j:在主题标签中搜索关键字
【发布时间】:2012-06-25 13:07:58
【问题描述】:

我正在使用 Twitter4j 开发一个应用程序。 我正在尝试导入带有特定主题标签的推文(例如:天气) 然后,我想通过搜索关键字对带有该标签的推文进行分类。

例如: 一些导入的推文可能是

- OMG, I hate this rain #weather
- This sunshine makes me feel so happy #weather
- Such strange #weather! One moment it rains, the next the sun shines. Confusing!
- Rain makes me sad #weather
- I love the sunshine! #weather

然后,我想将这些推文分类为:

- hate, Confusing, sad,... are negative 
- happy, love,... are positive

PositiveTweets 将是:

- This sunshine makes me feel so happy #weather
- I love the sunshine! #weather

NegativeTweets 将是:

- OMG, I hate this rain #weather
- Such strange #weather! One moment it rains, the next the sun shines. Confusing!
- Rain makes me sad #weather

所以,NegativeTweets=3PositiveTweets=2

谁能帮我解决这个问题或为我指出类似的事情?

【问题讨论】:

    标签: java twitter filter twitter4j hashtag


    【解决方案1】:

    您可以查询#weather 主题标签,然后根据推文是否包含您为好天气或坏天气指定的任何关键字,将推文分成单独的列表。

    public static void main(String[] args) throws TwitterException {
        List<Tweet> goodWeather = new ArrayList<Tweet>();
        List<Tweet> badWeather = new ArrayList<Tweet>();
    
        Twitter twitter = new TwitterFactory().getInstance();
        System.out.println("Fetching Weather Data...");
    
        // get the 1000 most recent tweets tagged #weather
        for (int page = 1; page <= 10; page++) {
            Query query = new Query("#weather");
            query.setRpp(100); // 100 results per page
            query.setPage(page);
            QueryResult qr = twitter.search(query);
            List<Tweet> qrTweets = qr.getTweets();
    
            // break out if there are no more tweets
            if(qrTweets.size() == 0) break;
    
            // separate tweets into good and bad bins
            for(Tweet t : qrTweets) {
                if (t.getText().toLowerCase().contains("happy") ||
                    t.getText().toLowerCase().contains("love")) {
                    goodWeather.add(t);
                }
    
                if (t.getText().toLowerCase().contains("sad") ||
                    t.getText().toLowerCase().contains("hate")) {
                    badWeather.add(t);
                }
            }
        }
    
        System.out.println("Good Weather: " + goodWeather.size());
        for (Tweet good : goodWeather) {
            System.out.println(good.getCreatedAt() + ": " + good.getText());
        }
    
        System.out.println("\nBad Weather: " + badWeather.size());
        for (Tweet bad : badWeather) {
            System.out.println(bad.getCreatedAt() + ": " + bad.getText());
        }
    }
    

    【讨论】:

      【解决方案2】:

      我想你想做的是Sentiment Analysis 看看你检索到的推文中有多少是正面的,有多少是负面的,对吧?一个好的开始是查看SentiWordNet,它已经存储了很多单词,以及单词的正负极性,它只是一个包含所有这些数据的文本文件。您需要解析它并将数据存储在某种数据结构中。完成所有这些后,您只需扫描推文并匹配单词并获得分数,然后标记推文。这并不像听起来那么难,请先搜索SentiWordNet。我相信这是更好的方法,因为从长远来看它会帮助你更多:)

      希望这有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-17
        • 2013-06-29
        • 1970-01-01
        • 1970-01-01
        • 2014-01-12
        相关资源
        最近更新 更多