2012-06-25 71 views
3

我正在使用Twitter4j開發應用程序。 我試圖用某個hashtag(例如:weather)導入tweets 然後,我想通過搜索關鍵詞將tweets與該hashtag分類。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

誰能幫我這個或點我對類似的東西?

回答

5

您可以查詢#weather hashtag,然後根據它們是否包含您爲好或壞天氣指定的任何關鍵字將這些tweet分爲單獨的列表。

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。我相信這是更好的方法,因爲它會幫助你長期運行:)

希望這對我有幫助