Pessimists and optimists: Improving collaborative filtering through sentiment analysis