One of the biggest trends in travel is personalization. In this article, I would propose how to make a personalized search for hotels but this approach can also be applied to tours&guides, a point of interestest, restaurants and more.
People are different. For one person, when traveling “no additional fees” might be a very important issue, others could pay if the quality is maintained. For one, critical might be that the hotel is handicap friendly and the elevator is working properly, for others it is irrelevant. One might care if the hotel is pet-friendly, others might find that frustrating. That is why we cannot provide one search for everyone, we need personalization. We need to adjust search results to different types of users. Not even types, but it should be personalized for every user separately. Below, I will explain how we can use one of the richest sources of information about hotels which are user reviews.
Technologically, easier way to build that is to use the information provided by the hotel owner, because there could be easily structured and put into specific input fields. But frankly, in the era of marketing, information provided by hotel owners is not that relevant. Everyone is claiming that their hotel is special, their staff is friendly&proffesional and everything works properly. Reality is usually different.
Reviews are a more difficult source of information because they are unstructured but they are user verification of the information provided by business owners. You could, of course, ask the user to rank specific parameters about hotels like a room, location, price and so on, but this approach is limited. You can’t ask the user to fill out more than 100 specific parameters about the hotel.
I gathered some information from business owners and matched them against reviews to show how they differ. I would not provide hotel names, because I focused on negative examples. Similar examples are very easy to find.
On the left, I copied scraps of information provided by hotel owners from hotel booking sites, on the right I copied sentences from reviews which were written by the users regarding these hotels.
by hotel owners
|Information provided by the users
(Sentences from reviews)
|Free wifi!|| Free Wifi works only in the lobby.
Wifi was very very slow.
We do not have an internet signal in our room.
We needed to pay extra 25 bucks to get a decent wifi.
|Free breakfast||free breakfast was a joke.
Muffin and cold coffee is not a breakfast.
Breakfast wasn’t included as written.
|Well-equipped rooms with huge TV!||Lot of things was broken in the room.
There was a problem with the key.
Tv has a poor channel selection.
There was not even a coffee maker in the room.
Bathroom was tiny and shower got poor pressure.
Bed was so uncomfy that my neck was stiff in the morning.
|Professional&friendly staff!||Staff was very friendly but they do not know a thing!
Staff didn’t woke me twice as I asked.
Front desk lady didn’t know anything where to go.
|Hotel offers parking||I needed to pay 50 bucks extra for the parking!
I couldn’t find a parking space almost every day.
|Great location!||Neigherhood was full of drunken people.
It was very rough neighborhood.
|Great inside pool.||Pool was closed all the time during our stay.
Pool was dirty and stinky.
|Great fitness center for our guests||In the fitness most of items were broken.
Fitness was smaller than my room.
|Handicap accessible||Elevator was not working.
Shower wasn’t designed for wheelchair.
Nowadays, almost everyone travels and I would be surprised if you do not have that kind of experience at least several times in Your life.
That is why we need personalization based on reviews, not information provided by the hotel owners. To do that, I propose a solution in which, firstly you build a user profile which consists of a set of personalized preferences of the user, secondly you build hotels profile from reviews. When we have both, matching them against each other is relatively easy.
Below, you will find three different approaches.
The user selects by tapping on the mobile or on the desktop what is important to him. User-interface consists of different selectors like “What is important to You?”, “Do not show hotels with deal breakers” or “Close to:”. We could, of course, add many different types of questions or change them or simplify and the user would select only what is important to him. From this selection, we build the User Profile which is a set of structured information/parameters for the search.
Now, we need to build a similar set of structured information from hotels reviews - hotels profiles. I used our API: “Human-like Sentiment Analysis for Hotel Reviews API” which is publically available on RapidAPI. To show you how simple it is, I process through the API an example review:
“We got this place because of its cheap price and great location. The room was a little bit small but the room was well furnished and got desk and everything. There was free wifi in the room and worked nice. However parking wasn't and we needed to pay extra 25 usd and it was challenging to find space due to its size.”
The output from our API:
Blue blocks (Room, Amenities etc.) are Aspects from our API, green and red blocks (small, plenty etc.) is the Feature and Polarity is a color (-2,-1,+1,+2).
If you process a lot of reviews for a specific hotel and just join them, summarized information can look like this:
Numbers, in this case, means how many times someone mentioned a specific piece of information in reviews. So in this example, 29 people described that room has a great view. You could cut the results that occurred once or twice and treat them as irrelevant.
I called this set of structured reviews, the Hotel Profile.
Next step, is to sort the hotels based on the User Profile. If someone’s User Profile indicates that the hotel should be “close to restaurant and shopping”, “had a decent free breakfast” and should have “quiet rooms”, we will provide them hotels with the reviews containing that information (and sorting them by the number of occurrences in reviews).
We could build the User Profile without even asking them to select what is important to him. If the user wrote a review, it contains the information necessary to build the User Profile. It doesn’t matter if it was a positive or negative review or mixed. In the review, he is still describing what issues are important to him. If he complained about the wifi and that “it was noisy in the night”, we would know that “free decent wifi” and “quiet room” are the parameters for the search.
We could process their reviews through the same API and build the User Profile. In other words, we could extract from their personal reviews, which is important to them.
Then, the path is the same as in the 1st approach. We match and sort the hotels to match the User Profile.
If someone has not posted any reviews yet, we still can build his profile based on the places that he was before and/or he liked/disliked. In that case, we are taking all reviews from places that he was before/liked and process them through the API. If he chose a hotel that was handicap suitable with easy check-in, well-equipped room, and clean bathroom we are matching with similar ones.
In practice, a combination of the three approaches might work best. You could also combine it with other data/API that you gather about your users.
This approach could be useful to build also a new recommendation system - based on reviews, not a well-known collaborative matrix which needs a lot of data to work properly. It would be something like “Check similar places to this hotel” -> and a list of 5 similar hotels. What is more in this approach we don’t have a problem of cold start which is well-known if you deal with classic recommender system… but this discussion is for another article:)
15 Jun 2019, Tom Krupa