我正在使用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
任何人都可以帮我解决这个问题或指向类似的事情吗?
答案 0 :(得分: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());
}
}
答案 1 :(得分:2)
我认为您要做的是Sentiment Analysis
,看看您检索的推文中有多少是正面的,有多少是否定的,对吗?一个好的开始是研究SentiWordNet
它已经存储了很多单词,它们的极性是单词的正面或负面,它只是一个包含所有这些数据的文本文件。您需要解析它并将数据存储在某些数据结构中。完成所有这些后,您只需扫描推文并匹配单词并获得分数,然后标记推文即可。它并不像听起来那么难,首先在SentiWordNet
上搜索。我相信这是更好的方式,因为从长远来看它会帮助你更多:)
希望这有帮助