3

私は 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=3そしてPositiveTweets=2

誰かがこれについて私を助けたり、似たようなことを教えてくれますか?

4

2 に答える 2

6

#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());
    }
}
于 2012-10-19T03:04:26.780 に答える
2

あなたがやりたいことはSentiment Analysis、取得したツイートのうち、ポジティブなツイートとネガティブなツイートの数を確認することだと思いますよね? SentiWordNet良い出発点は、単語がどの程度肯定的か否定的であるかの極性とともに多くの単語が既に保存されていることを調べることです。これは、このすべてのデータを含むテキストファイルにすぎません。それを解析し、データを何らかのデータ構造に保存する必要があります。これがすべて完了したら、ツイートをスキャンして単語を照合し、スコアを取得して、ツイートにタグを付けるだけです。思ったほど難しくはありませんSentiWordNet。最初に検索してください。長期的にはもっと役立つので、これがより良い方法だと思います:)

これが役に立ったことを願っています

于 2013-03-13T19:05:09.297 に答える