# Detecting Fake Reviews in Google Maps--A Case Study
## 3 Creating a Dataset of Google Maps Reviews
### Scraping Google Maps to Identify Fake and Genuine Data  
First, we created a dedicated scraper program, which navigated through the places displayed on Google Maps, the reviews published next to them, and the Google profiles of users who published these reviews. The scraper was able to collect various information about both the reviews and user accounts. For simplicity in gathering and accessing the collected information, we used the MongoDB system. We divided the data into two collections: accounts and reviews.  
The process of identifying fake reviews in Google Maps, and their authors, was inspired by [22]. It consisted of the following steps:  
* Find online services offering fake reviews.
* Search their website for examples of reviews they have written.
* Use these samples to find the corresponding review and the reviewed object.
* If the reviewer has not set their status to private, save this account's name and URL address in a temporary database.
* Use our automated Google Maps scraper to check, among the reviewed places, whether there are groups of reviewers who have reviewed the same places.
* Save the accounts that were present in the mentioned groups as fake.
* Scrape more detailed data about accounts presumed to be fake and save them into the dataset.  
In more detail, we gathered the initial fake accounts using a two-step process. First, we looked for examples of orders completed by the fake review services in the past and tried to reverse-engineer an account or a place where the review was posted. Using this method, we managed to find ten accounts from three different services. Next, we found the Google Maps places corresponding to these three fake review services and analyzed the accounts that reviewed them. Our thought was that fake services might also post fake reviews on their own objects. Many of those accounts left reviews on the same cluster of other Google Maps places. This suggested that these accounts were also fake. As a consequence, we deemed the reviews published by them as fake also.  
Having found some fake accounts, we checked for groups of reviewers. If another account had rated at least the same \(N\) places, it was considered to be in the same group and therefore marked as fake. We automated this process so that we could easily find more fake accounts using such a net of connections. The more accounts we flagged as fake, the easier it was to find the next ones, until we found all accounts from a given service. Following this method, we found 319 fake accounts. However, having disqualified the accounts that were private (and therefore could not be further examined), we were left with 187 fake accounts and their 2451 reviews.  
The value of \(N\) was chosen heuristically. When we set \(N=2\), the number of accounts suspected to be fake was very high, which suggested a high false positive rate. When we used \(N=4\), we obtained only a few suspect accounts. Therefore, as a trade-off, we eventually set \(N\) equal to 3.  
As a reference, we also collected data on a similar number of genuine reviews from Google Maps and the accounts that published them. The process of identifying them was different. We assumed that most of the accounts on the platform are genuine. We randomly scattered 27 points (value chosen heuristically), equally spaced, on the map of Poland, and took the nearest Google Maps places with at least five reviews posted. Next, we analyzed all accounts which posted these reviews. This way, we collected 284 accounts, which were later scraped for a total of 15,528 reviews authored by these accounts.