Data Scraping TripAdvisor for Airlines' Customer Reviews
The skills the author demoed here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.
Contributed by Mustafa Koroglu. He is currently enrolled in the NYC Data Science Academy remote bootcamp program taking place from June-September 2017. This post is based on his third class project, web scraping, focusing on the use of web scraping techniques to acquire, process, and analyze raw data from the web.
This blog post will try to shed some light on the airline rankings, especially for airline companies from North America. Questioning independent organizations' ranking results comes to me interesting as the customer reviews should matter at this point. A recent news at CBC.ca is also asking the same question referring to the data from another survey result conducted by an independent market research firm (the news can be reached from here). Besides these facts, my main aim is to expose any available marketing strategies for the airline companies from the customer reviews.
This project is about scraping customer reviews for eight major airlines from tripadvisor.ca. These companies include Air Canada, American Airlines, British Airways, Delta Airlines, KLM Royal Dutch Airlines, Lufthansa, Turkish Airlines, and United Airlines.
I used scrapy spider to collect the dataset. The reviews are spanning the period from January 2016 to the current day, August 4, 2017. The following image below is a sample review, where I scraped the title, rating ,content, date, destination, cabin class, and route. The dataset has in total 70015 reviews. The rating variable ranges from 1 to 5, where 1 is for the worst and 5 is for the best.
The first graph will introduce the comparison of proportions of ratings across airline companies.
This barplot shows that Delta Airlines, KLM Royal Dutch Airlines, Lufthansa, and Turkish Airlines have almost 75% of the ratings belong to rating level 4 and 5. If we look at the graph from the lowest rating levels, we see that KLM, Delta Airlines, Lufthansa and Turkish Airlines are the ones having the lowest sharing of rating 1 and 2, respectively.
The next barplot provides us the total number of ratings for each cabin class across different airlines. This is the general picture of the dataset in terms of ratings and airlines.
Customer reviews and associated ratings are expected to be fluctuated across seasons. As an illustration, the following the line plot shows an increase on the number of ratings for Summer season for Air Canada customer reviews. It is surprising that the number of ratings for each rating level on June 2017 is much higher than its corresponding value last year. Number of average rating and rating level 4 are almost double other ratings on August 2016.
In this section, I will examine the most frequently used words from the content column for Air Canada customer reviews. The total reviews as well as subset of reviews for lowest and highest rating reviews will be analyzed to get more insights from the text mining. I used the "wordcloud" and "tm" packages in R for this section.
The word cloud (left figure) and the barplot of first twenty most frequently used words show that flight, air, and canada are the words used at most by the customers. In order to better understand customer actions reflected on the reviews, I did the same work for a subset of ratings 1, 2 and ratings 4, 5 as a group of reviews. I also dropped the first three most frequently used words, the same as in the figures above for total reviews. The figures are as follows:
Positive and negative reviews can be seen from these figures. The most frequent words from high ratings reviews are time, good, service, and seat. The negative reviews include hour, seat, time, service, toronto, and delay as the most frequent words, among others.
The above analysis can be done for other airlines and compared at one figure with using comparison.cloud function from the same package in R. However, doing the same analysis for all airline reviews at once might cause a memory allocation problem. To sum up, from this project, we see that analyzing customer reviews from different travel websites will enable the data scientist/analyst to see much better picture of the ratings and reflection of customers' reviews.
Further steps in this project could be:
- scraping detail ratings from the reviews.
- Travel tips, which are available on the website for scraping, might be useful to find more direct reflection of customer feelings.
- Sentiment analysis can be used to get more insightful results.
For my GitHub repository, please visit here. For additional readings about scraping the TripAdvisor, see Peter Johnson's page here.