4

I am doing some sentiment analysis on AirBnb public reviews. (Detailed Review Data). http://insideairbnb.com/get-the-data.html

So what I have is about 230,000 comments and reviews in the city of Barcelona and I'd like to carry out some sentiment analysis. So far I have managed to create an algorithm that counts positive and negative words and gives a net sentiment of each review. However, it has many flaws and I'd like to improve this analysis.

Which approach do you recommend to do in order to improve the quality of the net sentiment? I'm coding with R and I do not want something waaay too difficult to implement.

Thank you very much for your help!

adrian1121
  • 856
  • 8
  • 22

2 Answers2

3

I would strongly recommend sitting down and reading as many of the reviews (from your training set) as you can. I did this for a corpus of movie reviews and noticed a few odd things.

Certain nominally-neutral words often carried pretty strong valance. For example, "pacing" was often associated with negative reviews, presumably because you wouldn't mention it otherwise. For AirBnB, words like "dump", "loud", "distant", "lumpy" might be pretty strong signals. However, "dump" could also show up as "After we dumped our luggage, our wonderful host...". You could potentially try to disambiguate this based on parsing (which would also let you correct for "not"s and "barely"s) or via a part-of-speech tagger.

Movie reviews often have a particular narrative structure wherein the reviewer begins by talking about their expectations or the actor/director/etc.'s previous work before discussing the current movie. To account for this, I included the words' positions within the review as a feature. You may be able to discover similar structure in the AirBnB data.

Feature generation is more of an art than a science, so you may have to try a bunch of different things before you find something that works acceptably well.

Matt Krause
  • 19,089
  • 3
  • 60
  • 101
2

Density and intensity: How often do the positive/negative words appear vs the length of the text; and how strong are the words, e.g., "fantastic" vs "great" vs "good" vs "fine". Also, the context with certain emphasizing words like "really", "very" and especially "not".

More subtle analysis can be done with certain words like "but", "however", "nevertheless", which soften earlier positive and negative words. It can get as complex as you want it, but any algorithms should always be tested against real sentiment to judge their reliability, and tweaked/improved with more data/feedback over time. AI could have a big impact in this area.

But one thing I would recommend, is to capture not just the "mean" sentiment of each review, but also the variance of sentiment within a review. That is, how ambiguous or mixed is the overall measured sentiment of a review, as that already gives some indication of its reliability.

Kelvin
  • 1,051
  • 9
  • 18