Lab 04: Neural Network Embedding for Places
Contents
Lab 04: Neural Network Embedding for Places#
In this lab, we will go through experiments of computing word embedding, document embedding, topic modeling, and embedding visualization. It involves the implementaton of several state-of-the-art techniques, including word2vec, TSNS, and LDA. We will use the same data as Lab 03. Similarities and differences between Lab 3 and Lab 4 will also be discussed.
Used packages include:
Yes! You have already used most of these libraries.
We will learn two more new libraries here: gensim
and pyLDAvis
. Particularly for gensim
, it is an important library in modern natural language processing. Make sure your installed gensim
is in the version of 4.2.0 or later.
import gensim
print(gensim.__version__)
4.2.0
Part 1: Word2Vec to Learn Semantic Similarity between Place Types#
The first part is about to train a Word2Vec model using the library gensim
. Similar to Lab 03, we want to represent place types (unstructured words representing the category of places/POIs) using a numeric vector. Different from Lab 03, we want to capture more semantics (e.g., how words are used together in the document) than simply counting the frequency of terms occurred in the document. As discussed in the lecture, Wrod2Vec is the fundemental for most state-of-the-art natural language processing techniques, such as BERT, which is developed by Google and has been used in their search engine.
Before we use the model, we must load the data. Here in the tutorial, we will use exactly the same data you created from Lab 03, i.e., the bristol_lsoal_poi_full
dataframe. Recall that it is a dataframe with each row represent a LSOA11 region, and it contains a column named fclass
that includes POI types that have been seen in this region. Like Lab 03, we will still regard each LSOA11 region as a document and the POI types from the fclass
column as words composing the document. However, you should note that such a setup is simply for us to do the experiment as the vocabulary here (all unique POI types) is relatively in small size and the number of documents (regions) is also small. Data-driven (Neural Network)techniques, like the Word2Vec, usually require a large data/corpus. In your future projects, you should not limit yourself to only small datasets (even though starting from a relatively smaller data is always a good idea).
In case, you have not saved the bristol_lsoal_poi_full
dataframe, I have prepared it for you and you can download it from the Blackboard. Once you get the data, you can use the code below to load it. Remember to assign a crs to the dataframe. Also the parameter wkt.loads
is to tell the dataframe that the coloumn geom
is as the WKT format. The converters = {}
parameter is to tell pandas that while loading the data, delete the list bracket []
and then split the string using ,
. Try to see what you load if you don’t use such a converters = {}
.
# load the data
import geopandas as gpd
import pandas as pd
import json
from shapely.geometry import shape
from shapely import wkt
import gensim # make sure it is in the version of 4.2.0 or later
bristol_lsoal_poi_full = pd.read_csv('bristol_lsoal_poi_full.csv', sep = '\t',converters={"fclass": lambda x: x.strip("[]").split(", ")})
bristol_lsoal_poi_full['geom'] = bristol_lsoal_poi_full['geom'].apply(wkt.loads)
bristol_lsoal_poi_full = gpd.GeoDataFrame(bristol_lsoal_poi_full,crs="EPSG:4326", geometry= "geom")
After loading the data, we need to prepare a document list (called corpus
here) as the input to the model. This corpus
is a list of list, the outter is a document list, and the inner list is a word list that composing the document. See how it looks like below:
corpus = list(bristol_lsoal_poi_full['fclass'])
corpus
[["'swimming_pool'", "'swimming_pool'", "'playground'", "'park'"],
["'convenience'",
"'convenience'",
"'nursing_home'",
"'college'",
"'hairdresser'",
"'computer_shop'",
"'fast_food'",
"'restaurant'",
"'doityourself'",
"'car_wash'",
"'convenience'",
"'restaurant'",
"'sports_centre'",
"'clinic'",
"'hairdresser'",
"'sports_centre'",
"'doityourself'",
"'car_dealership'",
"'restaurant'",
"'dentist'",
"'kindergarten'",
"'community_centre'",
"'cafe'",
"'doityourself'",
"'butcher'",
"'theatre'",
"'sports_centre'"],
["'kindergarten'",
"'community_centre'",
"'kindergarten'",
"'convenience'",
"'hairdresser'",
"'fast_food'",
"'playground'",
"'park'",
"'park'",
"'convenience'",
"'cafe'",
"'fast_food'",
"'fast_food'",
"'hairdresser'",
"'beauty_shop'"],
["'sports_shop'",
"'beauty_shop'",
"'convenience'",
"'fast_food'",
"'pub'",
"'car_dealership'",
"'playground'",
"'pitch'",
"'pitch'",
"'toy_shop'",
"'playground'"],
["'college'",
"'pub'",
"'restaurant'",
"'pitch'",
"'school'",
"'pitch'",
"'park'",
"'car_dealership'",
"'pitch'",
"'playground'",
"'furniture_shop'",
"'hotel'",
"'pub'",
"'hotel'",
"'kindergarten'",
"'convenience'",
"'fast_food'",
"'fast_food'"],
["'convenience'",
"'beauty_shop'",
"'fast_food'",
"'pharmacy'",
"'hairdresser'",
"'pub'",
"'fast_food'",
"'park'",
"'doityourself'",
"'car_dealership'",
"'doityourself'",
"'car_wash'",
"'doityourself'"],
["'bakery'",
"'pub'",
"'pub'",
"'pub'",
"'restaurant'",
"'sports_centre'",
"'gift_shop'",
"'pub'",
"'convenience'",
"'greengrocer'"],
["'museum'",
"'restaurant'",
"'convenience'",
"'clothes'",
"'restaurant'",
"'nightclub'",
"'beverages'",
"'hairdresser'",
"'fast_food'",
"'pub'",
"'hairdresser'",
"'restaurant'",
"'bar'",
"'nightclub'",
"'theatre'",
"'hairdresser'",
"'arts_centre'",
"'park'",
"'park'",
"'fast_food'",
"'pub'",
"'park'",
"'fast_food'",
"'park'",
"'fast_food'",
"'beauty_shop'",
"'supermarket'",
"'furniture_shop'",
"'fast_food'",
"'restaurant'",
"'bar'",
"'hairdresser'",
"'convenience'",
"'fast_food'",
"'park'",
"'fast_food'",
"'fast_food'",
"'fast_food'",
"'cafe'",
"'cafe'",
"'fast_food'",
"'restaurant'",
"'restaurant'",
"'beauty_shop'",
"'pub'",
"'fountain'",
"'restaurant'",
"'cafe'",
"'fountain'",
"'hairdresser'",
"'clothes'",
"'fast_food'",
"'fountain'",
"'cafe'",
"'bar'",
"'restaurant'",
"'theatre'",
"'fast_food'",
"'supermarket'",
"'pub'",
"'restaurant'",
"'bar'",
"'hairdresser'",
"'pharmacy'",
"'nightclub'",
"'toilet'",
"'cafe'",
"'restaurant'",
"'community_centre'",
"'hairdresser'",
"'sports_centre'",
"'cafe'",
"'restaurant'",
"'cafe'",
"'hairdresser'",
"'cafe'",
"'clinic'",
"'cafe'",
"'library'",
"'fountain'",
"'fountain'",
"'town_hall'",
"'attraction'",
"'cafe'",
"'arts_centre'",
"'bar'",
"'pub'",
"'restaurant'",
"'pub'",
"'restaurant'",
"'nightclub'",
"'bar'",
"'restaurant'",
"'museum'",
"'restaurant'",
"'restaurant'",
"'pub'",
"'pub'",
"'school'",
"'pub'",
"'cafe'",
"'cinema'",
"'hotel'",
"'bar'",
"'tourist_info'",
"'restaurant'",
"'cafe'",
"'cafe'",
"'restaurant'",
"'gift_shop'",
"'florist'",
"'restaurant'",
"'fast_food'",
"'restaurant'",
"'beverages'",
"'hairdresser'",
"'beverages'",
"'restaurant'",
"'restaurant'",
"'restaurant'",
"'cafe'"],
["'nursing_home'",
"'convenience'",
"'bakery'",
"'school'",
"'car_dealership'",
"'hairdresser'",
"'park'",
"'playground'",
"'school'",
"'car_dealership'",
"'convenience'",
"'doityourself'",
"'hairdresser'",
"'convenience'",
"'doityourself'"],
["'college'",
"'park'",
"'school'",
"'pitch'",
"'park'",
"'sports_centre'",
"'park'",
"'track'",
"'fast_food'"],
["'pub'",
"'cafe'",
"'restaurant'",
"'doityourself'",
"'pub'",
"'clinic'",
"'sports_shop'",
"'fast_food'",
"'fast_food'",
"'outdoor_shop'",
"'pub'",
"'convenience'",
"'fast_food'",
"'restaurant'",
"'pub'",
"'convenience'",
"'veterinary'",
"'sports_centre'",
"'clinic'",
"'dentist'",
"'playground'",
"'pub'"],
["'convenience'",
"'butcher'",
"'gift_shop'",
"'mobile_phone_shop'",
"'pub'",
"'fast_food'",
"'fast_food'",
"'clothes'",
"'cafe'",
"'park'",
"'playground'",
"'park'",
"'pub'",
"'convenience'",
"'restaurant'",
"'restaurant'",
"'fast_food'",
"'hairdresser'",
"'restaurant'",
"'hairdresser'",
"'pub'",
"'restaurant'",
"'convenience'",
"'supermarket'",
"'restaurant'",
"'supermarket'",
"'pharmacy'",
"'butcher'",
"'restaurant'",
"'restaurant'",
"'cafe'",
"'beauty_shop'",
"'fast_food'",
"'travel_agent'",
"'travel_agent'",
"'pharmacy'",
"'bakery'",
"'supermarket'",
"'cafe'",
"'restaurant'",
"'hairdresser'",
"'clothes'",
"'fast_food'",
"'restaurant'",
"'fast_food'",
"'beauty_shop'",
"'hairdresser'",
"'supermarket'",
"'toy_shop'",
"'hairdresser'",
"'convenience'",
"'pub'",
"'fast_food'",
"'car_wash'",
"'clothes'",
"'playground'",
"'bakery'",
"'butcher'",
"'convenience'"],
["'sports_centre'",
"'convenience'",
"'car_rental'",
"'arts_centre'",
"'fast_food'",
"'fast_food'",
"'shoe_shop'",
"'clothes'",
"'mobile_phone_shop'",
"'fast_food'",
"'beauty_shop'",
"'fast_food'",
"'chemist'",
"'cafe'",
"'beverages'",
"'cafe'",
"'hairdresser'",
"'mobile_phone_shop'",
"'hairdresser'",
"'mobile_phone_shop'",
"'hairdresser'",
"'jeweller'",
"'optician'",
"'beauty_shop'",
"'mobile_phone_shop'",
"'beauty_shop'",
"'post_office'",
"'clothes'",
"'optician'",
"'pub'",
"'car_dealership'",
"'supermarket'",
"'car_wash'",
"'park'",
"'pub'",
"'cafe'",
"'mobile_phone_shop'",
"'hairdresser'",
"'bank'",
"'mobile_phone_shop'",
"'bank'",
"'mobile_phone_shop'",
"'hairdresser'",
"'gift_shop'",
"'travel_agent'",
"'cafe'",
"'fast_food'",
"'fast_food'",
"'greengrocer'",
"'cafe'",
"'butcher'",
"'toilet'",
"'pitch'",
"'playground'",
"'nightclub'",
"'pub'",
"'fast_food'",
"'pub'",
"'hairdresser'",
"'fast_food'",
"'cafe'",
"'furniture_shop'",
"'pharmacy'",
"'doctors'",
"'restaurant'",
"'library'",
"'clinic'",
"'hairdresser'",
"'convenience'",
"'cafe'",
"'outdoor_shop'",
"'furniture_shop'",
"'pub'",
"'cafe'",
"'fast_food'",
"'pub'"],
["'playground'", "'tower'", "'pitch'"],
["'hairdresser'",
"'fast_food'",
"'hairdresser'",
"'dentist'",
"'university'",
"'hotel'",
"'pub'",
"'hotel'",
"'clinic'",
"'restaurant'",
"'bookshop'",
"'park'",
"'restaurant'",
"'laundry'",
"'convenience'",
"'pub'",
"'bar'",
"'pub'",
"'hairdresser'",
"'university'",
"'school'",
"'swimming_pool'",
"'kindergarten'",
"'restaurant'",
"'cafe'",
"'convenience'",
"'fast_food'"],
["'school'",
"'pitch'",
"'park'",
"'convenience'",
"'pitch'",
"'community_centre'",
"'park'"],
["'school'", "'post_office'"],
["'cafe'",
"'toilet'",
"'pitch'",
"'shelter'",
"'park'",
"'mall'",
"'playground'",
"'pitch'",
"'fast_food'",
"'hairdresser'",
"'florist'",
"'bakery'",
"'hairdresser'",
"'car_wash'",
"'community_centre'",
"'bank'",
"'bank'",
"'fast_food'",
"'gift_shop'",
"'dentist'",
"'kindergarten'",
"'veterinary'",
"'school'",
"'kindergarten'",
"'fast_food'",
"'newsagent'",
"'clinic'",
"'pub'",
"'park'",
"'graveyard'",
"'pitch'",
"'pitch'"],
["'dentist'",
"'pub'",
"'pitch'",
"'bakery'",
"'beauty_shop'",
"'hairdresser'",
"'fast_food'",
"'pharmacy'",
"'fast_food'",
"'pub'",
"'furniture_shop'",
"'newsagent'",
"'beverages'",
"'hairdresser'",
"'convenience'",
"'pitch'",
"'pitch'",
"'school'",
"'doityourself'",
"'convenience'",
"'beauty_shop'",
"'beverages'",
"'fast_food'",
"'car_dealership'",
"'optician'",
"'convenience'",
"'post_office'",
"'fast_food'",
"'beverages'",
"'restaurant'",
"'pub'",
"'fast_food'",
"'bakery'",
"'restaurant'",
"'beverages'"],
["'school'",
"'playground'",
"'park'",
"'park'",
"'car_dealership'",
"'clothes'",
"'convenience'",
"'convenience'",
"'clinic'",
"'library'",
"'sports_centre'",
"'bicycle_shop'",
"'pitch'",
"'school'",
"'sports_centre'",
"'fast_food'",
"'school'",
"'fast_food'",
"'cafe'",
"'community_centre'",
"'cafe'",
"'convenience'",
"'furniture_shop'",
"'cafe'",
"'clothes'",
"'optician'",
"'hairdresser'",
"'convenience'",
"'computer_shop'",
"'fast_food'",
"'greengrocer'",
"'restaurant'",
"'fast_food'",
"'hairdresser'",
"'butcher'",
"'cafe'",
"'cafe'",
"'butcher'",
"'fast_food'",
"'mobile_phone_shop'",
"'convenience'",
"'travel_agent'",
"'fast_food'",
"'mobile_phone_shop'",
"'furniture_shop'",
"'butcher'",
"'pharmacy'",
"'cafe'",
"'park'",
"'hairdresser'",
"'butcher'",
"'restaurant'",
"'fast_food'",
"'convenience'",
"'restaurant'",
"'playground'",
"'park'",
"'pitch'",
"'pitch'",
"'bar'",
"'bar'",
"'cafe'"],
["'veterinary'",
"'doctors'",
"'pub'",
"'fast_food'",
"'restaurant'",
"'restaurant'",
"'hairdresser'",
"'hairdresser'",
"'community_centre'",
"'graveyard'"],
["'pitch'",
"'school'",
"'pub'",
"'convenience'",
"'cafe'",
"'fast_food'",
"'playground'"],
["'community_centre'",
"'car_dealership'",
"'pharmacy'",
"'hairdresser'",
"'car_dealership'",
"'car_dealership'",
"'car_dealership'",
"'pitch'",
"'pub'",
"'beverages'",
"'convenience'",
"'greengrocer'",
"'cafe'",
"'park'"],
["'hairdresser'", "'hairdresser'", "'newsagent'"],
["'hairdresser'",
"'bakery'",
"'clinic'",
"'swimming_pool'",
"'clinic'",
"'park'",
"'doctors'",
"'dentist'",
"'beauty_shop'",
"'restaurant'",
"'hairdresser'",
"'hairdresser'",
"'bank'",
"'convenience'",
"'fast_food'",
"'fast_food'",
"'restaurant'"],
["'park'",
"'university'",
"'university'",
"'hospital'",
"'university'",
"'university'",
"'cafe'",
"'school'",
"'pitch'",
"'park'",
"'fast_food'",
"'restaurant'",
"'hairdresser'",
"'hairdresser'",
"'convenience'",
"'pharmacy'",
"'convenience'",
"'nursing_home'",
"'pitch'",
"'playground'",
"'pitch'",
"'park'"],
["'clinic'",
"'guesthouse'",
"'park'",
"'beauty_shop'",
"'kindergarten'",
"'community_centre'",
"'park'",
"'park'",
"'park'",
"'fast_food'",
"'fast_food'",
"'pub'",
"'police'",
"'cafe'",
"'hairdresser'",
"'supermarket'"],
["'hairdresser'",
"'cafe'",
"'convenience'",
"'optician'",
"'fast_food'",
"'pharmacy'",
"'pharmacy'",
"'veterinary'",
"'fast_food'",
"'convenience'",
"'hairdresser'",
"'convenience'",
"'fast_food'",
"'fast_food'",
"'fast_food'",
"'library'",
"'kindergarten'",
"'school'",
"'school'"],
["'park'",
"'hairdresser'",
"'hairdresser'",
"'convenience'",
"'convenience'",
"'fast_food'",
"'fast_food'",
"'florist'",
"'school'",
"'park'"],
["'community_centre'",
"'park'",
"'convenience'",
"'playground'",
"'library'",
"'cafe'",
"'park'",
"'park'",
"'pitch'",
"'playground'"],
["'restaurant'",
"'fast_food'",
"'sports_shop'",
"'fast_food'",
"'pub'",
"'pub'",
"'pharmacy'",
"'restaurant'",
"'bicycle_shop'",
"'bar'",
"'sports_shop'",
"'clothes'",
"'toilet'",
"'shelter'",
"'beauty_shop'",
"'cafe'",
"'bar'",
"'restaurant'",
"'beauty_shop'",
"'doctors'",
"'library'",
"'furniture_shop'",
"'furniture_shop'",
"'restaurant'",
"'cafe'",
"'furniture_shop'",
"'furniture_shop'",
"'furniture_shop'",
"'furniture_shop'",
"'clinic'",
"'supermarket'",
"'community_centre'",
"'furniture_shop'",
"'restaurant'",
"'restaurant'",
"'doityourself'",
"'furniture_shop'",
"'furniture_shop'",
"'police'",
"'cafe'",
"'kindergarten'",
"'shelter'",
"'cafe'",
"'cafe'",
"'optician'",
"'beauty_shop'",
"'school'",
"'restaurant'",
"'kindergarten'",
"'greengrocer'",
"'hairdresser'",
"'convenience'",
"'cafe'",
"'gift_shop'",
"'bookshop'",
"'supermarket'",
"'mall'",
"'laundry'",
"'optician'",
"'pitch'",
"'newsagent'",
"'cafe'",
"'pub'",
"'bar'",
"'convenience'",
"'cafe'",
"'cafe'",
"'hairdresser'",
"'sports_centre'"],
["'playground'",
"'pitch'",
"'sports_centre'",
"'pitch'",
"'laundry'",
"'pharmacy'",
"'hairdresser'",
"'fast_food'",
"'hairdresser'",
"'hairdresser'",
"'supermarket'",
"'fast_food'",
"'convenience'",
"'doityourself'",
"'doctors'",
"'dentist'",
"'community_centre'",
"'pitch'",
"'school'",
"'pitch'",
"'hospital'"],
["'golf_course'",
"'library'",
"'community_centre'",
"'swimming_pool'",
"'school'",
"'pitch'",
"'pitch'",
"'park'",
"'convenience'",
"'beauty_shop'",
"'hairdresser'",
"'park'",
"'beauty_shop'",
"'fast_food'",
"'cafe'",
"'park'",
"'park'",
"'dentist'",
"'park'",
"'playground'",
"'convenience'",
"'park'"],
["'pub'",
"'fast_food'",
"'playground'",
"'pub'",
"'convenience'",
"'park'",
"'doityourself'",
"'park'"],
["'park'",
"'clothes'",
"'hairdresser'",
"'school'",
"'pitch'",
"'park'",
"'museum'",
"'university'",
"'hospital'",
"'school'",
"'optician'",
"'supermarket'",
"'fast_food'",
"'travel_agent'",
"'playground'",
"'park'",
"'library'",
"'car_dealership'",
"'supermarket'",
"'fast_food'",
"'fast_food'",
"'fast_food'",
"'supermarket'",
"'supermarket'",
"'pub'",
"'bank'",
"'pub'",
"'beauty_shop'",
"'hairdresser'",
"'restaurant'",
"'beauty_shop'",
"'jeweller'",
"'mobile_phone_shop'"],
["'furniture_shop'",
"'cafe'",
"'clinic'",
"'gift_shop'",
"'fast_food'",
"'restaurant'",
"'greengrocer'",
"'mobile_phone_shop'",
"'kindergarten'",
"'park'",
"'playground'",
"'shelter'",
"'park'",
"'pitch'",
"'school'",
"'hairdresser'",
"'clothes'",
"'sports_shop'"],
["'pitch'",
"'pub'",
"'school'",
"'car_rental'",
"'car_dealership'",
"'convenience'",
"'beauty_shop'",
"'fire_station'",
"'playground'",
"'hospital'"],
["'newsagent'",
"'pub'",
"'fast_food'",
"'pub'",
"'hairdresser'",
"'furniture_shop'",
"'park'",
"'bar'",
"'bookshop'",
"'clothes'",
"'doityourself'",
"'cafe'",
"'beauty_shop'",
"'beauty_shop'",
"'jeweller'",
"'cafe'",
"'hairdresser'",
"'car_dealership'",
"'pub'",
"'furniture_shop'",
"'cafe'",
"'fast_food'",
"'clinic'",
"'supermarket'",
"'bicycle_shop'",
"'car_dealership'",
"'florist'",
"'fast_food'",
"'hairdresser'",
"'fast_food'",
"'beverages'",
"'restaurant'",
"'doityourself'",
"'fast_food'",
"'hairdresser'",
"'restaurant'",
"'doityourself'",
"'convenience'"],
["'park'"],
["'pitch'",
"'pitch'",
"'car_dealership'",
"'school'",
"'doctors'",
"'convenience'",
"'car_rental'",
"'fast_food'",
"'supermarket'"],
["'school'",
"'pitch'",
"'swimming_pool'",
"'swimming_pool'",
"'cafe'",
"'park'",
"'school'",
"'hairdresser'",
"'playground'",
"'convenience'",
"'park'",
"'pitch'",
"'nursing_home'",
"'pub'",
"'convenience'",
"'park'",
"'park'"],
["'pub'", "'park'"],
["'pitch'",
"'school'",
"'tower'",
"'beverages'",
"'pub'",
"'hairdresser'",
"'pitch'",
"'pitch'",
"'convenience'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'playground'",
"'park'",
"'graveyard'",
"'kindergarten'"],
["'convenience'",
"'hairdresser'",
"'fast_food'",
"'beverages'",
"'hairdresser'",
"'fast_food'",
"'beauty_shop'",
"'doityourself'",
"'car_wash'",
"'school'",
"'playground'",
"'pitch'",
"'pitch'",
"'park'",
"'pitch'"],
["'hotel'",
"'park'",
"'bar'",
"'hotel'",
"'bar'",
"'cafe'",
"'hairdresser'",
"'convenience'",
"'park'",
"'graveyard'",
"'theatre'",
"'playground'",
"'park'",
"'college'",
"'cafe'",
"'playground'",
"'school'",
"'restaurant'",
"'school'",
"'convenience'",
"'hairdresser'",
"'hotel'",
"'bar'",
"'pub'",
"'hostel'",
"'nightclub'",
"'restaurant'"],
["'park'",
"'hairdresser'",
"'hairdresser'",
"'clinic'",
"'nursing_home'",
"'nursing_home'",
"'hairdresser'",
"'computer_shop'",
"'fast_food'",
"'beverages'",
"'fast_food'",
"'newsagent'",
"'hairdresser'",
"'community_centre'",
"'community_centre'",
"'pitch'",
"'pitch'",
"'pitch'"],
["'park'",
"'archaeological'",
"'wastewater_plant'",
"'recycling_glass'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'police'",
"'car_dealership'",
"'park'",
"'shelter'",
"'car_rental'",
"'car_rental'",
"'fast_food'",
"'bakery'",
"'fast_food'",
"'car_dealership'",
"'playground'",
"'park'",
"'convenience'",
"'museum'",
"'archaeological'",
"'car_dealership'",
"'school'",
"'track'",
"'pitch'",
"'pitch'"],
["'pitch'",
"'pitch'",
"'pitch'",
"'swimming_pool'",
"'car_dealership'",
"'clinic'",
"'hairdresser'",
"'car_dealership'",
"'doityourself'",
"'clinic'"],
["'pub'",
"'pub'",
"'park'",
"'bakery'",
"'pub'",
"'playground'",
"'convenience'",
"'sports_centre'",
"'fast_food'",
"'dentist'",
"'cafe'",
"'pub'",
"'convenience'",
"'fast_food'",
"'restaurant'",
"'supermarket'"],
["'fast_food'",
"'beauty_shop'",
"'convenience'",
"'beauty_shop'",
"'veterinary'",
"'dentist'",
"'restaurant'",
"'hairdresser'"],
["'school'",
"'sports_centre'",
"'community_centre'",
"'school'",
"'pitch'",
"'kindergarten'",
"'playground'",
"'pitch'",
"'pitch'",
"'community_centre'",
"'pitch'",
"'pitch'"],
["'car_dealership'", "'pub'", "'fast_food'", "'hairdresser'"],
["'jeweller'",
"'convenience'",
"'pitch'",
"'school'",
"'pitch'",
"'school'",
"'park'",
"'convenience'",
"'fast_food'",
"'pub'",
"'restaurant'",
"'pub'",
"'park'",
"'playground'",
"'playground'",
"'community_centre'",
"'park'",
"'park'",
"'convenience'",
"'playground'",
"'travel_agent'",
"'restaurant'",
"'post_office'",
"'furniture_shop'",
"'convenience'",
"'laundry'",
"'convenience'",
"'cafe'",
"'butcher'",
"'butcher'",
"'fast_food'",
"'mobile_phone_shop'",
"'beauty_shop'",
"'cafe'",
"'convenience'",
"'supermarket'"],
["'nan'"],
["'park'",
"'hospital'",
"'park'",
"'park'",
"'doctors'",
"'school'",
"'community_centre'",
"'park'"],
["'water_tower'",
"'doctors'",
"'pub'",
"'park'",
"'kindergarten'",
"'community_centre'",
"'swimming_pool'"],
["'school'", "'convenience'", "'library'"],
["'school'",
"'pitch'",
"'pitch'",
"'park'",
"'library'",
"'school'",
"'pitch'",
"'pitch'"],
["'park'",
"'park'",
"'park'",
"'park'",
"'attraction'",
"'supermarket'",
"'camp_site'",
"'pitch'",
"'school'",
"'park'",
"'pitch'",
"'car_rental'",
"'hospital'",
"'supermarket'"],
["'butcher'",
"'convenience'",
"'convenience'",
"'cafe'",
"'supermarket'",
"'fast_food'",
"'convenience'",
"'bakery'",
"'hairdresser'",
"'cafe'",
"'restaurant'",
"'restaurant'",
"'fast_food'",
"'pub'",
"'community_centre'",
"'pitch'",
"'playground'",
"'park'",
"'pub'",
"'pitch'",
"'park'",
"'playground'",
"'pub'",
"'fast_food'",
"'convenience'",
"'cafe'",
"'restaurant'",
"'bank'",
"'pub'",
"'restaurant'",
"'hairdresser'",
"'fast_food'",
"'cafe'",
"'bar'",
"'cafe'",
"'convenience'",
"'cafe'",
"'school'",
"'doctors'",
"'fast_food'",
"'pub'",
"'clinic'",
"'pitch'",
"'school'",
"'convenience'"],
["'hairdresser'",
"'butcher'",
"'convenience'",
"'convenience'",
"'hairdresser'",
"'park'",
"'park'",
"'pub'",
"'convenience'",
"'fast_food'",
"'hairdresser'",
"'fast_food'",
"'fast_food'",
"'convenience'",
"'cafe'",
"'restaurant'",
"'fast_food'",
"'pharmacy'",
"'hairdresser'",
"'bicycle_shop'",
"'convenience'",
"'convenience'",
"'fast_food'",
"'hairdresser'",
"'beauty_shop'",
"'restaurant'",
"'community_centre'",
"'hairdresser'",
"'park'",
"'butcher'",
"'dentist'",
"'mobile_phone_shop'",
"'clothes'",
"'convenience'",
"'hairdresser'",
"'convenience'",
"'butcher'",
"'travel_agent'",
"'clinic'",
"'restaurant'",
"'florist'",
"'laundry'",
"'fast_food'",
"'travel_agent'",
"'hairdresser'",
"'convenience'",
"'car_wash'",
"'clinic'",
"'fast_food'",
"'convenience'",
"'pub'",
"'greengrocer'",
"'fast_food'",
"'fast_food'",
"'playground'",
"'pitch'"],
["'pitch'",
"'community_centre'",
"'convenience'",
"'fast_food'",
"'fast_food'",
"'pub'",
"'park'",
"'park'"],
["'bakery'",
"'hairdresser'",
"'toy_shop'",
"'cafe'",
"'school'",
"'pub'",
"'school'",
"'newsagent'",
"'park'"],
["'cafe'",
"'optician'",
"'newsagent'",
"'fast_food'",
"'hairdresser'",
"'beverages'",
"'travel_agent'",
"'doctors'",
"'doctors'",
"'mall'",
"'fast_food'",
"'hairdresser'",
"'bicycle_shop'",
"'bar'",
"'convenience'",
"'florist'",
"'beauty_shop'",
"'bakery'",
"'beauty_shop'",
"'beauty_shop'",
"'park'",
"'convenience'",
"'community_centre'",
"'school'"],
["'park'",
"'park'",
"'playground'",
"'park'",
"'fast_food'",
"'community_centre'",
"'park'",
"'doctors'",
"'pub'",
"'beverages'",
"'bakery'",
"'park'",
"'bar'",
"'bar'",
"'car_dealership'",
"'car_dealership'",
"'fast_food'",
"'hairdresser'",
"'sports_shop'",
"'convenience'",
"'restaurant'",
"'fast_food'",
"'convenience'",
"'fast_food'",
"'restaurant'",
"'school'"],
["'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'park'",
"'playground'",
"'pub'",
"'water_works'",
"'car_wash'",
"'park'",
"'cafe'",
"'car_dealership'",
"'car_wash'",
"'park'",
"'pharmacy'",
"'fast_food'",
"'fast_food'",
"'doctors'",
"'cafe'",
"'supermarket'"],
["'pub'",
"'community_centre'",
"'playground'",
"'cafe'",
"'toilet'",
"'pitch'",
"'playground'",
"'pitch'",
"'school'",
"'pitch'",
"'park'",
"'pitch'",
"'shelter'"],
["'park'",
"'attraction'",
"'community_centre'",
"'furniture_shop'",
"'supermarket'",
"'market_place'",
"'supermarket'",
"'fast_food'",
"'supermarket'",
"'pharmacy'",
"'cafe'",
"'laundry'",
"'car_wash'",
"'department_store'",
"'doctors'",
"'playground'",
"'furniture_shop'",
"'bicycle_shop'",
"'fast_food'",
"'convenience'",
"'veterinary'",
"'hairdresser'",
"'hairdresser'",
"'school'",
"'community_centre'",
"'school'",
"'park'",
"'school'"],
["'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'swimming_pool'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'sports_centre'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'water_works'",
"'playground'",
"'park'",
"'pitch'",
"'cafe'",
"'school'",
"'fast_food'",
"'cafe'",
"'school'",
"'hotel'",
"'kindergarten'",
"'car_dealership'",
"'pitch'",
"'cafe'",
"'doityourself'",
"'doityourself'",
"'sports_centre'",
"'car_dealership'",
"'ruins'"],
["'park'",
"'nursing_home'",
"'doityourself'",
"'fast_food'",
"'fast_food'",
"'hairdresser'",
"'community_centre'",
"'pub'",
"'convenience'",
"'car_dealership'",
"'school'",
"'pitch'",
"'park'",
"'park'",
"'doityourself'",
"'convenience'",
"'dentist'",
"'doityourself'"],
["'beauty_shop'",
"'bicycle_shop'",
"'beverages'",
"'restaurant'",
"'supermarket'",
"'restaurant'",
"'fast_food'",
"'dentist'",
"'beauty_shop'",
"'hairdresser'",
"'hairdresser'",
"'swimming_pool'",
"'pitch'",
"'school'",
"'dentist'",
"'playground'",
"'college'"],
["'hotel'",
"'furniture_shop'",
"'shoe_shop'",
"'pub'",
"'hairdresser'",
"'fast_food'",
"'restaurant'",
"'pub'",
"'clothes'",
"'bar'",
"'fast_food'",
"'laundry'",
"'restaurant'",
"'beauty_shop'",
"'restaurant'",
"'restaurant'",
"'restaurant'",
"'furniture_shop'",
"'restaurant'",
"'convenience'",
"'restaurant'"],
["'beauty_shop'",
"'car_dealership'",
"'fast_food'",
"'convenience'",
"'convenience'",
"'hairdresser'",
"'hairdresser'",
"'car_dealership'",
"'car_dealership'",
"'pub'",
"'pub'",
"'school'",
"'computer_shop'",
"'hairdresser'",
"'pub'"],
["'supermarket'", "'furniture_shop'", "'school'"],
["'park'",
"'school'",
"'doityourself'",
"'doityourself'",
"'park'",
"'park'",
"'park'",
"'shelter'",
"'playground'",
"'pitch'",
"'park'",
"'pitch'",
"'pitch'",
"'pub'",
"'park'"],
["'park'",
"'school'",
"'pitch'",
"'kindergarten'",
"'swimming_pool'",
"'swimming_pool'",
"'park'"],
["'car_wash'",
"'convenience'",
"'pharmacy'",
"'doctors'",
"'supermarket'",
"'dentist'",
"'park'",
"'community_centre'"],
["'cafe'", "'veterinary'", "'library'", "'pub'", "'school'", "'fast_food'"],
["'playground'",
"'park'",
"'attraction'",
"'school'",
"'sports_centre'",
"'school'"],
["'fast_food'",
"'clinic'",
"'convenience'",
"'beauty_shop'",
"'fast_food'",
"'butcher'",
"'hairdresser'",
"'fast_food'",
"'fast_food'",
"'convenience'",
"'pub'",
"'pitch'",
"'pitch'",
"'pub'",
"'pitch'",
"'graveyard'",
"'park'",
"'school'",
"'playground'"],
["'park'",
"'pub'",
"'hairdresser'",
"'fast_food'",
"'convenience'",
"'graveyard'",
"'school'"],
["'graveyard'",
"'park'",
"'pub'",
"'kindergarten'",
"'community_centre'",
"'car_dealership'"],
["'convenience'",
"'beverages'",
"'hairdresser'",
"'fast_food'",
"'beauty_shop'",
"'hairdresser'",
"'fast_food'",
"'supermarket'",
"'supermarket'",
"'fast_food'",
"'greengrocer'",
"'park'",
"'school'",
"'school'",
"'pitch'",
"'park'",
"'playground'",
"'community_centre'",
"'community_centre'",
"'school'",
"'pitch'"],
["'hairdresser'",
"'supermarket'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'school'",
"'school'",
"'school'",
"'swimming_pool'"],
["'playground'",
"'car_dealership'",
"'furniture_shop'",
"'clothes'",
"'furniture_shop'",
"'sports_shop'",
"'clothes'",
"'fast_food'",
"'track'",
"'track'",
"'golf_course'",
"'pitch'",
"'track'",
"'school'",
"'track'",
"'playground'",
"'park'",
"'community_centre'",
"'park'"],
["'car_dealership'",
"'car_wash'",
"'doctors'",
"'pitch'",
"'playground'",
"'school'",
"'nursing_home'",
"'convenience'",
"'doityourself'",
"'convenience'",
"'hairdresser'"],
["'school'",
"'pitch'",
"'school'",
"'pharmacy'",
"'doctors'",
"'supermarket'",
"'community_centre'",
"'doityourself'"],
["'park'",
"'school'",
"'playground'",
"'playground'",
"'pitch'",
"'playground'",
"'park'"],
["'pitch'",
"'restaurant'",
"'pub'",
"'furniture_shop'",
"'optician'",
"'hairdresser'",
"'clothes'",
"'supermarket'",
"'pub'",
"'clinic'",
"'bar'",
"'restaurant'",
"'cafe'",
"'convenience'",
"'restaurant'",
"'convenience'",
"'greengrocer'",
"'fast_food'",
"'hairdresser'",
"'fast_food'",
"'bar'",
"'fast_food'",
"'pub'",
"'hairdresser'",
"'computer_shop'",
"'supermarket'",
"'convenience'",
"'fast_food'",
"'beverages'",
"'convenience'",
"'restaurant'",
"'pharmacy'",
"'restaurant'",
"'fast_food'",
"'hairdresser'",
"'hairdresser'",
"'dentist'",
"'cafe'",
"'restaurant'",
"'clothes'",
"'cafe'",
"'clothes'",
"'bakery'",
"'bar'",
"'pharmacy'",
"'hairdresser'",
"'mobile_phone_shop'",
"'clothes'",
"'pub'",
"'fast_food'",
"'laundry'",
"'convenience'",
"'florist'",
"'restaurant'",
"'swimming_pool'",
"'park'",
"'playground'"],
["'bakery'",
"'fast_food'",
"'pub'",
"'restaurant'",
"'restaurant'",
"'convenience'",
"'community_centre'",
"'hairdresser'",
"'pub'",
"'pub'",
"'fast_food'"],
["'pitch'", "'pitch'", "'school'", "'pitch'", "'pub'", "'park'"],
["'pub'",
"'library'",
"'florist'",
"'hairdresser'",
"'beauty_shop'",
"'hairdresser'",
"'fast_food'",
"'furniture_shop'",
"'beauty_shop'",
"'jeweller'",
"'hairdresser'",
"'beauty_shop'",
"'supermarket'",
"'clothes'"],
["'pitch'", "'playground'", "'school'"],
["'supermarket'",
"'pharmacy'",
"'beverages'",
"'hairdresser'",
"'convenience'",
"'bakery'",
"'cafe'",
"'video_shop'",
"'convenience'",
"'fast_food'",
"'beauty_shop'",
"'fast_food'",
"'fast_food'",
"'clothes'",
"'hairdresser'",
"'car_dealership'",
"'cafe'",
"'florist'",
"'butcher'",
"'hairdresser'",
"'fast_food'",
"'fast_food'",
"'optician'",
"'bakery'",
"'convenience'",
"'newsagent'",
"'post_office'",
"'hairdresser'",
"'fast_food'",
"'beauty_shop'",
"'fast_food'",
"'hairdresser'",
"'hairdresser'",
"'school'"],
["'veterinary'",
"'sports_centre'",
"'school'",
"'school'",
"'pitch'",
"'school'",
"'pitch'",
"'park'",
"'swimming_pool'",
"'kindergarten'",
"'school'",
"'school'",
"'park'",
"'swimming_pool'"],
["'school'", "'golf_course'", "'park'"],
["'pub'",
"'golf_course'",
"'convenience'",
"'pitch'",
"'school'",
"'bar'",
"'kindergarten'",
"'water_works'",
"'playground'",
"'park'",
"'hairdresser'"],
["'garden_centre'",
"'doityourself'",
"'pitch'",
"'pitch'",
"'community_centre'",
"'convenience'",
"'school'",
"'pitch'",
"'car_dealership'",
"'sports_centre'"],
["'pub'",
"'pub'",
"'kindergarten'",
"'convenience'",
"'hairdresser'",
"'beauty_shop'",
"'pub'",
"'bakery'",
"'beauty_shop'",
"'restaurant'",
"'sports_centre'",
"'kindergarten'",
"'school'",
"'dentist'",
"'convenience'",
"'school'",
"'restaurant'",
"'bicycle_shop'",
"'restaurant'",
"'nightclub'",
"'convenience'",
"'cafe'",
"'hairdresser'",
"'cafe'",
"'supermarket'",
"'clinic'",
"'fast_food'",
"'beauty_shop'",
"'hairdresser'",
"'bicycle_shop'"],
["'convenience'",
"'pitch'",
"'car_wash'",
"'pitch'",
"'pitch'",
"'pitch'",
"'park'",
"'pitch'",
"'school'",
"'pitch'",
"'furniture_shop'",
"'playground'",
"'park'"],
["'track'",
"'graveyard'",
"'guesthouse'",
"'pitch'",
"'playground'",
"'furniture_shop'",
"'hotel'",
"'supermarket'",
"'park'",
"'graveyard'",
"'park'",
"'park'",
"'hospital'",
"'pitch'"],
["'fast_food'",
"'hairdresser'",
"'recycling'",
"'toy_shop'",
"'restaurant'",
"'beauty_shop'",
"'hairdresser'",
"'supermarket'",
"'convenience'",
"'restaurant'",
"'toy_shop'",
"'fast_food'",
"'toilet'",
"'fast_food'",
"'community_centre'",
"'bar'",
"'car_dealership'",
"'cafe'",
"'library'",
"'playground'",
"'cafe'",
"'park'",
"'pitch'",
"'pitch'",
"'pitch'",
"'graveyard'",
"'beauty_shop'",
"'fast_food'",
"'hairdresser'",
"'hairdresser'",
"'car_dealership'"],
["'school'",
"'bank'",
"'kindergarten'",
"'pub'",
"'car_wash'",
"'hairdresser'"],
["'veterinary'",
"'pub'",
"'dentist'",
"'car_wash'",
"'car_dealership'",
"'cafe'",
"'hairdresser'",
"'hairdresser'",
"'newsagent'",
"'restaurant'",
"'supermarket'",
"'dentist'",
"'convenience'",
"'park'",
"'graveyard'"],
["'convenience'",
"'fast_food'",
"'pub'",
"'hairdresser'",
"'convenience'",
"'pharmacy'",
"'butcher'",
"'hairdresser'",
"'supermarket'",
"'school'",
"'dentist'",
"'guesthouse'",
"'kindergarten'"],
["'playground'", "'park'", "'pitch'", "'pub'", "'pub'"],
["'restaurant'",
"'fast_food'",
"'hairdresser'",
"'fast_food'",
"'beverages'",
"'graveyard'",
"'pub'",
"'beauty_shop'",
"'car_dealership'",
"'beauty_shop'",
"'hairdresser'",
"'convenience'",
"'beauty_shop'",
"'outdoor_shop'",
"'laundry'",
"'fast_food'",
"'restaurant'",
"'butcher'",
"'hairdresser'",
"'fast_food'",
"'hairdresser'",
"'cafe'",
"'laundry'",
"'beauty_shop'",
"'hairdresser'",
"'fast_food'",
"'greengrocer'",
"'hairdresser'",
"'convenience'",
"'bakery'",
"'convenience'",
"'shelter'",
"'post_office'",
"'hairdresser'",
"'beauty_shop'",
"'bicycle_shop'",
"'pub'",
"'restaurant'",
"'fast_food'",
"'convenience'",
"'supermarket'",
"'pub'",
"'castle'",
"'car_dealership'",
"'car_dealership'",
"'car_dealership'",
"'car_dealership'",
"'school'",
"'newsagent'",
"'beauty_shop'"],
["'park'",
"'supermarket'",
"'library'",
"'fast_food'",
"'pub'",
"'school'",
"'school'",
"'school'",
"'convenience'",
"'school'"],
["'pub'",
"'supermarket'",
"'fast_food'",
"'fire_station'",
"'hotel'",
"'college'",
"'memorial'",
"'tower'",
"'park'",
"'pub'",
"'restaurant'",
"'supermarket'",
"'fast_food'",
"'cafe'",
"'pub'",
"'pub'",
"'bar'",
"'cafe'",
"'courthouse'",
"'kindergarten'",
"'cafe'",
"'newsagent'",
"'clinic'",
"'fast_food'",
"'restaurant'",
"'school'",
"'hotel'",
"'restaurant'",
"'park'",
"'hotel'",
"'hotel'",
"'fast_food'",
"'bank'",
"'hairdresser'",
"'hotel'",
"'pub'",
"'restaurant'",
"'fast_food'",
"'bakery'",
"'laundry'",
"'fast_food'",
"'park'",
"'cafe'",
"'hairdresser'",
"'convenience'",
"'pub'",
"'fast_food'",
"'ruins'",
"'pub'",
"'cafe'"],
["'park'",
"'pitch'",
"'pitch'",
"'pitch'",
"'toilet'",
"'playground'",
"'park'",
"'park'",
"'school'",
"'swimming_pool'",
"'restaurant'",
"'convenience'",
"'car_rental'",
"'museum'",
"'pitch'",
"'school'",
"'playground'",
"'pitch'",
"'community_centre'",
"'park'",
"'swimming_pool'"],
["'school'", "'pitch'"],
["'police'",
"'school'",
"'park'",
"'fast_food'",
"'fast_food'",
"'convenience'"],
["'school'",
"'playground'",
"'playground'",
"'school'",
"'pitch'",
"'pitch'",
"'car_dealership'",
"'beauty_shop'",
"'doityourself'",
"'car_dealership'",
"'mobile_phone_shop'",
"'fast_food'",
"'fast_food'",
"'pub'",
"'fast_food'",
"'hairdresser'",
"'hairdresser'",
"'hairdresser'",
"'hairdresser'",
"'hairdresser'",
"'hairdresser'",
"'cafe'",
"'doityourself'",
"'supermarket'",
"'doityourself'",
"'doityourself'",
"'pitch'",
"'pitch'",
"'pitch'",
"'park'",
"'pitch'",
"'fast_food'",
"'convenience'",
"'fast_food'",
"'fast_food'"],
["'pitch'",
"'pitch'",
"'shelter'",
"'school'",
"'school'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'"],
["'hairdresser'", "'fast_food'", "'convenience'", "'pitch'", "'stadium'"],
["'pitch'",
"'school'",
"'track'",
"'pitch'",
"'fast_food'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'beverages'"],
["'bar'",
"'doityourself'",
"'park'",
"'playground'",
"'school'",
"'restaurant'",
"'fast_food'",
"'hairdresser'",
"'fast_food'",
"'market_place'",
"'car_dealership'",
"'cafe'",
"'car_rental'",
"'cafe'",
"'car_dealership'",
"'car_dealership'",
"'cafe'",
"'newsagent'",
"'hairdresser'",
"'car_dealership'",
"'car_rental'",
"'ruins'",
"'park'",
"'playground'",
"'pitch'",
"'stationery'",
"'cafe'",
"'car_dealership'",
"'graveyard'",
"'pub'",
"'doityourself'",
"'pitch'",
"'doityourself'",
"'hotel'"],
["'computer_shop'",
"'beauty_shop'",
"'sports_shop'",
"'hairdresser'",
"'convenience'"],
["'guesthouse'",
"'hairdresser'",
"'hairdresser'",
"'doityourself'",
"'guesthouse'",
"'guesthouse'"],
["'fast_food'",
"'furniture_shop'",
"'butcher'",
"'newsagent'",
"'restaurant'",
"'furniture_shop'",
"'school'",
"'park'",
"'stationery'",
"'fast_food'",
"'hairdresser'",
"'convenience'",
"'car_wash'",
"'convenience'",
"'community_centre'",
"'park'",
"'community_centre'",
"'clothes'",
"'hairdresser'",
"'hairdresser'",
"'cafe'",
"'fast_food'",
"'convenience'",
"'convenience'",
"'fast_food'",
"'dentist'",
"'convenience'",
"'travel_agent'",
"'convenience'",
"'pub'",
"'travel_agent'",
"'restaurant'",
"'restaurant'",
"'restaurant'",
"'hairdresser'",
"'supermarket'",
"'restaurant'",
"'restaurant'",
"'pitch'",
"'pitch'",
"'park'",
"'convenience'",
"'school'",
"'pub'",
"'clinic'",
"'computer_shop'",
"'pub'",
"'playground'",
"'playground'",
"'park'",
"'park'",
"'pitch'",
"'playground'",
"'hairdresser'",
"'restaurant'",
"'restaurant'",
"'convenience'",
"'laundry'",
"'post_office'",
"'fast_food'",
"'fast_food'",
"'playground'",
"'bicycle_shop'",
"'sports_centre'",
"'pitch'",
"'pitch'",
"'pitch'",
"'cafe'",
"'pitch'",
"'school'",
"'laundry'",
"'hairdresser'",
"'convenience'",
"'butcher'"],
["'playground'",
"'clinic'",
"'playground'",
"'dentist'",
"'furniture_shop'",
"'fast_food'",
"'pub'",
"'restaurant'",
"'playground'",
"'clinic'",
"'pub'",
"'school'",
"'pub'"],
["'bakery'",
"'car_dealership'",
"'car_dealership'",
"'doityourself'",
"'doityourself'",
"'car_dealership'",
"'supermarket'",
"'doityourself'",
"'car_dealership'",
"'car_wash'",
"'car_dealership'",
"'car_dealership'",
"'fast_food'",
"'sports_shop'",
"'fast_food'",
"'beverages'",
"'newsagent'",
"'hairdresser'",
"'mobile_phone_shop'",
"'pub'",
"'park'"],
["'college'",
"'stadium'",
"'pitch'",
"'school'",
"'pub'",
"'pub'",
"'kindergarten'",
"'restaurant'",
"'restaurant'",
"'optician'",
"'cafe'",
"'doityourself'",
"'fast_food'",
"'fast_food'",
"'restaurant'",
"'cafe'",
"'newsagent'",
"'cafe'",
"'laundry'",
"'laundry'",
"'bicycle_shop'",
"'gift_shop'",
"'hairdresser'",
"'cafe'",
"'bank'",
"'kindergarten'",
"'pub'",
"'car_wash'",
"'butcher'",
"'theatre'",
"'beauty_shop'",
"'hairdresser'",
"'sports_centre'",
"'restaurant'",
"'florist'",
"'greengrocer'",
"'car_dealership'",
"'furniture_shop'",
"'gift_shop'",
"'pub'",
"'newsagent'",
"'cafe'",
"'shoe_shop'",
"'gift_shop'",
"'beauty_shop'",
"'hairdresser'",
"'veterinary'",
"'cafe'",
"'bicycle_shop'",
"'furniture_shop'",
"'hairdresser'",
"'florist'",
"'toy_shop'",
"'bar'",
"'restaurant'",
"'fast_food'",
"'fast_food'",
"'bakery'",
"'pub'",
"'convenience'",
"'cafe'",
"'prison'"],
["'convenience'",
"'fast_food'",
"'beauty_shop'",
"'convenience'",
"'fast_food'",
"'florist'",
"'convenience'",
"'fast_food'",
"'hairdresser'",
"'supermarket'",
"'park'",
"'school'",
"'kindergarten'",
"'pitch'",
"'pitch'",
"'park'",
"'playground'",
"'kindergarten'",
"'clinic'",
"'park'",
"'clinic'",
"'park'",
"'fire_station'",
"'car_rental'",
"'car_dealership'"],
["'fast_food'",
"'convenience'",
"'hairdresser'",
"'florist'",
"'fast_food'",
"'hairdresser'",
"'convenience'",
"'beverages'",
"'fast_food'",
"'cafe'",
"'fast_food'",
"'laundry'",
"'car_dealership'",
"'pub'",
"'butcher'",
"'pub'"],
["'clothes'",
"'pub'",
"'pitch'",
"'clothes'",
"'park'",
"'nightclub'",
"'hotel'",
"'car_rental'",
"'doityourself'",
"'doityourself'",
"'sports_centre'",
"'pub'",
"'nightclub'",
"'pub'",
"'cafe'",
"'dentist'",
"'pub'",
"'cafe'",
"'restaurant'",
"'pub'",
"'fast_food'",
"'hairdresser'",
"'clothes'",
"'pub'",
"'dentist'",
"'pub'",
"'stationery'",
"'convenience'",
"'fast_food'",
"'bicycle_shop'",
"'bakery'",
"'pub'",
"'hairdresser'",
"'fast_food'",
"'travel_agent'",
"'bakery'",
"'pub'",
"'florist'",
"'theatre'",
"'veterinary'",
"'market_place'",
"'park'",
"'nightclub'",
"'car_wash'",
"'school'",
"'car_dealership'",
"'restaurant'",
"'computer_shop'",
"'cafe'",
"'nightclub'",
"'bakery'",
"'restaurant'",
"'shelter'",
"'shelter'",
"'cafe'",
"'clinic'",
"'cafe'",
"'pub'",
"'bar'",
"'cafe'"],
["'clothes'",
"'school'",
"'pitch'",
"'park'",
"'playground'",
"'pitch'",
"'track'",
"'doctors'",
"'hospital'",
"'swimming_pool'",
"'water_works'",
"'hairdresser'",
"'fast_food'"],
["'pitch'", "'park'", "'park'", "'park'"],
["'park'",
"'college'",
"'playground'",
"'stadium'",
"'pitch'",
"'convenience'",
"'school'",
"'convenience'",
"'fast_food'",
"'pharmacy'",
"'fast_food'",
"'hairdresser'",
"'fast_food'",
"'pub'",
"'pub'"],
["'pub'",
"'supermarket'",
"'playground'",
"'doctors'",
"'pitch'",
"'pitch'",
"'school'",
"'kindergarten'",
"'pitch'",
"'park'"],
["'public_building'",
"'dentist'",
"'park'",
"'park'",
"'pitch'",
"'pitch'",
"'park'"],
["'park'"],
["'convenience'",
"'school'",
"'convenience'",
"'fast_food'",
"'nightclub'",
"'clinic'",
"'supermarket'",
"'pitch'",
"'pitch'",
"'pitch'",
"'playground'",
"'pitch'",
"'pitch'",
"'pitch'",
"'school'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'"],
["'sports_shop'",
"'pitch'",
"'pitch'",
"'pitch'",
"'school'",
"'hairdresser'",
"'guesthouse'",
"'hairdresser'",
"'fast_food'",
"'hairdresser'",
"'laundry'",
"'fast_food'",
"'fast_food'",
"'convenience'",
"'pub'",
"'guesthouse'",
"'car_dealership'",
"'fast_food'",
"'car_dealership'",
"'hairdresser'",
"'fast_food'",
"'supermarket'",
"'beauty_shop'",
"'hairdresser'",
"'hairdresser'",
"'fast_food'",
"'restaurant'",
"'hairdresser'",
"'hairdresser'",
"'restaurant'",
"'hairdresser'",
"'restaurant'",
"'beauty_shop'",
"'beauty_shop'",
"'fast_food'",
"'hairdresser'",
"'convenience'",
"'restaurant'",
"'convenience'",
"'pub'",
"'hairdresser'",
"'cafe'",
"'sports_shop'",
"'beauty_shop'"],
["'playground'",
"'playground'",
"'artwork'",
"'shelter'",
"'pitch'",
"'park'",
"'playground'",
"'convenience'",
"'bakery'",
"'fast_food'",
"'convenience'",
"'playground'",
"'pitch'",
"'greengrocer'",
"'pitch'",
"'newsagent'",
"'park'",
"'park'"],
["'toilet'",
"'university'",
"'park'",
"'museum'",
"'nursing_home'",
"'pitch'",
"'pitch'",
"'recycling_glass'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'town_hall'",
"'beauty_shop'",
"'bicycle_shop'",
"'beverages'",
"'nursing_home'"],
["'dentist'",
"'restaurant'",
"'pub'",
"'pub'",
"'kindergarten'",
"'pitch'",
"'pitch'",
"'library'",
"'pitch'",
"'graveyard'",
"'park'",
"'kindergarten'",
"'supermarket'",
"'bar'",
"'hairdresser'",
"'convenience'",
"'bakery'",
"'hairdresser'",
"'stationery'",
"'beauty_shop'",
"'fast_food'",
"'laundry'",
"'hairdresser'",
"'pharmacy'",
"'laundry'",
"'kindergarten'",
"'hairdresser'",
"'playground'"],
["'pitch'",
"'pitch'",
"'playground'",
"'cafe'",
"'pub'",
"'school'",
"'school'",
"'kindergarten'"],
["'cafe'",
"'graveyard'",
"'pub'",
"'beauty_shop'",
"'convenience'",
"'pub'",
"'kindergarten'",
"'pitch'"],
["'hairdresser'",
"'hairdresser'",
"'convenience'",
"'community_centre'",
"'school'"],
["'park'",
"'convenience'",
"'public_building'",
"'community_centre'",
"'public_building'",
"'park'",
"'convenience'",
"'fast_food'",
"'pub'",
"'park'",
"'clinic'",
"'park'",
"'library'",
"'park'",
"'community_centre'",
"'fast_food'",
"'supermarket'",
"'community_centre'",
"'restaurant'",
"'fast_food'",
"'cafe'",
"'hairdresser'",
"'cafe'",
"'pharmacy'",
"'hairdresser'",
"'hairdresser'",
"'hairdresser'",
"'beverages'",
"'supermarket'",
"'cafe'",
"'pharmacy'",
"'bakery'",
"'fast_food'",
"'fast_food'",
"'convenience'",
"'park'"],
["'pitch'",
"'school'",
"'pitch'",
"'pitch'",
"'playground'",
"'pitch'",
"'park'",
"'hospital'",
"'school'",
"'supermarket'"],
["'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'school'",
"'pitch'",
"'pitch'",
"'community_centre'"],
["'park'",
"'park'",
"'convenience'",
"'convenience'",
"'veterinary'",
"'veterinary'",
"'car_dealership'",
"'car_dealership'",
"'hairdresser'",
"'hairdresser'",
"'fast_food'",
"'cafe'",
"'convenience'",
"'convenience'",
"'library'"],
["'school'",
"'hairdresser'",
"'park'",
"'pitch'",
"'kindergarten'",
"'school'"],
["'playground'",
"'school'",
"'school'",
"'pitch'",
"'pitch'",
"'playground'",
"'park'"],
["'clinic'",
"'dentist'",
"'convenience'",
"'fast_food'",
"'bakery'",
"'fast_food'",
"'convenience'",
"'convenience'",
"'convenience'",
"'pharmacy'",
"'convenience'",
"'fast_food'",
"'park'",
"'fast_food'",
"'cafe'",
"'hairdresser'",
"'hairdresser'",
"'cafe'",
"'convenience'",
"'playground'",
"'community_centre'",
"'supermarket'",
"'pitch'",
"'school'",
"'pitch'",
"'school'",
"'graveyard'",
"'pitch'",
"'pitch'",
"'pitch'",
"'doctors'"],
["'pub'",
"'bakery'",
"'pub'",
"'pitch'",
"'park'",
"'playground'",
"'car_dealership'",
"'school'"],
["'library'",
"'hairdresser'",
"'fast_food'",
"'cafe'",
"'dentist'",
"'beauty_shop'",
"'restaurant'",
"'pitch'",
"'pitch'",
"'playground'"],
["'school'", "'track'", "'community_centre'", "'pub'"],
["'beauty_shop'",
"'pub'",
"'doityourself'",
"'pub'",
"'convenience'",
"'hairdresser'",
"'bank'",
"'pharmacy'",
"'fast_food'",
"'optician'",
"'butcher'",
"'cafe'",
"'florist'",
"'hairdresser'",
"'supermarket'",
"'hairdresser'",
"'hairdresser'",
"'convenience'",
"'fast_food'",
"'cafe'",
"'convenience'",
"'convenience'",
"'fast_food'",
"'kindergarten'",
"'hairdresser'",
"'hairdresser'",
"'playground'",
"'park'",
"'playground'",
"'dentist'",
"'post_office'",
"'cafe'",
"'cafe'",
"'veterinary'",
"'beverages'",
"'bakery'",
"'school'",
"'graveyard'",
"'convenience'"],
["'restaurant'",
"'clothes'",
"'hairdresser'",
"'clothes'",
"'pub'",
"'hairdresser'",
"'pub'",
"'restaurant'",
"'gift_shop'",
"'restaurant'",
"'convenience'",
"'restaurant'",
"'playground'",
"'restaurant'",
"'museum'",
"'attraction'",
"'fast_food'",
"'furniture_shop'",
"'fast_food'",
"'post_office'",
"'cafe'",
"'pub'",
"'fast_food'",
"'restaurant'",
"'restaurant'",
"'bakery'",
"'park'",
"'laundry'",
"'cafe'",
"'mall'",
"'cafe'",
"'park'"],
["'pub'",
"'library'",
"'school'",
"'school'",
"'pub'",
"'pub'",
"'park'",
"'school'",
"'school'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'playground'",
"'pitch'"],
["'pitch'",
"'pitch'",
"'school'",
"'pitch'",
"'pitch'",
"'water_works'",
"'park'",
"'playground'",
"'park'",
"'pub'",
"'community_centre'",
"'school'"],
["'beverages'",
"'restaurant'",
"'doityourself'",
"'hairdresser'",
"'clinic'",
"'kindergarten'",
"'florist'",
"'hairdresser'",
"'cafe'",
"'optician'",
"'cafe'",
"'cafe'",
"'bar'",
"'beauty_shop'",
"'hairdresser'",
"'bookshop'",
"'restaurant'",
"'restaurant'",
"'restaurant'",
"'computer_shop'",
"'pharmacy'",
"'cafe'",
"'butcher'",
"'restaurant'",
"'bakery'",
"'fast_food'",
"'bakery'",
"'fast_food'",
"'beauty_shop'",
"'restaurant'",
"'greengrocer'",
"'convenience'",
"'hairdresser'",
"'newsagent'",
"'pub'",
"'bank'",
"'fast_food'",
"'supermarket'",
"'doityourself'",
"'stadium'"],
["'kindergarten'",
"'beauty_shop'",
"'clothes'",
"'toy_shop'",
"'hairdresser'",
"'supermarket'",
"'cafe'",
"'fast_food'",
"'gift_shop'",
"'pub'",
"'beverages'",
"'bookshop'",
"'post_office'",
"'toy_shop'",
"'supermarket'",
"'supermarket'",
"'gift_shop'",
"'beverages'",
"'bakery'",
"'hairdresser'",
"'greengrocer'",
"'gift_shop'",
"'mobile_phone_shop'",
"'bar'",
"'bicycle_shop'",
"'florist'",
"'hairdresser'",
"'beauty_shop'",
"'cafe'",
"'greengrocer'",
"'restaurant'",
"'pub'",
"'cafe'",
"'gift_shop'",
"'cafe'",
"'convenience'",
"'pub'",
"'bakery'",
"'newsagent'",
"'restaurant'",
"'restaurant'",
"'restaurant'",
"'cafe'",
"'library'",
"'pub'"],
["'playground'",
"'sports_centre'",
"'park'",
"'park'",
"'community_centre'",
"'pub'",
"'pitch'",
"'park'",
"'playground'",
"'newsagent'",
"'fast_food'",
"'fast_food'",
"'pub'",
"'bar'"],
["'park'",
"'park'",
"'park'",
"'clinic'",
"'playground'",
"'clinic'",
"'pitch'",
"'pitch'",
"'park'"],
["'clinic'",
"'clinic'",
"'school'",
"'kindergarten'",
"'park'",
"'park'",
"'park'",
"'park'",
"'school'",
"'park'",
"'playground'",
"'community_centre'",
"'playground'",
"'playground'",
"'playground'",
"'community_centre'",
"'playground'",
"'pitch'",
"'pitch'",
"'pitch'",
"'park'",
"'kindergarten'"],
["'park'",
"'community_centre'",
"'school'",
"'playground'",
"'park'",
"'park'",
"'golf_course'"],
["'guesthouse'",
"'pub'",
"'sports_shop'",
"'pub'",
"'pub'",
"'college'",
"'dentist'",
"'ruins'",
"'school'",
"'convenience'",
"'cafe'",
"'school'",
"'clinic'",
"'sports_centre'"],
["'newsagent'",
"'fast_food'",
"'cafe'",
"'shoe_shop'",
"'florist'",
"'furniture_shop'",
"'cafe'",
"'hairdresser'",
"'fast_food'",
"'park'",
"'cafe'",
"'restaurant'",
"'optician'",
"'pharmacy'",
"'fast_food'",
"'school'",
"'supermarket'",
"'cafe'",
"'laundry'",
"'park'",
"'bar'",
"'graveyard'",
"'hairdresser'",
"'hairdresser'"],
["'dentist'",
"'doityourself'",
"'supermarket'",
"'car_wash'",
"'pitch'",
"'school'",
"'doctors'",
"'doctors'",
"'pub'",
"'florist'",
"'hospital'",
"'pitch'",
"'pitch'",
"'water_works'",
"'veterinary'",
"'community_centre'",
"'restaurant'",
"'beauty_shop'",
"'convenience'"],
["'pitch'",
"'playground'",
"'park'",
"'hairdresser'",
"'golf_course'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'sports_centre'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'"],
["'park'",
"'shelter'",
"'toilet'",
"'water_tower'",
"'water_works'",
"'cafe'",
"'park'",
"'park'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'toilet'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'swimming_pool'",
"'pitch'",
"'ruins'",
"'swimming_pool'",
"'swimming_pool'",
"'swimming_pool'",
"'doctors'",
"'nursing_home'",
"'swimming_pool'",
"'swimming_pool'",
"'college'"],
["'restaurant'",
"'toilet'",
"'florist'",
"'jeweller'",
"'laundry'",
"'jeweller'",
"'pub'",
"'playground'",
"'attraction'",
"'clinic'",
"'theatre'",
"'pitch'",
"'pitch'",
"'pitch'",
"'attraction'",
"'shelter'",
"'shelter'",
"'pitch'",
"'shelter'",
"'school'",
"'park'",
"'school'",
"'doctors'"],
["'fast_food'",
"'sports_centre'",
"'pitch'",
"'pub'",
"'park'",
"'school'",
"'arts_centre'",
"'supermarket'",
"'pub'",
"'hotel'",
"'guesthouse'",
"'graveyard'",
"'dentist'",
"'doctors'",
"'clinic'",
"'cafe'",
"'hairdresser'",
"'pub'",
"'pitch'",
"'pitch'",
"'playground'",
"'fast_food'",
"'car_wash'",
"'doctors'",
"'park'",
"'hairdresser'",
"'beverages'",
"'post_office'",
"'restaurant'",
"'hairdresser'",
"'bank'",
"'beauty_shop'",
"'hairdresser'",
"'hairdresser'",
"'butcher'",
"'pharmacy'",
"'hairdresser'",
"'bank'",
"'cafe'",
"'cafe'",
"'clothes'",
"'pub'",
"'hairdresser'",
"'mobile_phone_shop'",
"'greengrocer'",
"'fast_food'",
"'bakery'",
"'cafe'",
"'hairdresser'",
"'toy_shop'",
"'cafe'",
"'beauty_shop'",
"'convenience'",
"'fast_food'",
"'restaurant'",
"'hairdresser'",
"'community_centre'",
"'dentist'",
"'optician'",
"'newsagent'",
"'clothes'",
"'fast_food'",
"'doityourself'",
"'car_wash'",
"'car_wash'"],
["'park'",
"'school'",
"'swimming_pool'",
"'pitch'",
"'pitch'",
"'sports_centre'",
"'pitch'",
"'doctors'",
"'pitch'",
"'convenience'",
"'veterinary'",
"'pub'",
"'furniture_shop'",
"'pitch'",
"'school'",
"'pitch'",
"'pitch'",
"'pitch'",
"'park'",
"'pitch'",
"'school'",
"'sports_centre'",
"'park'",
"'school'"],
["'doityourself'",
"'playground'",
"'park'",
"'hairdresser'",
"'convenience'",
"'fast_food'",
"'fast_food'",
"'garden_centre'",
"'supermarket'",
"'fast_food'",
"'supermarket'",
"'fast_food'",
"'supermarket'",
"'fast_food'",
"'bakery'",
"'cafe'",
"'sports_shop'",
"'pharmacy'",
"'cinema'",
"'doityourself'",
"'doityourself'",
"'fast_food'",
"'doityourself'",
"'doityourself'",
"'park'",
"'park'",
"'kindergarten'",
"'bar'",
"'school'",
"'car_rental'",
"'comms_tower'",
"'car_dealership'",
"'police'",
"'doityourself'",
"'car_dealership'",
"'doityourself'",
"'playground'"],
["'school'",
"'school'",
"'pub'",
"'supermarket'",
"'beverages'",
"'fast_food'",
"'car_dealership'",
"'hairdresser'",
"'fast_food'",
"'kindergarten'"],
["'beauty_shop'",
"'hairdresser'",
"'clothes'",
"'restaurant'",
"'clothes'",
"'beauty_shop'",
"'pub'",
"'restaurant'",
"'clothes'",
"'clothes'",
"'jeweller'",
"'laundry'",
"'furniture_shop'",
"'pub'",
"'hairdresser'",
"'restaurant'",
"'bookshop'",
"'pub'",
"'restaurant'",
"'restaurant'",
"'florist'",
"'mobile_phone_shop'",
"'library'",
"'graveyard'",
"'pub'",
"'cafe'",
"'beverages'",
"'bookshop'",
"'clothes'",
"'bakery'",
"'fast_food'",
"'jeweller'",
"'pharmacy'",
"'clothes'",
"'fast_food'",
"'pub'",
"'dentist'",
"'hotel'",
"'cafe'",
"'park'",
"'pitch'",
"'graveyard'",
"'hairdresser'",
"'cafe'",
"'pharmacy'",
"'cafe'",
"'hospital'",
"'doityourself'",
"'fast_food'",
"'hairdresser'",
"'beauty_shop'",
"'pub'",
"'restaurant'",
"'restaurant'",
"'convenience'",
"'clinic'",
"'jeweller'",
"'hairdresser'",
"'restaurant'",
"'cafe'",
"'hairdresser'",
"'restaurant'",
"'car_dealership'",
"'supermarket'",
"'restaurant'",
"'pub'",
"'shoe_shop'",
"'laundry'",
"'optician'",
"'jeweller'",
"'bookshop'",
"'jeweller'",
"'gift_shop'",
"'computer_shop'",
"'travel_agent'",
"'florist'",
"'cafe'",
"'restaurant'",
"'butcher'",
"'restaurant'",
"'cafe'",
"'beauty_shop'",
"'clothes'",
"'jeweller'",
"'restaurant'",
"'clothes'",
"'jeweller'",
"'cafe'",
"'bar'",
"'clothes'",
"'gift_shop'",
"'clothes'",
"'restaurant'",
"'clothes'",
"'clothes'",
"'hotel'",
"'clothes'",
"'furniture_shop'",
"'hairdresser'",
"'pub'",
"'dentist'",
"'jeweller'",
"'restaurant'",
"'cafe'"],
["'library'",
"'park'",
"'playground'",
"'kindergarten'",
"'community_centre'",
"'track'",
"'beauty_shop'",
"'pitch'",
"'school'"],
["'graveyard'",
"'pitch'",
"'school'",
"'convenience'",
"'school'",
"'pitch'",
"'park'",
"'toilet'"],
["'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'playground'",
"'school'",
"'park'",
"'hospital'",
"'school'",
"'furniture_shop'",
"'school'",
"'pub'",
"'nursing_home'",
"'nursing_home'",
"'nursing_home'",
"'nursing_home'",
"'school'",
"'park'"],
["'park'",
"'playground'",
"'clothes'",
"'pub'",
"'car_wash'",
"'computer_shop'",
"'fast_food'",
"'convenience'",
"'clinic'",
"'car_dealership'",
"'cafe'",
"'convenience'",
"'hairdresser'",
"'florist'",
"'school'",
"'sports_shop'",
"'fast_food'",
"'fast_food'",
"'pub'",
"'pub'",
"'beauty_shop'",
"'car_dealership'"],
["'park'", "'school'"],
["'hairdresser'", "'park'", "'pitch'", "'school'", "'convenience'"],
["'sports_centre'",
"'pitch'",
"'pitch'",
"'doctors'",
"'park'",
"'cafe'",
"'convenience'",
"'playground'",
"'graveyard'",
"'park'"],
["'hairdresser'",
"'guesthouse'",
"'hairdresser'",
"'cafe'",
"'optician'",
"'hairdresser'",
"'pharmacy'",
"'optician'",
"'cafe'",
"'supermarket'",
"'dentist'",
"'stationery'",
"'cafe'",
"'greengrocer'",
"'hairdresser'",
"'laundry'",
"'bakery'",
"'beauty_shop'",
"'butcher'",
"'gift_shop'",
"'restaurant'",
"'school'",
"'community_centre'",
"'pitch'",
"'beverages'",
"'school'",
"'bar'",
"'pitch'",
"'pitch'",
"'school'",
"'pitch'",
"'convenience'",
"'garden_centre'",
"'fast_food'",
"'post_office'",
"'hairdresser'",
"'fast_food'",
"'hairdresser'",
"'doityourself'",
"'hairdresser'",
"'hairdresser'",
"'bicycle_shop'",
"'beauty_shop'",
"'pub'",
"'restaurant'",
"'hairdresser'",
"'playground'",
"'park'"],
["'archaeological'", "'swimming_pool'", "'park'", "'swimming_pool'"],
["'pub'",
"'park'",
"'park'",
"'pitch'",
"'track'",
"'playground'",
"'pitch'"],
["'community_centre'",
"'hairdresser'",
"'convenience'",
"'fast_food'",
"'restaurant'",
"'pub'",
"'beauty_shop'",
"'florist'",
"'convenience'",
"'beauty_shop'",
"'fast_food'",
"'dentist'",
"'cafe'",
"'hairdresser'",
"'supermarket'",
"'pitch'",
"'pitch'",
"'park'",
"'graveyard'",
"'pitch'",
"'school'",
"'playground'",
"'kindergarten'",
"'beauty_shop'",
"'pub'",
"'bicycle_shop'",
"'laundry'",
"'cafe'",
"'mobile_phone_shop'",
"'hairdresser'",
"'cafe'",
"'computer_shop'",
"'hairdresser'",
"'hairdresser'",
"'pub'",
"'car_dealership'",
"'park'",
"'furniture_shop'"],
["'park'",
"'pub'",
"'pub'",
"'hairdresser'",
"'hotel'",
"'restaurant'",
"'restaurant'",
"'pub'",
"'dentist'"],
["'department_store'",
"'pub'",
"'theatre'",
"'car_rental'",
"'doityourself'",
"'arts_centre'",
"'bar'",
"'supermarket'",
"'furniture_shop'",
"'furniture_shop'",
"'cafe'",
"'school'",
"'park'",
"'kindergarten'",
"'pub'",
"'park'",
"'restaurant'",
"'mall'",
"'hotel'",
"'bar'",
"'playground'",
"'hotel'",
"'pub'",
"'newsagent'",
"'pub'",
"'community_centre'",
"'cafe'",
"'furniture_shop'",
"'convenience'",
"'clothes'",
"'hairdresser'",
"'cafe'",
"'restaurant'",
"'computer_shop'",
"'restaurant'",
"'police'",
"'community_centre'",
"'park'",
"'bar'",
"'pitch'",
"'fast_food'",
"'florist'",
"'hairdresser'",
"'bakery'",
"'fast_food'",
"'hairdresser'",
"'school'"],
["'furniture_shop'",
"'fast_food'",
"'supermarket'",
"'beverages'",
"'pub'",
"'bookshop'",
"'restaurant'",
"'beauty_shop'",
"'convenience'",
"'bicycle_shop'",
"'pitch'",
"'school'"],
["'bank'",
"'clothes'",
"'cafe'",
"'clothes'",
"'clothes'",
"'clothes'",
"'bank'",
"'restaurant'",
"'optician'",
"'bank'",
"'mobile_phone_shop'",
"'cafe'",
"'pharmacy'",
"'clothes'",
"'restaurant'",
"'travel_agent'",
"'shoe_shop'",
"'restaurant'",
"'cafe'",
"'bank'",
"'video_shop'",
"'clothes'",
"'toy_shop'",
"'fast_food'",
"'beauty_shop'",
"'cafe'",
"'mall'",
"'fast_food'",
"'clothes'",
"'cafe'",
"'fast_food'",
"'supermarket'",
"'mall'",
"'fast_food'",
"'nightclub'",
"'mall'",
"'jeweller'",
"'cinema'",
"'hairdresser'",
"'beauty_shop'",
"'jeweller'",
"'gift_shop'",
"'mall'",
"'cafe'",
"'hairdresser'",
"'jeweller'",
"'bakery'",
"'fast_food'",
"'cafe'",
"'shoe_shop'",
"'school'",
"'outdoor_shop'",
"'gift_shop'",
"'shoe_shop'",
"'shoe_shop'",
"'travel_agent'",
"'hostel'",
"'sports_centre'",
"'bicycle_shop'",
"'mobile_phone_shop'",
"'mall'",
"'beauty_shop'",
"'gift_shop'",
"'outdoor_shop'",
"'pharmacy'",
"'doctors'",
"'fast_food'",
"'mobile_phone_shop'",
"'clothes'",
"'convenience'",
"'community_centre'",
"'mobile_phone_shop'",
"'bank'",
"'fast_food'",
"'mobile_phone_shop'",
"'cafe'",
"'cafe'",
"'bakery'",
"'mobile_phone_shop'",
"'clothes'",
"'mobile_phone_shop'",
"'restaurant'",
"'bar'",
"'restaurant'",
"'hairdresser'",
"'restaurant'",
"'bar'",
"'pub'",
"'pub'",
"'cafe'",
"'pub'",
"'restaurant'",
"'clothes'",
"'cafe'",
"'travel_agent'",
"'cafe'",
"'pub'",
"'hairdresser'",
"'shoe_shop'",
"'hairdresser'",
"'cafe'",
"'cinema'",
"'video_shop'",
"'clothes'",
"'beverages'",
"'hairdresser'",
"'pub'",
"'fast_food'",
"'bar'",
"'pub'",
"'bicycle_shop'",
"'hairdresser'",
"'fast_food'",
"'pub'",
"'clothes'",
"'bar'",
"'restaurant'",
"'pub'",
"'pub'",
"'bar'",
"'gift_shop'",
"'gift_shop'",
"'mobile_phone_shop'",
"'bar'",
"'guesthouse'",
"'cafe'",
"'cafe'",
"'bookshop'",
"'bar'",
"'gift_shop'",
"'bookshop'",
"'jeweller'",
"'mall'",
"'restaurant'",
"'bookshop'",
"'pub'",
"'bar'",
"'cafe'",
"'food_court'",
"'market_place'",
"'travel_agent'",
"'mall'",
"'fast_food'",
"'hotel'",
"'clothes'",
"'cafe'",
"'ruins'",
"'travel_agent'",
"'bar'",
"'clothes'",
"'hotel'",
"'bakery'",
"'cafe'",
"'hairdresser'",
"'clothes'",
"'cafe'",
"'ruins'",
"'pitch'",
"'convenience'",
"'hotel'",
"'cafe'",
"'bank'",
"'hairdresser'",
"'toy_shop'",
"'pub'",
"'cafe'",
"'beauty_shop'",
"'mobile_phone_shop'",
"'hairdresser'",
"'bicycle_shop'",
"'clinic'",
"'restaurant'",
"'clothes'",
"'bookshop'",
"'mall'",
"'observation_tower'",
"'observation_tower'",
"'hairdresser'",
"'fast_food'",
"'pub'",
"'park'",
"'fast_food'",
"'fast_food'",
"'hotel'",
"'bank'",
"'clothes'",
"'cafe'",
"'clothes'",
"'clothes'",
"'clothes'",
"'clothes'",
"'clothes'",
"'clothes'",
"'shoe_shop'",
"'cafe'",
"'hairdresser'",
"'convenience'",
"'nightclub'",
"'restaurant'",
"'fast_food'",
"'optician'",
"'restaurant'",
"'fast_food'",
"'cafe'",
"'restaurant'",
"'restaurant'",
"'bar'",
"'bar'",
"'hairdresser'",
"'cafe'",
"'cafe'",
"'restaurant'",
"'dentist'",
"'beauty_shop'",
"'restaurant'",
"'clinic'",
"'restaurant'",
"'restaurant'",
"'restaurant'",
"'bar'",
"'restaurant'",
"'restaurant'",
"'bookshop'",
"'bar'",
"'bar'",
"'cafe'",
"'hostel'",
"'bar'",
"'cafe'",
"'pub'",
"'bar'",
"'arts_centre'",
"'bar'",
"'cafe'",
"'courthouse'",
"'monument'",
"'cafe'",
"'bar'",
"'pub'",
"'restaurant'",
"'restaurant'",
"'restaurant'",
"'bar'",
"'hotel'",
"'fast_food'",
"'hotel'",
"'convenience'",
"'restaurant'",
"'restaurant'",
"'fast_food'",
"'restaurant'",
"'newsagent'",
"'restaurant'",
"'nightclub'",
"'restaurant'",
"'restaurant'",
"'cafe'",
"'florist'",
"'hairdresser'",
"'restaurant'",
"'fast_food'",
"'beauty_shop'",
"'hotel'",
"'pub'",
"'clinic'",
"'pub'",
"'park'",
"'nightclub'",
"'attraction'",
"'restaurant'",
"'restaurant'",
"'pub'",
"'cafe'",
"'dentist'",
"'restaurant'",
"'cafe'",
"'doctors'",
"'sports_centre'",
"'restaurant'",
"'hotel'",
"'kindergarten'",
"'pub'",
"'pub'",
"'bar'",
"'pub'",
"'pub'",
"'restaurant'",
"'theatre'",
"'doctors'",
"'convenience'",
"'restaurant'",
"'memorial'",
"'fast_food'",
"'hotel'",
"'convenience'",
"'fast_food'",
"'restaurant'",
"'hairdresser'",
"'restaurant'",
"'travel_agent'",
"'hairdresser'",
"'bakery'",
"'pub'",
"'fast_food'",
"'restaurant'",
"'hairdresser'",
"'fast_food'",
"'hairdresser'",
"'fast_food'",
"'fast_food'",
"'jeweller'",
"'clothes'",
"'cafe'",
"'restaurant'",
"'restaurant'",
"'fast_food'",
"'restaurant'",
"'bicycle_shop'",
"'clothes'",
"'bakery'",
"'beverages'",
"'fast_food'",
"'butcher'",
"'fast_food'",
"'museum'",
"'attraction'",
"'attraction'",
"'attraction'",
"'cafe'",
"'bicycle_shop'",
"'arts_centre'",
"'bank'",
"'pub'",
"'restaurant'",
"'restaurant'",
"'nightclub'",
"'hostel'",
"'cafe'",
"'convenience'",
"'cafe'",
"'pub'",
"'hotel'",
"'restaurant'",
"'bar'",
"'park'",
"'college'",
"'pub'",
"'dentist'",
"'college'",
"'pub'",
"'pub'",
"'pub'",
"'pub'",
"'restaurant'",
"'pub'",
"'ruins'",
"'park'",
"'attraction'",
"'gift_shop'",
"'pub'",
"'bookshop'",
"'beauty_shop'",
"'restaurant'",
"'restaurant'",
"'restaurant'",
"'restaurant'",
"'restaurant'",
"'playground'",
"'pitch'",
"'pub'"],
["'doityourself'",
"'pub'",
"'doityourself'",
"'supermarket'",
"'beauty_shop'",
"'restaurant'",
"'beauty_shop'",
"'computer_shop'",
"'cafe'",
"'restaurant'",
"'optician'",
"'car_dealership'",
"'convenience'",
"'doityourself'"],
["'park'",
"'pub'",
"'cafe'",
"'museum'",
"'cafe'",
"'cafe'",
"'museum'",
"'tourist_info'",
"'attraction'",
"'sports_centre'",
"'attraction'",
"'sports_centre'",
"'museum'",
"'convenience'",
"'museum'",
"'pub'",
"'caravan_site'",
"'arts_centre'",
"'arts_centre'",
"'pub'",
"'restaurant'",
"'toilet'",
"'attraction'",
"'bicycle_shop'",
"'attraction'",
"'restaurant'",
"'park'",
"'bicycle_shop'",
"'sports_centre'"],
["'pub'", "'school'"],
["'park'",
"'fast_food'",
"'hairdresser'",
"'cafe'",
"'post_office'",
"'convenience'",
"'convenience'",
"'park'",
"'park'",
"'park'"],
["'hairdresser'",
"'convenience'",
"'hotel'",
"'beauty_shop'",
"'pub'",
"'kindergarten'"],
["'shelter'",
"'park'",
"'cafe'",
"'cafe'",
"'fast_food'",
"'community_centre'",
"'playground'",
"'park'",
"'fire_station'",
"'clinic'",
"'fast_food'",
"'fast_food'",
"'track'",
"'fire_station'",
"'tower'",
"'school'",
"'park'",
"'laundry'",
"'hotel'",
"'hairdresser'",
"'pub'",
"'pub'",
"'doctors'",
"'supermarket'",
"'sports_shop'",
"'hairdresser'",
"'fast_food'",
"'pharmacy'",
"'bakery'",
"'fast_food'",
"'guesthouse'",
"'fast_food'",
"'library'",
"'hotel'",
"'playground'"],
["'park'",
"'convenience'",
"'pitch'",
"'guesthouse'",
"'pitch'",
"'hairdresser'",
"'restaurant'",
"'playground'",
"'graveyard'",
"'pitch'",
"'graveyard'",
"'park'"],
["'car_dealership'",
"'pharmacy'",
"'clothes'",
"'clothes'",
"'supermarket'",
"'fast_food'",
"'doityourself'",
"'furniture_shop'",
"'supermarket'",
"'sports_shop'",
"'park'",
"'park'",
"'school'",
"'pub'",
"'car_dealership'"],
["'bank'",
"'university'",
"'theatre'",
"'hotel'",
"'veterinary'",
"'clinic'",
"'pub'",
"'kindergarten'",
"'swimming_pool'",
"'attraction'",
"'kindergarten'",
"'water_works'",
"'cafe'",
"'mobile_phone_shop'",
"'pharmacy'",
"'supermarket'",
"'mall'",
"'clinic'",
"'fast_food'",
"'laundry'",
"'optician'",
"'gift_shop'",
"'florist'",
"'fast_food'",
"'newsagent'",
"'mobile_phone_shop'",
"'cafe'",
"'cafe'",
"'clinic'",
"'clinic'",
"'doityourself'",
"'clinic'",
"'dentist'",
"'clinic'",
"'supermarket'",
"'cinema'",
"'butcher'",
"'restaurant'",
"'garden_centre'"],
["'school'", "'playground'"],
["'park'", "'picnic_site'", "'pitch'", "'pitch'", "'playground'"],
["'pub'",
"'hospital'",
"'hospital'",
"'hospital'",
"'hospital'",
"'hospital'",
"'pub'",
"'clinic'",
"'university'",
"'beauty_shop'",
"'cafe'",
"'cafe'",
"'school'",
"'bar'",
"'fast_food'",
"'park'",
"'university'",
"'arts_centre'",
"'college'",
"'tower'",
"'school'",
"'wastewater_plant'",
"'bank'",
"'hotel'",
"'park'",
"'park'",
"'hostel'",
"'pub'",
"'fast_food'",
"'bar'",
"'cafe'",
"'fast_food'",
"'fast_food'",
"'cafe'",
"'gift_shop'",
"'hairdresser'",
"'tower'",
"'fast_food'",
"'clothes'",
"'stationery'",
"'cafe'",
"'bar'",
"'post_office'",
"'cafe'",
"'clothes'",
"'restaurant'",
"'restaurant'",
"'restaurant'",
"'museum'",
"'nightclub'",
"'bank'",
"'restaurant'",
"'hairdresser'",
"'bar'",
"'stationery'",
"'clothes'",
"'bar'",
"'cafe'",
"'optician'",
"'hairdresser'",
"'museum'",
"'bank'",
"'supermarket'",
"'mobile_phone_shop'",
"'outdoor_shop'",
"'clothes'",
"'nightclub'",
"'pharmacy'",
"'hostel'",
"'fast_food'",
"'fast_food'",
"'university'",
"'nightclub'",
"'restaurant'",
"'sports_centre'",
"'bank'",
"'cafe'",
"'bicycle_shop'",
"'university'",
"'food_court'",
"'fast_food'",
"'car_rental'",
"'police'",
"'pub'",
"'hairdresser'",
"'restaurant'",
"'beauty_shop'",
"'restaurant'",
"'nightclub'",
"'cafe'",
"'hairdresser'",
"'cafe'",
"'pub'",
"'theatre'",
"'clinic'",
"'hairdresser'",
"'hotel'",
"'hairdresser'",
"'hairdresser'",
"'pub'",
"'clinic'",
"'cafe'",
"'hairdresser'",
"'hairdresser'",
"'stationery'",
"'bookshop'",
"'park'",
"'hairdresser'",
"'convenience'",
"'florist'",
"'doityourself'",
"'school'",
"'arts_centre'",
"'florist'",
"'hotel'",
"'fast_food'",
"'cafe'",
"'bicycle_shop'",
"'restaurant'",
"'pub'",
"'cafe'",
"'clothes'",
"'bicycle_shop'",
"'jeweller'",
"'restaurant'",
"'hostel'",
"'sports_shop'",
"'cafe'",
"'guesthouse'",
"'pub'",
"'pub'",
"'pub'",
"'outdoor_shop'",
"'clothes'",
"'bar'",
"'restaurant'",
"'restaurant'",
"'cafe'",
"'bar'",
"'nightclub'",
"'gift_shop'",
"'cafe'",
"'bar'",
"'supermarket'",
"'clothes'",
"'clothes'",
"'restaurant'",
"'restaurant'",
"'bookshop'",
"'stationery'",
"'restaurant'",
"'restaurant'",
"'bar'",
"'fast_food'",
"'bar'",
"'optician'",
"'department_store'",
"'clothes'",
"'car_wash'",
"'restaurant'",
"'bar'",
"'convenience'",
"'cafe'",
"'hairdresser'",
"'theatre'",
"'museum'",
"'bar'",
"'restaurant'",
"'hairdresser'",
"'cafe'",
"'pub'",
"'restaurant'",
"'fast_food'",
"'bar'",
"'clothes'",
"'bakery'",
"'clothes'",
"'fast_food'",
"'cafe'",
"'clothes'",
"'bar'",
"'bar'",
"'dentist'",
"'clothes'",
"'cafe'",
"'restaurant'",
"'optician'",
"'newsagent'",
"'mobile_phone_shop'",
"'bookshop'",
"'cafe'",
"'cafe'",
"'bar'",
"'pub'",
"'restaurant'",
"'clothes'",
"'beauty_shop'",
"'cafe'",
"'cafe'",
"'beauty_shop'",
"'beverages'",
"'clothes'",
"'arts_centre'",
"'nightclub'",
"'arts_centre'",
"'hairdresser'",
"'hairdresser'",
"'travel_agent'",
"'cafe'",
"'fast_food'",
"'nightclub'"],
["'school'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'hairdresser'",
"'supermarket'",
"'doityourself'",
"'car_dealership'"],
["'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'graveyard'",
"'school'",
"'golf_course'",
"'park'"],
["'guesthouse'",
"'pub'",
"'convenience'",
"'garden_centre'",
"'park'",
"'pitch'",
"'park'",
"'water_works'",
"'pitch'",
"'doityourself'",
"'newsagent'",
"'cafe'",
"'greengrocer'",
"'cafe'",
"'fast_food'",
"'restaurant'",
"'community_centre'",
"'car_dealership'",
"'bakery'",
"'pub'",
"'fast_food'",
"'beauty_shop'",
"'pub'",
"'stationery'",
"'cafe'",
"'bakery'",
"'computer_shop'",
"'sports_centre'",
"'pitch'",
"'restaurant'",
"'pitch'",
"'school'",
"'pitch'",
"'school'",
"'pitch'",
"'pitch'",
"'pitch'",
"'stadium'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'school'",
"'pitch'",
"'pub'",
"'park'",
"'pitch'",
"'track'",
"'college'",
"'pitch'",
"'park'",
"'university'",
"'playground'",
"'university'",
"'pitch'",
"'park'",
"'theme_park'",
"'playground'",
"'kindergarten'"],
["'school'",
"'nursing_home'",
"'park'",
"'park'",
"'clinic'",
"'dentist'",
"'convenience'",
"'laundry'"],
["'school'",
"'track'",
"'playground'",
"'golf_course'",
"'school'",
"'park'"],
["'convenience'",
"'car_dealership'",
"'car_dealership'",
"'car_dealership'",
"'car_dealership'",
"'school'",
"'park'",
"'hairdresser'",
"'fast_food'",
"'car_dealership'",
"'school'",
"'pharmacy'"],
["'outdoor_shop'",
"'hospital'",
"'optician'",
"'convenience'",
"'park'",
"'guesthouse'",
"'pub'",
"'guesthouse'",
"'guesthouse'"],
["'school'", "'school'", "'school'"],
["'swimming_pool'",
"'park'",
"'swimming_pool'",
"'swimming_pool'",
"'supermarket'",
"'hairdresser'",
"'hairdresser'",
"'supermarket'",
"'restaurant'",
"'sports_centre'",
"'fast_food'",
"'fast_food'",
"'fast_food'",
"'beauty_shop'",
"'veterinary'",
"'dentist'",
"'pub'",
"'swimming_pool'",
"'school'",
"'pitch'",
"'pitch'",
"'park'",
"'pitch'"],
["'school'",
"'laundry'",
"'bar'",
"'hairdresser'",
"'pub'",
"'car_dealership'",
"'hairdresser'",
"'car_wash'",
"'car_dealership'",
"'car_dealership'",
"'car_dealership'",
"'car_dealership'",
"'pub'",
"'cafe'",
"'hairdresser'",
"'hairdresser'",
"'fast_food'",
"'playground'"],
["'pub'",
"'school'",
"'sports_centre'",
"'community_centre'",
"'school'",
"'pub'",
"'hotel'",
"'supermarket'",
"'veterinary'",
"'playground'",
"'pitch'",
"'school'",
"'pitch'",
"'school'",
"'park'",
"'castle'",
"'graveyard'",
"'cafe'",
"'toilet'",
"'playground'",
"'pitch'",
"'playground'",
"'museum'",
"'park'"],
["'hairdresser'",
"'travel_agent'",
"'convenience'",
"'fast_food'",
"'car_dealership'",
"'clinic'",
"'pitch'",
"'cafe'",
"'monument'",
"'playground'",
"'park'",
"'graveyard'",
"'pitch'",
"'school'",
"'convenience'",
"'cafe'",
"'butcher'",
"'fast_food'",
"'butcher'",
"'butcher'",
"'supermarket'",
"'beverages'",
"'pitch'",
"'restaurant'",
"'clothes'"],
["'school'", "'park'", "'fast_food'", "'park'"],
["'furniture_shop'",
"'cafe'",
"'hairdresser'",
"'hairdresser'",
"'cafe'",
"'sports_shop'",
"'restaurant'",
"'beauty_shop'",
"'beverages'",
"'veterinary'",
"'restaurant'",
"'pub'",
"'fast_food'",
"'fast_food'",
"'restaurant'",
"'convenience'",
"'clothes'",
"'convenience'",
"'hairdresser'",
"'hairdresser'",
"'dentist'",
"'supermarket'",
"'hairdresser'",
"'restaurant'",
"'cafe'",
"'cafe'",
"'hairdresser'",
"'restaurant'",
"'restaurant'",
"'clinic'",
"'butcher'",
"'jeweller'",
"'hairdresser'",
"'fast_food'",
"'clinic'",
"'restaurant'",
"'cafe'",
"'clothes'",
"'restaurant'",
"'fast_food'",
"'fast_food'",
"'cafe'",
"'beauty_shop'",
"'hairdresser'",
"'pub'",
"'computer_shop'",
"'supermarket'",
"'convenience'",
"'hairdresser'",
"'beauty_shop'",
"'cafe'",
"'hairdresser'",
"'fast_food'",
"'cafe'",
"'sports_centre'",
"'cafe'",
"'supermarket'",
"'doityourself'",
"'restaurant'",
"'restaurant'",
"'mobile_phone_shop'",
"'cafe'",
"'hairdresser'",
"'hairdresser'",
"'cafe'",
"'fast_food'",
"'furniture_shop'",
"'shelter'",
"'school'",
"'prison'",
"'pitch'",
"'pitch'",
"'sports_centre'",
"'pitch'",
"'park'"],
["'park'",
"'supermarket'",
"'pitch'",
"'pitch'",
"'pitch'",
"'sports_centre'",
"'pitch'",
"'pitch'"],
["'hospital'",
"'sports_centre'",
"'pitch'",
"'cinema'",
"'playground'",
"'pitch'",
"'park'",
"'pitch'",
"'restaurant'",
"'fast_food'",
"'restaurant'",
"'fast_food'",
"'pub'",
"'hotel'",
"'sports_centre'",
"'park'",
"'track'",
"'school'"],
["'doctors'", "'cafe'", "'playground'"],
["'park'",
"'restaurant'",
"'hairdresser'",
"'beauty_shop'",
"'fast_food'",
"'pub'",
"'hairdresser'",
"'hairdresser'",
"'hairdresser'",
"'school'"],
["'community_centre'",
"'hairdresser'",
"'hairdresser'",
"'school'",
"'dentist'",
"'fast_food'",
"'car_wash'",
"'restaurant'",
"'dentist'",
"'post_office'",
"'doctors'",
"'pitch'",
"'pitch'",
"'pitch'",
"'sports_centre'",
"'fast_food'",
"'newsagent'",
"'convenience'"],
["'comms_tower'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'convenience'",
"'school'",
"'fast_food'",
"'playground'",
"'community_centre'",
"'park'",
"'attraction'"],
["'playground'",
"'pitch'",
"'fast_food'",
"'hospital'",
"'supermarket'",
"'fast_food'",
"'doityourself'",
"'fast_food'",
"'newsagent'",
"'supermarket'",
"'doityourself'",
"'dentist'",
"'fast_food'",
"'fast_food'",
"'fast_food'",
"'golf_course'",
"'school'"],
["'park'",
"'kindergarten'",
"'cafe'",
"'restaurant'",
"'bakery'",
"'hairdresser'",
"'hairdresser'",
"'community_centre'",
"'clinic'",
"'fast_food'",
"'fast_food'",
"'sports_centre'",
"'clinic'",
"'hairdresser'",
"'convenience'",
"'pharmacy'",
"'cafe'",
"'pub'",
"'fast_food'",
"'travel_agent'",
"'convenience'",
"'nursing_home'"],
["'community_centre'",
"'school'",
"'school'",
"'pub'",
"'fast_food'",
"'doityourself'",
"'doityourself'",
"'hairdresser'",
"'playground'",
"'school'",
"'prison'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'sports_centre'",
"'pitch'",
"'cafe'",
"'park'"],
["'playground'",
"'pitch'",
"'school'",
"'school'",
"'school'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'"],
["'park'",
"'park'",
"'park'",
"'playground'",
"'convenience'",
"'fast_food'",
"'school'",
"'park'",
"'school'"],
["'dentist'",
"'college'",
"'kindergarten'",
"'car_dealership'",
"'community_centre'",
"'clinic'",
"'pub'",
"'hairdresser'",
"'furniture_shop'",
"'hairdresser'",
"'furniture_shop'",
"'clinic'",
"'clothes'",
"'restaurant'",
"'clinic'",
"'beauty_shop'",
"'optician'",
"'dentist'",
"'beauty_shop'",
"'cafe'",
"'convenience'",
"'cafe'",
"'supermarket'",
"'mall'",
"'pitch'",
"'pub'",
"'pub'",
"'sports_centre'"],
["'hairdresser'", "'cafe'", "'fast_food'", "'fast_food'", "'clinic'"],
["'dentist'",
"'clothes'",
"'fast_food'",
"'pub'",
"'car_dealership'",
"'fast_food'",
"'fast_food'",
"'fast_food'",
"'fast_food'",
"'cafe'",
"'fast_food'",
"'hairdresser'",
"'convenience'",
"'fast_food'",
"'convenience'",
"'convenience'",
"'sports_shop'",
"'park'",
"'car_wash'"],
["'gift_shop'",
"'toy_shop'",
"'convenience'",
"'beauty_shop'",
"'greengrocer'",
"'doctors'",
"'clinic'",
"'pub'",
"'clinic'",
"'doityourself'",
"'computer_shop'",
"'beauty_shop'",
"'hairdresser'",
"'pub'",
"'hairdresser'",
"'cafe'",
"'supermarket'",
"'computer_shop'",
"'cafe'",
"'bar'",
"'bank'",
"'cafe'",
"'fast_food'",
"'hairdresser'",
"'optician'",
"'bank'",
"'bakery'",
"'supermarket'",
"'sports_centre'",
"'bank'",
"'doityourself'",
"'bank'",
"'hairdresser'",
"'optician'",
"'bank'",
"'dentist'",
"'pharmacy'",
"'hairdresser'",
"'doctors'",
"'jeweller'",
"'shoe_shop'",
"'beauty_shop'",
"'newsagent'",
"'pub'",
"'pub'",
"'fast_food'",
"'restaurant'",
"'laundry'",
"'convenience'",
"'clinic'",
"'restaurant'",
"'cafe'",
"'hairdresser'",
"'fast_food'",
"'beauty_shop'",
"'hairdresser'",
"'florist'",
"'restaurant'",
"'supermarket'"],
["'car_dealership'",
"'pitch'",
"'pitch'",
"'pitch'",
"'pitch'",
"'school'",
"'pitch'",
"'pitch'",
"'shelter'",
"'museum'",
"'kindergarten'",
"'school'",
"'clinic'",
"'doctors'"],
["'park'", "'park'", "'swimming_pool'", "'college'"],
["'park'",
"'clinic'",
"'hairdresser'",
"'fast_food'",
"'fast_food'",
"'fast_food'",
"'convenience'",
"'hairdresser'",
"'park'",
"'golf_course'"],
["'park'",
"'convenience'",
"'fast_food'",
"'convenience'",
"'community_centre'",
"'park'",
"'park'",
"'convenience'",
"'park'",
"'fast_food'"],
["'community_centre'", "'school'", "'doctors'", "'pub'", "'school'"],
["'park'", "'newsagent'", "'fast_food'", "'convenience'", "'park'"],
["'hairdresser'",
"'water_works'",
"'convenience'",
"'beauty_shop'",
"'bar'",
"'kindergarten'",
"'pub'",
"'park'",
"'car_dealership'",
"'supermarket'",
"'restaurant'",
"'fast_food'",
"'fast_food'",
"'newsagent'",
"'park'",
"'park'",
"'park'",
"'park'"],
["'pitch'",
"'park'",
"'school'",
"'arts_centre'",
"'guesthouse'",
"'pub'",
"'pub'",
"'car_dealership'",
"'pharmacy'",
"'laundry'",
"'convenience'",
"'hairdresser'",
"'beverages'",
"'fast_food'",
"'cafe'",
"'arts_centre'",
"'clothes'",
"'hairdresser'",
"'hairdresser'",
"'newsagent'",
"'cafe'",
"'fast_food'",
"'cafe'",
"'restaurant'",
"'toy_shop'",
"'cafe'",
"'cafe'",
"'playground'",
"'school'",
"'community_centre'"],
["'playground'",
"'car_dealership'",
"'playground'",
"'convenience'",
"'clothes'",
"'recycling_glass'",
"'park'",
"'stationery'",
"'playground'",
"'park'",
"'doctors'",
"'pharmacy'",
"'park'",
"'pub'",
"'playground'",
"'school'"],
["'butcher'",
"'hairdresser'",
"'fast_food'",
"'fast_food'",
"'convenience'",
"'pharmacy'",
"'park'",
"'playground'",
"'pitch'",
"'school'",
"'hairdresser'",
"'convenience'"],
["'beauty_shop'",
"'restaurant'",
"'newsagent'",
"'car_wash'",
"'cafe'",
"'hairdresser'",
"'fast_food'"],
["'cinema'",
"'restaurant'",
"'kindergarten'",
"'guesthouse'",
"'hotel'",
"'park'",
"'school'",
"'park'",
"'kindergarten'",
"'restaurant'",
"'kindergarten'",
"'hairdresser'",
"'hairdresser'",
"'beauty_shop'",
"'shelter'",
"'clothes'",
"'dentist'",
"'sports_shop'",
"'cafe'",
"'dentist'",
"'restaurant'",
"'veterinary'",
"'pharmacy'",
"'butcher'",
"'travel_agent'",
"'dentist'",
"'bookshop'",
"'hairdresser'",
"'bookshop'",
"'supermarket'"],
["'library'",
"'university'",
"'clinic'",
"'restaurant'",
"'fast_food'",
"'pub'",
"'bakery'",
"'kindergarten'",
"'school'",
"'arts_centre'",
"'cafe'",
"'school'",
"'sports_centre'",
"'university'",
"'hotel'",
"'kindergarten'",
"'cafe'",
"'university'",
"'university'",
"'cafe'",
"'university'",
"'pharmacy'",
"'hairdresser'",
"'restaurant'",
"'hairdresser'",
"'hairdresser'",
"'stationery'",
"'pub'",
"'hairdresser'",
"'pub'",
"'supermarket'",
"'pub'",
"'cafe'",
"'bar'",
"'furniture_shop'",
"'clinic'",
"'sports_shop'",
"'clinic'",
"'doctors'",
"'pub'",
"'sports_centre'",
"'university'"],
["'park'",
"'school'",
"'doityourself'",
"'doityourself'",
"'beverages'",
"'hairdresser'",
"'fast_food'",
"'fast_food'",
"'hairdresser'",
"'pharmacy'",
"'school'",
"'pitch'"],
["'hospital'",
"'playground'",
"'mobile_phone_shop'",
"'clothes'",
"'clothes'",
"'clothes'",
"'outdoor_shop'",
"'clothes'",
"'beauty_shop'",
"'mobile_phone_shop'",
"'beauty_shop'",
"'clothes'",
"'hairdresser'",
"'fast_food'",
"'outdoor_shop'",
"'bookshop'",
"'clinic'",
"'fast_food'",
"'bookshop'",
"'clothes'",
"'newsagent'",
"'mobile_phone_shop'",
"'clothes'",
"'beauty_shop'",
"'clothes'",
"'hairdresser'",
"'fast_food'",
"'fast_food'",
"'fast_food'",
"'beauty_shop'",
"'bank'",
"'hairdresser'",
"'cafe'",
"'fast_food'",
"'fast_food'",
"'beauty_shop'",
"'furniture_shop'",
"'department_store'",
"'park'",
"'hairdresser'",
"'cafe'",
"'park'",
"'clothes'",
"'fast_food'",
"'bakery'",
"'theme_park'",
"'cafe'",
"'cafe'",
"'bakery'",
"'fast_food'",
"'cafe'",
"'mobile_phone_shop'",
"'hairdresser'",
"'bicycle_shop'",
"'beauty_shop'",
"'hairdresser'",
"'fast_food'",
"'hotel'",
"'cafe'",
"'restaurant'",
"'cafe'",
"'courthouse'",
"'clothes'",
"'convenience'",
"'fast_food'",
"'fast_food'",
"'hairdresser'",
"'furniture_shop'",
"'mobile_phone_shop'",
"'cinema'",
"'mall'",
"'park'",
"'clothes'",
"'clothes'",
"'department_store'",
"'clothes'",
"'clothes'",
"'clothes'",
"'clothes'",
"'restaurant'",
"'clothes'",
"'clothes'",
"'restaurant'",
"'clothes'",
"'clothes'",
"'bank'",
"'hairdresser'",
"'gift_shop'",
"'sports_shop'",
"'bank'",
"'optician'",
"'toy_shop'",
"'mobile_phone_shop'",
"'convenience'",
"'video_shop'",
"'clothes'",
"'fast_food'",
"'fast_food'",
"'mall'",
"'cafe'",
"'shoe_shop'",
"'clothes'",
"'outdoor_shop'",
"'shoe_shop'",
"'bank'",
"'gift_shop'",
"'fast_food'",
"'shoe_shop'",
"'fast_food'",
"'beauty_shop'",
"'cafe'",
"'shoe_shop'",
"'convenience'",
"'mobile_phone_shop'",
"'convenience'",
"'mobile_phone_shop'",
"'mobile_phone_shop'",
"'cafe'",
"'cafe'",
"'beauty_shop'",
"'mobile_phone_shop'",
"'clothes'",
"'jeweller'",
"'mobile_phone_shop'",
"'travel_agent'",
"'restaurant'"],
["'bar'",
"'restaurant'",
"'hairdresser'",
"'clinic'",
"'restaurant'",
"'fast_food'",
"'fast_food'",
"'travel_agent'",
"'fast_food'",
"'restaurant'",
"'fast_food'",
"'clothes'",
"'hairdresser'",
"'furniture_shop'",
"'cafe'",
"'school'",
"'university'",
"'park'",
"'hotel'",
"'theatre'",
"'nightclub'",
"'cafe'",
"'clinic'",
"'supermarket'",
"'bar'",
"'restaurant'",
"'hotel'",
"'cafe'",
"'hotel'",
"'hairdresser'",
"'school'",
"'college'",
"'bookshop'",
"'pub'",
"'bicycle_shop'",
"'school'",
"'hairdresser'",
"'pub'",
"'fast_food'",
"'pub'",
"'cafe'",
"'school'",
"'convenience'",
"'clothes'",
"'school'",
"'library'",
"'school'",
"'bank'",
"'pitch'",
"'playground'",
"'pub'",
"'cafe'",
"'park'",
"'cafe'",
"'park'",
"'toilet'",
"'jeweller'",
"'museum'",
"'clothes'",
"'fast_food'",
"'attraction'",
"'sports_centre'",
"'cafe'",
"'pub'",
"'restaurant'",
"'restaurant'",
"'attraction'",
"'museum'",
"'pub'"],
["'shelter'",
"'playground'",
"'school'",
"'graveyard'",
"'doctors'",
"'pitch'",
"'pitch'",
"'sports_centre'",
"'park'",
"'playground'",
"'pub'"],
["'clothes'",
"'convenience'",
"'pharmacy'",
"'cafe'",
"'restaurant'",
"'convenience'",
"'fast_food'",
"'fast_food'",
"'restaurant'",
"'bicycle_shop'",
"'cafe'",
"'restaurant'",
"'hairdresser'",
"'convenience'",
"'bar'",
"'travel_agent'",
"'fast_food'",
"'hairdresser'",
"'convenience'",
"'community_centre'",
"'arts_centre'",
"'park'",
"'restaurant'",
"'convenience'",
"'restaurant'",
"'fast_food'",
"'restaurant'",
"'convenience'"],
["'kindergarten'",
"'pharmacy'",
"'kindergarten'",
"'playground'",
"'clinic'",
"'dentist'"],
["'restaurant'",
"'convenience'",
"'kindergarten'",
"'pub'",
"'community_centre'",
"'playground'",
"'pitch'",
"'school'",
"'pitch'",
"'park'",
"'pitch'",
"'pub'",
"'car_dealership'",
"'playground'",
"'pitch'"],
["'park'",
"'fast_food'",
"'fast_food'",
"'hairdresser'",
"'fast_food'",
"'supermarket'",
"'hairdresser'",
"'newsagent'",
"'supermarket'",
"'convenience'",
"'cafe'",
"'beverages'",
"'optician'",
"'hairdresser'",
"'supermarket'",
"'hairdresser'",
"'fast_food'",
"'bakery'",
"'fast_food'",
"'fast_food'",
"'pitch'",
"'beauty_shop'",
"'park'",
"'kindergarten'",
"'dentist'",
"'library'",
"'pub'",
"'community_centre'",
"'doctors'",
"'car_rental'",
"'car_dealership'"],
["'clinic'",
"'pub'",
"'convenience'",
"'hairdresser'",
"'veterinary'",
"'school'",
"'pitch'",
"'playground'"],
["'school'",
"'pitch'",
"'playground'",
"'convenience'",
"'school'",
"'school'",
"'playground'",
"'park'",
"'ruins'"],
["'playground'", "'park'", "'school'"],
["'golf_course'",
"'park'",
"'pitch'",
"'kindergarten'",
"'park'",
"'beauty_shop'",
"'hairdresser'",
"'pitch'",
"'pitch'",
"'stadium'",
"'park'",
"'stadium'",
"'school'",
"'pitch'",
"'pharmacy'",
"'doctors'",
"'swimming_pool'",
"'pitch'"],
["'library'",
"'bakery'",
"'fast_food'",
"'post_office'",
"'pharmacy'",
"'supermarket'",
"'supermarket'"],
["'park'"],
["'kindergarten'",
"'clinic'",
"'swimming_pool'",
"'school'",
"'pitch'",
"'pitch'",
"'clinic'",
"'school'",
"'pitch'",
"'pitch'",
"'convenience'",
"'dentist'",
"'clothes'",
"'pub'",
"'cafe'",
"'greengrocer'",
"'clothes'",
"'shoe_shop'",
"'hairdresser'",
"'greengrocer'",
"'cafe'",
"'bookshop'",
"'restaurant'",
"'cafe'",
"'gift_shop'",
"'cafe'",
"'furniture_shop'",
"'beverages'",
"'jeweller'",
"'jeweller'",
"'cafe'",
"'jeweller'",
"'clothes'",
"'mall'",
"'florist'",
"'bar'",
"'gift_shop'",
"'restaurant'",
"'hairdresser'",
"'beauty_shop'"],
["'community_centre'",
"'restaurant'",
"'beauty_shop'",
"'restaurant'",
"'pub'",
"'school'",
"'park'",
"'nursing_home'",
"'pitch'",
"'nursing_home'",
"'nursing_home'",
"'water_works'",
"'car_wash'",
"'supermarket'",
"'golf_course'",
"'pitch'"],
["'kindergarten'",
"'school'",
"'park'",
"'park'",
"'pitch'",
"'park'",
"'park'",
"'restaurant'",
"'hairdresser'",
"'fast_food'",
"'bakery'",
"'fast_food'",
"'optician'",
"'bank'",
"'travel_agent'",
"'convenience'",
"'pub'",
"'fast_food'",
"'beauty_shop'",
"'stationery'",
"'pharmacy'",
"'fast_food'",
"'community_centre'",
"'cafe'",
"'cafe'",
"'pub'",
"'chemist'",
"'bank'",
"'fast_food'",
"'convenience'",
"'hairdresser'",
"'pub'",
"'butcher'",
"'playground'",
"'hairdresser'",
"'clinic'",
"'park'",
"'restaurant'",
"'restaurant'",
"'bar'",
"'restaurant'",
"'optician'",
"'park'",
"'dentist'",
"'hairdresser'",
"'fast_food'",
"'newsagent'",
"'fast_food'",
"'fast_food'",
"'laundry'",
"'veterinary'",
"'hairdresser'",
"'doctors'",
"'convenience'",
"'car_wash'",
"'doctors'"],
["'school'",
"'school'",
"'school'",
"'pitch'",
"'clinic'",
"'school'",
"'veterinary'",
"'convenience'",
"'florist'",
"'park'",
"'fast_food'",
"'convenience'",
"'hairdresser'",
"'fast_food'",
"'pharmacy'",
"'hairdresser'"],
["'stationery'",
"'newsagent'",
"'school'",
"'pub'",
"'school'",
"'playground'",
"'kindergarten'",
"'pub'",
"'park'",
"'playground'",
"'community_centre'",
"'park'",
"'park'",
"'supermarket'",
"'furniture_shop'",
"'community_centre'",
"'convenience'",
"'sports_centre'",
"'sports_centre'",
"'recycling_metal'"],
["'hairdresser'",
"'fast_food'",
"'bar'",
"'beauty_shop'",
"'beauty_shop'",
"'restaurant'",
"'bookshop'",
"'pub'",
"'beverages'",
"'sports_centre'",
"'optician'",
"'hairdresser'",
"'cafe'",
"'restaurant'",
"'clinic'",
"'laundry'",
"'clothes'",
"'supermarket'",
"'hairdresser'",
"'cafe'",
"'restaurant'",
"'cafe'",
"'supermarket'",
"'gift_shop'",
"'fast_food'",
"'clothes'",
"'convenience'",
"'restaurant'",
"'restaurant'",
"'restaurant'",
"'fast_food'",
"'bar'",
"'pub'",
"'restaurant'",
"'restaurant'",
"'hairdresser'",
"'bar'",
"'beauty_shop'",
"'hairdresser'",
"'restaurant'",
"'doityourself'",
"'restaurant'",
"'hairdresser'",
"'bar'",
"'beauty_shop'",
"'cafe'",
"'hairdresser'",
"'pharmacy'",
"'greengrocer'",
"'pub'",
"'beverages'",
"'hairdresser'",
"'bank'",
"'fast_food'",
"'clinic'",
"'beverages'",
"'cafe'",
"'bakery'",
"'restaurant'",
"'fast_food'",
"'fast_food'",
"'beauty_shop'",
"'cafe'",
"'doityourself'",
"'cafe'",
"'pub'",
"'fast_food'",
"'cafe'",
"'doctors'",
"'nursing_home'",
"'pub'",
"'bar'",
"'restaurant'",
"'school'",
"'restaurant'",
"'restaurant'",
"'clothes'",
"'hairdresser'"],
["'playground'",
"'community_centre'",
"'playground'",
"'park'",
"'pitch'",
"'cafe'",
"'convenience'",
"'pharmacy'",
"'fast_food'",
"'community_centre'",
"'hairdresser'",
"'fast_food'",
"'convenience'",
"'convenience'",
"'ruins'",
"'ruins'",
"'ruins'",
"'ruins'",
"'archaeological'",
"'ruins'",
"'ruins'",
"'park'",
"'attraction'",
"'community_centre'",
"'playground'",
"'archaeological'",
"'pitch'",
"'playground'"],
["'park'", "'pub'", "'convenience'"],
["'fast_food'",
"'convenience'",
"'pitch'",
"'pitch'",
"'community_centre'",
"'pitch'",
"'kindergarten'"]]
With such a corpus
, we then can train the neural network to learn the embedding for words in the corpus based on their use in the document. All the detailed processes (e.g., initializing, sampling, optimization, etc.) are encapsulated in the function called Word2Vec
provided by gensim
’s models
module (it also includes other advanced NLP models such as ldamodel
).
# train the model
model = gensim.models.Word2Vec(corpus, min_count=1, vector_size=100, workers=3, window =3, sg = 1)
For the full documentation of Word2Vec
, please check it official webpage: https://radimrehurek.com/gensim/models/word2vec.html. In this example, you will see in the parameters corpus
, the input; min_count
, if the frequency of a word is less than it, it will not be considered in the model; vector_size
, dimensionality of the word embedding vector; workers
, the number of worker threads to train the model (it depends on your systems capability); window
, maximum distance between the current and predicted word (define the length of the context); sg
, training algorithm: 1 for skip-gram; otherwise CBOW.
How to determine these parameters sometimes depends on modeler’s experience as well as the experiment results. In general Machine Learning (ML)/Deep Learning (DL) field, scientists usually conduct a lot of experienment in order to tune the model to its best performance.
You will learn more about these ML/DP methods in the Geographic Data Science unit offered next term.
Now, with the trained model
, we can see the word embedding of any word (place type here) by using code below. Note that wv
is short for word vector.
model.wv["'swimming_pool'"]
array([-0.07868499, 0.15542263, -0.02243729, 0.0780982 , 0.06268492,
-0.17506836, 0.04474231, 0.20812719, -0.13518877, -0.16856225,
-0.00936876, -0.17530479, 0.01920592, 0.06494124, 0.07890018,
-0.09049972, 0.1396448 , -0.0625847 , 0.02220419, -0.24016841,
0.07719523, 0.04147688, 0.23926069, -0.08266466, -0.04260313,
0.02942185, -0.18089837, 0.06170765, -0.07240283, 0.01278588,
0.18554497, -0.03862393, 0.10925482, -0.22881277, -0.03959438,
0.0808387 , -0.04443993, -0.03407258, -0.05998663, -0.09209066,
0.08889414, -0.13964166, 0.02546455, 0.04552466, 0.09247473,
-0.07186268, -0.1320326 , -0.13340887, 0.07253008, 0.02472992,
0.1134716 , -0.05348552, -0.02400114, -0.06314866, -0.0511739 ,
-0.00187449, 0.06196023, -0.021495 , -0.1258097 , -0.01221897,
0.05093616, 0.030013 , 0.10772886, 0.12132879, -0.03753583,
0.19692194, -0.01060558, 0.1904243 , -0.21384415, 0.07034072,
0.01108875, 0.13314134, 0.1497802 , 0.05222565, 0.23323917,
-0.01140199, 0.02901526, 0.07102555, 0.04408478, -0.06825732,
-0.24026968, -0.04105622, -0.16340482, 0.1894222 , -0.04756841,
-0.14866339, 0.23206829, 0.05334442, 0.09805954, 0.03633046,
0.18999442, -0.01930966, 0.03973996, -0.06707993, 0.18876894,
0.03653833, 0.06362845, -0.01829909, -0.01852821, -0.05128703],
dtype=float32)
Same to what we have done in Lab 03, we next can compute the simiarlity between these vectors. Here are where the “magic” comes from. The semantics of these qualitative terms becomes computable, which empowers us, assisted by the machine, to conduct a lot of interesting analyses/processes.
For instance, we can compute the (semantic) simiarity between words (place types):
# compute similairity
sim_restaurant_park = model.wv.similarity("'cafe'", "'park'")
sim_restaurant_park
0.9949972
sim_restaurant_fastFood = model.wv.similarity("'cafe'", "'fast_food'")
sim_restaurant_fastFood
0.9970947
First, you can see that the similarity between cafe
and park
is smaller than cafe
and fast food
, which aligns to our intuition. Next, we can also use the built-in function most_similar()
to get the most similar word to the target:
model.wv.most_similar("'cafe'")[:5]
[("'travel_agent'", 0.997725248336792),
("'bakery'", 0.9977042078971863),
("'outdoor_shop'", 0.9976359009742737),
("'arts_centre'", 0.9976054430007935),
("'mall'", 0.9975782036781311)]
Note that such a similarity is computed based on Euclidean distance. Here, we can also implement the version of computing cosine simiarity (you acatully have done it in previous labs). Before doing that, we need to function to get the vocabulary based on the corpus:
# get the vocabulary of the corpus
def voc_generator(corpus):
voc = []
for doc in corpus:
for word in doc:
voc.append(word)
voc = list(set(voc))
return voc
voc = voc_generator(corpus)
voc
["'toilet'",
"'newsagent'",
"'town_hall'",
"'recycling'",
"'chemist'",
"'florist'",
"'fountain'",
"'hospital'",
"'furniture_shop'",
"'tower'",
"'dentist'",
"'community_centre'",
"'convenience'",
"'arts_centre'",
"'attraction'",
"'shelter'",
"'veterinary'",
"'ruins'",
"'graveyard'",
"'cinema'",
"'travel_agent'",
"'laundry'",
"'toy_shop'",
"'optician'",
"'school'",
"'theme_park'",
"'police'",
"'clothes'",
"'garden_centre'",
"'beauty_shop'",
"'museum'",
"'camp_site'",
"'video_shop'",
"'jeweller'",
"'hostel'",
"'theatre'",
"'supermarket'",
"'water_works'",
"'fast_food'",
"'prison'",
"'sports_centre'",
"'bar'",
"'gift_shop'",
"'hotel'",
"'mobile_phone_shop'",
"'doityourself'",
"'picnic_site'",
"'university'",
"'college'",
"'department_store'",
"'recycling_metal'",
"'caravan_site'",
"'market_place'",
"'bicycle_shop'",
"'pub'",
"'clinic'",
"'sports_shop'",
"'courthouse'",
"'food_court'",
"'water_tower'",
"'swimming_pool'",
"'computer_shop'",
"'butcher'",
"'recycling_glass'",
"'comms_tower'",
"'library'",
"'monument'",
"'stadium'",
"'archaeological'",
"'fire_station'",
"'public_building'",
"'track'",
"'pharmacy'",
"'outdoor_shop'",
"'doctors'",
"'playground'",
"'restaurant'",
"'car_dealership'",
"'tourist_info'",
"'bank'",
"'stationery'",
"'artwork'",
"'park'",
"'bookshop'",
"'cafe'",
"'guesthouse'",
"'mall'",
"'beverages'",
"'memorial'",
"'observation_tower'",
"'shoe_shop'",
"'car_wash'",
"'greengrocer'",
"'nan'",
"'golf_course'",
"'bakery'",
"'castle'",
"'hairdresser'",
"'car_rental'",
"'wastewater_plant'",
"'pitch'",
"'post_office'",
"'nightclub'",
"'kindergarten'",
"'nursing_home'"]
The below function is to compute the cosine similarity, which is slightly different than what we have implemented before; but the core is the same! Try to read it and see if you can understand the code. It is to show you that in Python, you have the flexibilty to write any functions. Different people might write the function in different ways to achieve the same thing.
# compute Cosine similarity
import numpy as np
from numpy.linalg import norm
def cosine_distance (model, word,target_list , num) :
cosine_dict ={}
word_list = []
a = model.wv[word]
for item in target_list :
if item != word :
b = model.wv[item]
cos_sim = np.dot(a, b)/(norm(a)*norm(b))
cosine_dict[item] = cos_sim
dist_sort=sorted(cosine_dict.items(), key=lambda dist: dist[1],reverse = True) ## in Descedning order
for item in dist_sort:
word_list.append((item[0], item[1]))
return word_list[0:num]
Now, we can test the function by checking the top 5 similar words for ‘cafe’ based on its cosine similarity with other word vectors:
cosine_distance (model,"'cafe'",voc,5)
[("'travel_agent'", 0.99772507),
("'bakery'", 0.99770415),
("'outdoor_shop'", 0.9976358),
("'arts_centre'", 0.99760526),
("'mall'", 0.99757826)]
Okay! So far you have learnt and implemented the very fundemental technique in NLP/Geospatial Semantics: Word2Vec. Such a quantitative representation of semantics facilitates us to do many interesting things in addition to simply computing similarities between words. For instance, you can use the word vectors to cluster/group words, to execute calssification when seeing a new word, to predict the next words giving a set of seen words, etc. Again, be creative in your future projects.
Part 2: Visualizing Word Embedding#
In Lab 3, we learned a technique called WordCloud to visulize natural language based on the frequency of terms. WordCloud can only tell us which word occurs the most in the document without having any implications on the meaning of these words. With word embedding, we can now visulize natural language based on their semantics. In the code below, we implememt a technique called TSNE (t-distributed stochastic neighbor embedding). It maps the high dimensional vector into 2-dimension (2D), so that words’ embeddings can now be mapped onto a plane. During such a mapping, TSNE attempts to keep the intrinsic relationships between the embeddings in the original high dimension. There are many mathematical formulas involved in this technique, which is beyond the scope of this unit. But if you are interested at the details (not required), check https://en.wikipedia.org/wiki/T-distributed_stochastic_neighbor_embedding.
Basically, in the code below, we take advantage of the sklearn
library’s TSNE package, where the mapping will be produced. Then we extract the 2 dimensions as x-val
and y-val
. Finally, we use matplotlib
to visualize the 2 dimensions as a 2D plot. During the process, we also randonly selected 25 words (place types) and label them on the plot.
Note that we have used both sklearn
and matplotlib
already in previous labs. Indeed, these libraries introduced in this unit are the main ones (spatial/geographical) data scientists often use. You will get more and more familiar of using them in your career.
## tsn visualization
from sklearn.decomposition import IncrementalPCA
from sklearn.manifold import TSNE
import numpy as np
import matplotlib.pyplot as plt
import random
def reduce_dimensions(model):
num_dimensions = 2 # final num dimensions (2D, 3D, etc)
# extract the words & their vectors, as numpy arrays
vectors = np.asarray(model.wv.vectors)
labels = np.asarray(model.wv.index_to_key)
# reduce using t-SNE
tsne = TSNE(n_components=num_dimensions, random_state=0)
vectors = tsne.fit_transform(vectors)
x_vals = [v[0] for v in vectors]
y_vals = [v[1] for v in vectors]
return x_vals, y_vals, labels
def plot_with_matplotlib(x_vals, y_vals, labels):
random.seed(0)
plt.figure(figsize=(12, 12))
plt.scatter(x_vals, y_vals)
#
# Label randomly subsampled 25 data points
#
indices = list(range(len(labels)))
selected_indices = random.sample(indices, 25)
for i in selected_indices:
plt.annotate(labels[i], (x_vals[i], y_vals[i]))
x_vals, y_vals, labels = reduce_dimensions(model)
plot_with_matplotlib(x_vals, y_vals, labels)
/Users/gy22808/opt/anaconda3/lib/python3.9/site-packages/sklearn/manifold/_t_sne.py:780: FutureWarning: The default initialization in TSNE will change from 'random' to 'pca' in 1.2.
warnings.warn(
/Users/gy22808/opt/anaconda3/lib/python3.9/site-packages/sklearn/manifold/_t_sne.py:790: FutureWarning: The default learning rate in TSNE will change from 200.0 to 'auto' in 1.2.
warnings.warn(

From the plot, you can see that, for example, theme park
is close to wastewater_plant
, fountain
is close to graveyard
, and so on. It shows the semantic similarities between words. Again, note that since our data is relatively small, these similarities might not always align to human’s judgement.
Part 3: Computing Document Embedding#
With the word embedding, you may then wonder how we can compute the document embedding? There are many existing methods. For instance, the most popular approach is called Doc2Vec
(such a name is not suprising, right?). gensim
also provides a module for it, check here: https://radimrehurek.com/gensim/models/doc2vec.html if you are interested (it should be straightforward after you implement the Word2Vec
). In addition to Doc2Vec
, a simpler approach is to use the embedding from words, and compute the average of word embeddings contained in the document as the document embedding. The function can be implemented as below:
def compute_docEmbedding(docList, model, dim):
doc_embed_list = []
for doc in docList:
doc_embed = np.zeros(dim)
doc_n = 0
for word in doc:
word_embed = model.wv[word]
doc_embed = doc_embed+ word_embed
doc_n +=1
doc_embed_list.append(doc_embed/doc_n)
return doc_embed_list
We can then use this function to get the document embeddings:
doc_embedding = compute_docEmbedding(corpus, model, 100)
doc_embedding[0] # an example
array([-0.08329689, 0.15261881, -0.0233225 , 0.07659075, 0.06435439,
-0.17650226, 0.03916298, 0.20592766, -0.13470526, -0.17028349,
-0.00497893, -0.1680778 , 0.01734873, 0.06769949, 0.08084807,
-0.0821867 , 0.14041259, -0.06189171, 0.01712094, -0.23346457,
0.07382787, 0.04751505, 0.23992209, -0.08007029, -0.0396951 ,
0.02947526, -0.17599729, 0.06590427, -0.06975804, 0.01705565,
0.18358559, -0.03782592, 0.10420692, -0.21963379, -0.04270642,
0.08902049, -0.0432584 , -0.03484922, -0.05787984, -0.09186516,
0.09282112, -0.12858916, 0.02434939, 0.0415485 , 0.0961752 ,
-0.06557396, -0.13535978, -0.13008115, 0.0721503 , 0.02454712,
0.11480464, -0.05069575, -0.02788911, -0.06926043, -0.04776864,
-0.00395558, 0.05532643, -0.01488321, -0.11633152, -0.01831812,
0.04589558, 0.03747189, 0.10735734, 0.11727599, -0.03319626,
0.19077188, -0.00932337, 0.18625706, -0.20991499, 0.06863999,
0.0126708 , 0.13343945, 0.14200287, 0.05179945, 0.22576441,
-0.0154038 , 0.02880589, 0.06625615, 0.04314442, -0.06523215,
-0.23392626, -0.03967105, -0.1568101 , 0.18817133, -0.04292334,
-0.14623692, 0.22846387, 0.05329637, 0.09399697, 0.03575206,
0.18140565, -0.01724123, 0.03809967, -0.06591525, 0.18705835,
0.03376547, 0.06510156, -0.01710109, -0.01255403, -0.04729071])
With such an embedding, you can then do all the similar things we have done for words (e.g., compare different documents (regions), visualize the similarity between regions, etc.) Try it yourself. We can also impelement a simple IR system like what we did in Lab 03 using document emebedding now. Can you do it yourself?
After computing document embedding by averaging vectors, do you see any disadvantage of such an approach?
Part 4: Topic Modeling on Geo-text (optional)#
Beyond Word2Vec
, where word embedding is learnt first to represent the semantic similarity between words, another more advanced technique is the family of Topic Modeling. It extracts the hidden topics from large volumes of text. So, it means to capture more complex semantics hidden in texts, rather than simply relying on the interaction between words. It heavily involves probablistic models. Topic models are useful for purpose of document clustering, organizing large blocks of textual data, information retrieval from unstructured text, feature selection, etc.
There are many such topic models, including Latent Semantic Analysis or Indexing(LSA/LSI), Hierarchical Dirichlet process (HDP), and Latent Dirichlet Allocation(LDA). We will cover LDA in this lab due to its recent popularity.
In LDA, it considers each document as a collection of topics and each topic as collection of keywords (words/terms). You can see there a hidden/middle layer (topic) here between document and words. Once you set up the parameters (e.g., number of topics), the model will then optimize the topic distribution of the document, as well as the word distribution of each topic.
We will use the same dataset bristol_lsoal_poi_full
for this experiment for the sake of simplicity (it is corpus
as an input for gensim
after some processes we have already done). But again, it might not be a good dataset as it is relatively too small and many documents only contain couple of words, so it might be difficult to learn the topic distribution for these document.
When you have a larger dataset, like newspapers, you might also want to use the library Spacy
to preprocess the data, such as removing stopwords, applying lemmatization, removing punctuation, etc.
To implement LDA, we can still use the gensim
library as before. To later visualize the results, we need to install a new package:
After all libraries are installed, now let’s import all of them:
import gensim.corpora as corpora
import pyLDAvis
import pyLDAvis.gensim_models as gensimvis
from gensim.models import CoherenceModel
First, we need to have a Document Term matrix (DTM). We have implemented it in Lab 3 as well. Luckily, in gensim
, we do not need to do it manually. But we need to pass the vocabulary (tokenized words) to gensim
:
dict_ = corpora.Dictionary(corpus)
print(dict_)
Dictionary<105 unique tokens: ["'park'", "'playground'", "'swimming_pool'", "'butcher'", "'cafe'"]...>
We can see the words from the vocabulary using:
for word in dict_.values():
print(word)
'park'
'playground'
'swimming_pool'
'butcher'
'cafe'
'car_dealership'
'car_wash'
'clinic'
'college'
'community_centre'
'computer_shop'
'convenience'
'dentist'
'doityourself'
'fast_food'
'hairdresser'
'kindergarten'
'nursing_home'
'restaurant'
'sports_centre'
'theatre'
'beauty_shop'
'pitch'
'pub'
'sports_shop'
'toy_shop'
'furniture_shop'
'hotel'
'school'
'pharmacy'
'bakery'
'gift_shop'
'greengrocer'
'arts_centre'
'attraction'
'bar'
'beverages'
'cinema'
'clothes'
'florist'
'fountain'
'library'
'museum'
'nightclub'
'supermarket'
'toilet'
'tourist_info'
'town_hall'
'track'
'outdoor_shop'
'veterinary'
'mobile_phone_shop'
'travel_agent'
'bank'
'car_rental'
'chemist'
'doctors'
'jeweller'
'optician'
'post_office'
'shoe_shop'
'tower'
'bookshop'
'laundry'
'university'
'graveyard'
'mall'
'newsagent'
'shelter'
'bicycle_shop'
'hospital'
'guesthouse'
'police'
'golf_course'
'fire_station'
'hostel'
'archaeological'
'recycling_glass'
'wastewater_plant'
'nan'
'water_tower'
'camp_site'
'water_works'
'department_store'
'market_place'
'ruins'
'video_shop'
'garden_centre'
'recycling'
'castle'
'courthouse'
'memorial'
'stadium'
'stationery'
'prison'
'public_building'
'artwork'
'comms_tower'
'food_court'
'monument'
'observation_tower'
'caravan_site'
'picnic_site'
'theme_park'
'recycling_metal'
Now, we are ready to generate the DTM using doc2bow()
function. bow
means “bag of words”.
doc_term_matrix = [dict_.doc2bow(i) for i in corpus]
doc_term_matrix
[[(0, 1), (1, 1), (2, 2)],
[(3, 1),
(4, 1),
(5, 1),
(6, 1),
(7, 1),
(8, 1),
(9, 1),
(10, 1),
(11, 3),
(12, 1),
(13, 3),
(14, 1),
(15, 2),
(16, 1),
(17, 1),
(18, 3),
(19, 3),
(20, 1)],
[(0, 2), (1, 1), (4, 1), (9, 1), (11, 2), (14, 3), (15, 2), (16, 2), (21, 1)],
[(1, 2),
(5, 1),
(11, 1),
(14, 1),
(21, 1),
(22, 2),
(23, 1),
(24, 1),
(25, 1)],
[(0, 1),
(1, 1),
(5, 1),
(8, 1),
(11, 1),
(14, 2),
(16, 1),
(18, 1),
(22, 3),
(23, 2),
(26, 1),
(27, 2),
(28, 1)],
[(0, 1),
(5, 1),
(6, 1),
(11, 1),
(13, 3),
(14, 2),
(15, 1),
(21, 1),
(23, 1),
(29, 1)],
[(11, 1), (18, 1), (19, 1), (23, 4), (30, 1), (31, 1), (32, 1)],
[(0, 5),
(4, 14),
(7, 1),
(9, 1),
(11, 2),
(14, 13),
(15, 9),
(18, 23),
(19, 1),
(20, 2),
(21, 2),
(23, 9),
(26, 1),
(27, 1),
(28, 1),
(29, 1),
(31, 1),
(33, 2),
(34, 1),
(35, 7),
(36, 3),
(37, 1),
(38, 2),
(39, 1),
(40, 5),
(41, 1),
(42, 2),
(43, 4),
(44, 2),
(45, 1),
(46, 1),
(47, 1)],
[(0, 1),
(1, 1),
(5, 2),
(11, 3),
(13, 2),
(15, 2),
(17, 1),
(28, 2),
(30, 1)],
[(0, 3), (8, 1), (14, 1), (19, 1), (22, 1), (28, 1), (48, 1)],
[(1, 1),
(4, 1),
(7, 2),
(11, 2),
(12, 1),
(13, 1),
(14, 3),
(18, 2),
(19, 1),
(23, 5),
(24, 1),
(49, 1),
(50, 1)],
[(0, 2),
(1, 2),
(3, 3),
(4, 3),
(6, 1),
(11, 5),
(14, 7),
(15, 5),
(18, 9),
(21, 2),
(23, 4),
(25, 1),
(29, 2),
(30, 2),
(31, 1),
(38, 3),
(44, 4),
(51, 1),
(52, 2)],
[(0, 1),
(1, 1),
(3, 1),
(4, 8),
(5, 1),
(6, 1),
(7, 1),
(11, 2),
(14, 9),
(15, 7),
(18, 1),
(19, 1),
(21, 3),
(22, 1),
(23, 6),
(26, 2),
(29, 1),
(31, 1),
(32, 1),
(33, 1),
(36, 1),
(38, 2),
(41, 1),
(43, 1),
(44, 1),
(45, 1),
(49, 1),
(51, 7),
(52, 1),
(53, 2),
(54, 1),
(55, 1),
(56, 1),
(57, 1),
(58, 2),
(59, 1),
(60, 1)],
[(1, 1), (22, 1), (61, 1)],
[(0, 1),
(2, 1),
(4, 1),
(7, 1),
(11, 2),
(12, 1),
(14, 2),
(15, 3),
(16, 1),
(18, 3),
(23, 3),
(27, 2),
(28, 1),
(35, 1),
(62, 1),
(63, 1),
(64, 2)],
[(0, 2), (9, 1), (11, 1), (22, 2), (28, 1)],
[(28, 1), (59, 1)],
[(0, 2),
(1, 1),
(4, 1),
(6, 1),
(7, 1),
(9, 1),
(12, 1),
(14, 3),
(15, 2),
(16, 2),
(22, 4),
(23, 1),
(28, 1),
(30, 1),
(31, 1),
(39, 1),
(45, 1),
(50, 1),
(53, 2),
(65, 1),
(66, 1),
(67, 1),
(68, 1)],
[(5, 1),
(11, 3),
(12, 1),
(13, 1),
(14, 5),
(15, 2),
(18, 2),
(21, 2),
(22, 3),
(23, 3),
(26, 1),
(28, 1),
(29, 1),
(30, 2),
(36, 4),
(58, 1),
(59, 1),
(67, 1)],
[(0, 4),
(1, 2),
(3, 4),
(4, 7),
(5, 1),
(7, 1),
(9, 1),
(10, 1),
(11, 6),
(14, 7),
(15, 3),
(18, 3),
(19, 2),
(22, 3),
(26, 2),
(28, 3),
(29, 1),
(32, 1),
(35, 2),
(38, 2),
(41, 1),
(51, 2),
(52, 1),
(58, 1),
(69, 1)],
[(9, 1), (14, 1), (15, 2), (18, 2), (23, 1), (50, 1), (56, 1), (65, 1)],
[(1, 1), (4, 1), (11, 1), (14, 1), (22, 1), (23, 1), (28, 1)],
[(0, 1),
(4, 1),
(5, 4),
(9, 1),
(11, 1),
(15, 1),
(22, 1),
(23, 1),
(29, 1),
(32, 1),
(36, 1)],
[(15, 2), (67, 1)],
[(0, 1),
(2, 1),
(7, 2),
(11, 1),
(12, 1),
(14, 2),
(15, 3),
(18, 2),
(21, 1),
(30, 1),
(53, 1),
(56, 1)],
[(0, 3),
(1, 1),
(4, 1),
(11, 2),
(14, 1),
(15, 2),
(17, 1),
(18, 1),
(22, 3),
(28, 1),
(29, 1),
(64, 4),
(70, 1)],
[(0, 4),
(4, 1),
(7, 1),
(9, 1),
(14, 2),
(15, 1),
(16, 1),
(21, 1),
(23, 1),
(44, 1),
(71, 1),
(72, 1)],
[(4, 1),
(11, 3),
(14, 5),
(15, 2),
(16, 1),
(28, 2),
(29, 2),
(41, 1),
(50, 1),
(58, 1)],
[(0, 2), (11, 2), (14, 2), (15, 2), (28, 1), (39, 1)],
[(0, 3), (1, 2), (4, 1), (9, 1), (11, 1), (22, 1), (41, 1)],
[(4, 9),
(7, 1),
(9, 1),
(11, 2),
(13, 1),
(14, 2),
(15, 2),
(16, 2),
(18, 7),
(19, 1),
(21, 3),
(22, 1),
(23, 3),
(24, 2),
(26, 9),
(28, 1),
(29, 1),
(31, 1),
(32, 1),
(35, 3),
(38, 1),
(41, 1),
(44, 2),
(45, 1),
(56, 1),
(58, 2),
(62, 1),
(63, 1),
(66, 1),
(67, 1),
(68, 2),
(69, 1),
(72, 1)],
[(1, 1),
(9, 1),
(11, 1),
(12, 1),
(13, 1),
(14, 2),
(15, 3),
(19, 1),
(22, 4),
(28, 1),
(29, 1),
(44, 1),
(56, 1),
(63, 1),
(70, 1)],
[(0, 6),
(1, 1),
(2, 1),
(4, 1),
(9, 1),
(11, 2),
(12, 1),
(14, 1),
(15, 1),
(21, 2),
(22, 2),
(28, 1),
(41, 1),
(73, 1)],
[(0, 2), (1, 1), (11, 1), (13, 1), (14, 1), (23, 2)],
[(0, 3),
(1, 1),
(5, 1),
(14, 4),
(15, 2),
(18, 1),
(21, 2),
(22, 1),
(23, 2),
(28, 2),
(38, 1),
(41, 1),
(42, 1),
(44, 4),
(51, 1),
(52, 1),
(53, 1),
(57, 1),
(58, 1),
(64, 1),
(70, 1)],
[(0, 2),
(1, 1),
(4, 1),
(7, 1),
(14, 1),
(15, 1),
(16, 1),
(18, 1),
(22, 1),
(24, 1),
(26, 1),
(28, 1),
(31, 1),
(32, 1),
(38, 1),
(51, 1),
(68, 1)],
[(1, 1),
(5, 1),
(11, 1),
(21, 1),
(22, 1),
(23, 1),
(28, 1),
(54, 1),
(70, 1),
(74, 1)],
[(0, 1),
(4, 3),
(5, 2),
(7, 1),
(11, 1),
(13, 3),
(14, 5),
(15, 4),
(18, 2),
(21, 2),
(23, 3),
(26, 2),
(35, 1),
(36, 1),
(38, 1),
(39, 1),
(44, 1),
(57, 1),
(62, 1),
(67, 1),
(69, 1)],
[(0, 1)],
[(5, 1), (11, 1), (14, 1), (22, 2), (28, 1), (44, 1), (54, 1), (56, 1)],
[(0, 4),
(1, 1),
(2, 2),
(4, 1),
(11, 2),
(15, 1),
(17, 1),
(22, 2),
(23, 1),
(28, 2)],
[(0, 1), (23, 1)],
[(0, 1),
(1, 1),
(11, 1),
(15, 1),
(16, 1),
(22, 7),
(23, 1),
(28, 1),
(36, 1),
(61, 1),
(65, 1)],
[(0, 1),
(1, 1),
(6, 1),
(11, 1),
(13, 1),
(14, 2),
(15, 2),
(21, 1),
(22, 3),
(28, 1),
(36, 1)],
[(0, 3),
(1, 2),
(4, 2),
(8, 1),
(11, 2),
(15, 2),
(18, 2),
(20, 1),
(23, 1),
(27, 3),
(28, 2),
(35, 3),
(43, 1),
(65, 1),
(75, 1)],
[(0, 1),
(7, 1),
(9, 2),
(10, 1),
(14, 2),
(15, 4),
(17, 2),
(22, 3),
(36, 1),
(67, 1)],
[(0, 3),
(1, 1),
(5, 3),
(11, 1),
(14, 2),
(22, 6),
(28, 1),
(30, 1),
(42, 1),
(48, 1),
(54, 2),
(68, 1),
(72, 1),
(76, 2),
(77, 1),
(78, 1)],
[(2, 1), (5, 2), (7, 2), (13, 1), (15, 1), (22, 3)],
[(0, 1),
(1, 1),
(4, 1),
(11, 2),
(12, 1),
(14, 2),
(18, 1),
(19, 1),
(23, 4),
(30, 1),
(44, 1)],
[(11, 1), (12, 1), (14, 1), (15, 1), (18, 1), (21, 2), (50, 1)],
[(1, 1), (9, 2), (16, 1), (19, 1), (22, 5), (28, 2)],
[(5, 1), (14, 1), (15, 1), (23, 1)],
[(0, 4),
(1, 3),
(3, 2),
(4, 2),
(9, 1),
(11, 6),
(14, 2),
(18, 2),
(21, 1),
(22, 2),
(23, 2),
(26, 1),
(28, 2),
(44, 1),
(51, 1),
(52, 1),
(57, 1),
(59, 1),
(63, 1)],
[(79, 1)],
[(0, 4), (9, 1), (28, 1), (56, 1), (70, 1)],
[(0, 1), (2, 1), (9, 1), (16, 1), (23, 1), (56, 1), (80, 1)],
[(11, 1), (28, 1), (41, 1)],
[(0, 1), (22, 4), (28, 2), (41, 1)],
[(0, 5), (22, 2), (28, 1), (34, 1), (44, 2), (54, 1), (70, 1), (81, 1)],
[(0, 2),
(1, 2),
(3, 1),
(4, 6),
(7, 1),
(9, 1),
(11, 6),
(14, 5),
(15, 2),
(18, 4),
(22, 3),
(23, 5),
(28, 2),
(30, 1),
(35, 1),
(44, 1),
(53, 1),
(56, 1)],
[(0, 3),
(1, 1),
(3, 3),
(4, 1),
(6, 1),
(7, 2),
(9, 1),
(11, 10),
(12, 1),
(14, 9),
(15, 8),
(18, 3),
(21, 1),
(22, 1),
(23, 2),
(29, 1),
(32, 1),
(38, 1),
(39, 1),
(51, 1),
(52, 2),
(63, 1),
(69, 1)],
[(0, 2), (9, 1), (11, 1), (14, 2), (22, 1), (23, 1)],
[(0, 1), (4, 1), (15, 1), (23, 1), (25, 1), (28, 2), (30, 1), (67, 1)],
[(0, 1),
(4, 1),
(9, 1),
(11, 2),
(14, 2),
(15, 2),
(21, 3),
(28, 1),
(30, 1),
(35, 1),
(36, 1),
(39, 1),
(52, 1),
(56, 2),
(58, 1),
(66, 1),
(67, 1),
(69, 1)],
[(0, 5),
(1, 1),
(5, 2),
(9, 1),
(11, 2),
(14, 4),
(15, 1),
(18, 2),
(23, 1),
(24, 1),
(28, 1),
(30, 1),
(35, 2),
(36, 1),
(56, 1)],
[(0, 3),
(1, 1),
(4, 2),
(5, 1),
(6, 2),
(14, 2),
(22, 4),
(23, 1),
(29, 1),
(44, 1),
(56, 1),
(82, 1)],
[(0, 1), (1, 2), (4, 1), (9, 1), (22, 4), (23, 1), (28, 1), (45, 1), (68, 1)],
[(0, 2),
(1, 1),
(4, 1),
(6, 1),
(9, 2),
(11, 1),
(14, 2),
(15, 2),
(26, 2),
(28, 3),
(29, 1),
(34, 1),
(44, 3),
(50, 1),
(56, 1),
(63, 1),
(69, 1),
(83, 1),
(84, 1)],
[(0, 1),
(1, 1),
(2, 1),
(4, 3),
(5, 2),
(13, 2),
(14, 1),
(16, 1),
(19, 2),
(22, 21),
(27, 1),
(28, 2),
(82, 1),
(85, 1)],
[(0, 3),
(5, 1),
(9, 1),
(11, 2),
(12, 1),
(13, 3),
(14, 2),
(15, 1),
(17, 1),
(22, 1),
(23, 1),
(28, 1)],
[(1, 1),
(2, 1),
(8, 1),
(12, 2),
(14, 1),
(15, 2),
(18, 2),
(21, 2),
(22, 1),
(28, 1),
(36, 1),
(44, 1),
(69, 1)],
[(11, 1),
(14, 2),
(15, 1),
(18, 7),
(21, 1),
(23, 2),
(26, 2),
(27, 1),
(35, 1),
(38, 1),
(60, 1),
(63, 1)],
[(5, 3), (10, 1), (11, 2), (14, 1), (15, 3), (21, 1), (23, 3), (28, 1)],
[(26, 1), (28, 1), (44, 1)],
[(0, 6), (1, 1), (13, 2), (22, 3), (23, 1), (28, 1), (68, 1)],
[(0, 2), (2, 2), (16, 1), (22, 1), (28, 1)],
[(0, 1), (6, 1), (9, 1), (11, 1), (12, 1), (29, 1), (44, 1), (56, 1)],
[(4, 1), (14, 1), (23, 1), (28, 1), (41, 1), (50, 1)],
[(0, 1), (1, 1), (19, 1), (28, 2), (34, 1)],
[(0, 1),
(1, 1),
(3, 1),
(7, 1),
(11, 2),
(14, 4),
(15, 1),
(21, 1),
(22, 3),
(23, 2),
(28, 1),
(65, 1)],
[(0, 1), (11, 1), (14, 1), (15, 1), (23, 1), (28, 1), (65, 1)],
[(0, 1), (5, 1), (9, 1), (16, 1), (23, 1), (65, 1)],
[(0, 2),
(1, 1),
(9, 2),
(11, 1),
(14, 3),
(15, 2),
(21, 1),
(22, 2),
(28, 3),
(32, 1),
(36, 1),
(44, 2)],
[(2, 1), (15, 1), (22, 5), (28, 3), (44, 1)],
[(0, 2),
(1, 2),
(5, 1),
(9, 1),
(14, 1),
(22, 1),
(24, 1),
(26, 2),
(28, 1),
(38, 2),
(48, 4),
(73, 1)],
[(1, 1),
(5, 1),
(6, 1),
(11, 2),
(13, 1),
(15, 1),
(17, 1),
(22, 1),
(28, 1),
(56, 1)],
[(9, 1), (13, 1), (22, 1), (28, 2), (29, 1), (44, 1), (56, 1)],
[(0, 2), (1, 3), (22, 1), (28, 1)],
[(0, 1),
(1, 1),
(2, 1),
(4, 3),
(7, 1),
(10, 1),
(11, 5),
(12, 1),
(14, 6),
(15, 6),
(18, 7),
(22, 1),
(23, 4),
(26, 1),
(29, 2),
(30, 1),
(32, 1),
(35, 3),
(36, 1),
(38, 4),
(39, 1),
(44, 2),
(51, 1),
(58, 1),
(63, 1)],
[(9, 1), (11, 1), (14, 2), (15, 1), (18, 2), (23, 3), (30, 1)],
[(0, 1), (22, 3), (23, 1), (28, 1)],
[(14, 1),
(15, 3),
(21, 3),
(23, 1),
(26, 1),
(38, 1),
(39, 1),
(41, 1),
(44, 1),
(57, 1)],
[(1, 1), (22, 1), (28, 1)],
[(3, 1),
(4, 2),
(5, 1),
(11, 3),
(14, 7),
(15, 6),
(21, 2),
(28, 1),
(29, 1),
(30, 2),
(36, 1),
(38, 1),
(39, 1),
(44, 1),
(58, 1),
(59, 1),
(67, 1),
(86, 1)],
[(0, 2), (2, 2), (16, 1), (19, 1), (22, 2), (28, 5), (50, 1)],
[(0, 1), (28, 1), (73, 1)],
[(0, 1),
(1, 1),
(11, 1),
(15, 1),
(16, 1),
(22, 1),
(23, 1),
(28, 1),
(35, 1),
(73, 1),
(82, 1)],
[(5, 1), (9, 1), (11, 1), (13, 1), (19, 1), (22, 3), (28, 1), (87, 1)],
[(4, 2),
(7, 1),
(11, 3),
(12, 1),
(14, 1),
(15, 3),
(16, 2),
(18, 3),
(19, 1),
(21, 3),
(23, 3),
(28, 2),
(30, 1),
(43, 1),
(44, 1),
(69, 2)],
[(0, 2), (1, 1), (6, 1), (11, 1), (22, 6), (26, 1), (28, 1)],
[(0, 3),
(1, 1),
(22, 2),
(26, 1),
(27, 1),
(44, 1),
(48, 1),
(65, 2),
(70, 1),
(71, 1)],
[(0, 1),
(1, 1),
(4, 2),
(5, 2),
(9, 1),
(11, 1),
(14, 4),
(15, 4),
(18, 2),
(21, 2),
(22, 3),
(25, 2),
(35, 1),
(41, 1),
(44, 1),
(45, 1),
(65, 1),
(88, 1)],
[(6, 1), (15, 1), (16, 1), (23, 1), (28, 1), (53, 1)],
[(0, 1),
(4, 1),
(5, 1),
(6, 1),
(11, 1),
(12, 2),
(15, 2),
(18, 1),
(23, 1),
(44, 1),
(50, 1),
(65, 1),
(67, 1)],
[(3, 1),
(11, 2),
(12, 1),
(14, 1),
(15, 2),
(16, 1),
(23, 1),
(28, 1),
(29, 1),
(44, 1),
(71, 1)],
[(0, 1), (1, 1), (22, 1), (23, 2)],
[(3, 1),
(4, 1),
(5, 5),
(11, 4),
(14, 6),
(15, 7),
(18, 3),
(21, 6),
(23, 3),
(28, 1),
(30, 1),
(32, 1),
(36, 1),
(44, 1),
(49, 1),
(59, 1),
(63, 2),
(65, 1),
(67, 1),
(68, 1),
(69, 1),
(89, 1)],
[(0, 1), (11, 1), (14, 1), (23, 1), (28, 4), (41, 1), (44, 1)],
[(0, 3),
(4, 5),
(7, 1),
(8, 1),
(11, 1),
(14, 7),
(15, 2),
(16, 1),
(18, 4),
(23, 7),
(27, 5),
(28, 1),
(30, 1),
(35, 1),
(44, 2),
(53, 1),
(61, 1),
(63, 1),
(67, 1),
(74, 1),
(85, 1),
(90, 1),
(91, 1)],
[(0, 4),
(1, 2),
(2, 2),
(9, 1),
(11, 1),
(18, 1),
(22, 5),
(28, 2),
(42, 1),
(45, 1),
(54, 1)],
[(22, 1), (28, 1)],
[(0, 1), (11, 1), (14, 2), (28, 1), (72, 1)],
[(0, 1),
(1, 2),
(4, 1),
(5, 2),
(11, 1),
(13, 4),
(14, 6),
(15, 6),
(21, 1),
(22, 6),
(23, 1),
(28, 2),
(44, 1),
(51, 1)],
[(22, 6), (28, 2), (68, 1)],
[(11, 1), (14, 1), (15, 1), (22, 1), (92, 1)],
[(14, 1), (22, 6), (28, 1), (36, 1), (48, 1)],
[(0, 2),
(1, 2),
(4, 4),
(5, 5),
(13, 3),
(14, 2),
(15, 2),
(18, 1),
(22, 2),
(23, 1),
(27, 1),
(28, 1),
(35, 1),
(54, 2),
(65, 1),
(67, 1),
(84, 1),
(85, 1),
(93, 1)],
[(10, 1), (11, 1), (15, 1), (21, 1), (24, 1)],
[(13, 1), (15, 2), (71, 3)],
[(0, 5),
(1, 4),
(3, 2),
(4, 2),
(6, 1),
(7, 1),
(9, 2),
(10, 1),
(11, 9),
(12, 1),
(14, 6),
(15, 6),
(18, 8),
(19, 1),
(22, 7),
(23, 3),
(26, 2),
(28, 3),
(38, 1),
(44, 1),
(52, 2),
(59, 1),
(63, 2),
(67, 1),
(69, 1),
(93, 1)],
[(1, 3), (7, 2), (12, 1), (14, 1), (18, 1), (23, 3), (26, 1), (28, 1)],
[(0, 1),
(5, 6),
(6, 1),
(13, 3),
(14, 2),
(15, 1),
(23, 1),
(24, 1),
(30, 1),
(36, 1),
(44, 1),
(51, 1),
(67, 1)],
[(3, 1),
(4, 7),
(5, 1),
(6, 1),
(8, 1),
(11, 1),
(13, 1),
(14, 4),
(15, 4),
(16, 2),
(18, 5),
(19, 1),
(20, 1),
(21, 2),
(22, 1),
(23, 5),
(25, 1),
(26, 2),
(28, 1),
(30, 1),
(31, 3),
(32, 1),
(35, 1),
(39, 2),
(50, 1),
(53, 1),
(58, 1),
(60, 1),
(63, 2),
(67, 2),
(69, 2),
(92, 1),
(94, 1)],
[(0, 4),
(1, 1),
(5, 1),
(7, 2),
(11, 3),
(14, 3),
(15, 1),
(16, 2),
(21, 1),
(22, 2),
(28, 1),
(39, 1),
(44, 1),
(54, 1),
(74, 1)],
[(3, 1),
(4, 1),
(5, 1),
(11, 2),
(14, 4),
(15, 2),
(23, 2),
(36, 1),
(39, 1),
(63, 1)],
[(0, 2),
(4, 6),
(5, 1),
(6, 1),
(7, 1),
(10, 1),
(11, 1),
(12, 2),
(13, 2),
(14, 3),
(15, 2),
(18, 3),
(19, 1),
(20, 1),
(22, 1),
(23, 10),
(27, 1),
(28, 1),
(30, 3),
(35, 1),
(38, 3),
(39, 1),
(43, 4),
(50, 1),
(52, 1),
(54, 1),
(68, 2),
(69, 1),
(84, 1),
(93, 1)],
[(0, 1),
(1, 1),
(2, 1),
(14, 1),
(15, 1),
(22, 2),
(28, 1),
(38, 1),
(48, 1),
(56, 1),
(70, 1),
(82, 1)],
[(0, 3), (22, 1)],
[(0, 1),
(1, 1),
(8, 1),
(11, 2),
(14, 3),
(15, 1),
(22, 1),
(23, 2),
(28, 1),
(29, 1),
(92, 1)],
[(0, 1), (1, 1), (16, 1), (22, 3), (23, 1), (28, 1), (44, 1), (56, 1)],
[(0, 3), (12, 1), (22, 2), (95, 1)],
[(0, 1)],
[(1, 1), (7, 1), (11, 2), (14, 1), (22, 11), (28, 2), (43, 1), (44, 1)],
[(4, 1),
(5, 2),
(11, 3),
(14, 7),
(15, 11),
(18, 4),
(21, 4),
(22, 3),
(23, 2),
(24, 2),
(28, 1),
(44, 1),
(63, 1),
(71, 2)],
[(0, 3),
(1, 4),
(11, 2),
(14, 1),
(22, 3),
(30, 1),
(32, 1),
(67, 1),
(68, 1),
(96, 1)],
[(0, 1),
(17, 2),
(21, 1),
(22, 6),
(36, 1),
(42, 1),
(45, 1),
(47, 1),
(64, 1),
(69, 1),
(77, 1)],
[(0, 1),
(1, 1),
(11, 1),
(12, 1),
(14, 1),
(15, 4),
(16, 3),
(18, 1),
(21, 1),
(22, 3),
(23, 2),
(29, 1),
(30, 1),
(35, 1),
(41, 1),
(44, 1),
(63, 2),
(65, 1),
(93, 1)],
[(1, 1), (4, 1), (16, 1), (22, 2), (23, 1), (28, 2)],
[(4, 1), (11, 1), (16, 1), (21, 1), (22, 1), (23, 2), (65, 1)],
[(9, 1), (11, 1), (15, 2), (28, 1)],
[(0, 6),
(4, 3),
(7, 1),
(9, 3),
(11, 3),
(14, 5),
(15, 4),
(18, 1),
(23, 1),
(29, 2),
(30, 1),
(36, 1),
(41, 1),
(44, 2),
(95, 2)],
[(0, 1), (1, 1), (22, 4), (28, 2), (44, 1), (70, 1)],
[(9, 1), (22, 6), (28, 1)],
[(0, 2), (4, 1), (5, 2), (11, 4), (14, 1), (15, 2), (41, 1), (50, 2)],
[(0, 1), (15, 1), (16, 1), (22, 1), (28, 2)],
[(0, 1), (1, 2), (22, 2), (28, 2)],
[(0, 1),
(1, 1),
(4, 2),
(7, 1),
(9, 1),
(11, 6),
(12, 1),
(14, 4),
(15, 2),
(22, 5),
(28, 2),
(29, 1),
(30, 1),
(44, 1),
(56, 1),
(65, 1)],
[(0, 1), (1, 1), (5, 1), (22, 1), (23, 2), (28, 1), (30, 1)],
[(1, 1),
(4, 1),
(12, 1),
(14, 1),
(15, 1),
(18, 1),
(21, 1),
(22, 2),
(41, 1)],
[(9, 1), (23, 1), (28, 1), (48, 1)],
[(0, 1),
(1, 2),
(3, 1),
(4, 4),
(11, 5),
(12, 1),
(13, 1),
(14, 3),
(15, 6),
(16, 1),
(21, 1),
(23, 2),
(28, 1),
(29, 1),
(30, 1),
(36, 1),
(39, 1),
(44, 1),
(50, 1),
(53, 1),
(58, 1),
(59, 1),
(65, 1)],
[(0, 2),
(1, 1),
(4, 3),
(11, 1),
(14, 3),
(15, 2),
(18, 7),
(23, 3),
(26, 1),
(30, 1),
(31, 1),
(34, 1),
(38, 2),
(42, 1),
(59, 1),
(63, 1),
(66, 1)],
[(0, 1), (1, 1), (22, 5), (23, 3), (28, 4), (41, 1)],
[(0, 2), (1, 1), (9, 1), (22, 4), (23, 1), (28, 2), (82, 1)],
[(3, 1),
(4, 4),
(7, 1),
(10, 1),
(11, 1),
(13, 2),
(14, 3),
(15, 4),
(16, 1),
(18, 6),
(21, 2),
(23, 1),
(29, 1),
(30, 2),
(32, 1),
(35, 1),
(36, 1),
(39, 1),
(44, 1),
(53, 1),
(58, 1),
(62, 1),
(67, 1),
(92, 1)],
[(4, 5),
(11, 1),
(14, 1),
(15, 3),
(16, 1),
(18, 4),
(21, 2),
(23, 4),
(25, 2),
(30, 2),
(31, 4),
(32, 2),
(35, 1),
(36, 2),
(38, 1),
(39, 1),
(41, 1),
(44, 3),
(51, 1),
(59, 1),
(62, 1),
(67, 1),
(69, 1)],
[(0, 3),
(1, 2),
(9, 1),
(14, 2),
(19, 1),
(22, 1),
(23, 2),
(35, 1),
(67, 1)],
[(0, 4), (1, 1), (7, 2), (22, 2)],
[(0, 6), (1, 5), (7, 2), (9, 2), (16, 2), (22, 3), (28, 2)],
[(0, 3), (1, 1), (9, 1), (28, 1), (73, 1)],
[(4, 1),
(7, 1),
(8, 1),
(11, 1),
(12, 1),
(19, 1),
(23, 3),
(24, 1),
(28, 2),
(71, 1),
(85, 1)],
[(0, 2),
(4, 4),
(14, 3),
(15, 3),
(18, 1),
(26, 1),
(28, 1),
(29, 1),
(35, 1),
(39, 1),
(44, 1),
(58, 1),
(60, 1),
(63, 1),
(65, 1),
(67, 1)],
[(6, 1),
(9, 1),
(11, 1),
(12, 1),
(13, 1),
(18, 1),
(21, 1),
(22, 3),
(23, 1),
(28, 1),
(39, 1),
(44, 1),
(50, 1),
(56, 2),
(70, 1),
(82, 1)],
[(0, 1), (1, 1), (15, 1), (19, 1), (22, 14), (73, 1)],
[(0, 3),
(2, 6),
(4, 1),
(8, 1),
(17, 1),
(22, 20),
(45, 2),
(56, 1),
(68, 1),
(80, 1),
(82, 1),
(85, 1)],
[(0, 1),
(1, 1),
(7, 1),
(18, 1),
(20, 1),
(22, 4),
(23, 1),
(28, 2),
(34, 2),
(39, 1),
(45, 1),
(56, 1),
(57, 2),
(63, 1),
(68, 3)],
[(0, 2),
(1, 1),
(3, 1),
(4, 5),
(6, 3),
(7, 1),
(9, 1),
(11, 1),
(12, 2),
(13, 1),
(14, 5),
(15, 9),
(18, 2),
(19, 1),
(21, 2),
(22, 3),
(23, 4),
(25, 1),
(27, 1),
(28, 1),
(29, 1),
(30, 1),
(32, 1),
(33, 1),
(36, 1),
(38, 2),
(44, 1),
(51, 1),
(53, 2),
(56, 2),
(58, 1),
(59, 1),
(65, 1),
(67, 1),
(71, 1)],
[(0, 3),
(2, 1),
(11, 1),
(19, 2),
(22, 9),
(23, 1),
(26, 1),
(28, 4),
(50, 1),
(56, 1)],
[(0, 3),
(1, 2),
(4, 1),
(5, 2),
(11, 1),
(13, 7),
(14, 6),
(15, 1),
(16, 1),
(24, 1),
(28, 1),
(29, 1),
(30, 1),
(35, 1),
(37, 1),
(44, 3),
(54, 1),
(72, 1),
(87, 1),
(97, 1)],
[(5, 1), (14, 2), (15, 1), (16, 1), (23, 1), (28, 2), (36, 1), (44, 1)],
[(0, 1),
(3, 1),
(4, 9),
(5, 1),
(7, 1),
(10, 1),
(11, 1),
(12, 2),
(13, 1),
(14, 3),
(15, 7),
(18, 15),
(21, 4),
(22, 1),
(23, 8),
(26, 2),
(27, 2),
(29, 2),
(30, 1),
(31, 2),
(35, 1),
(36, 1),
(38, 13),
(39, 2),
(41, 1),
(44, 1),
(51, 1),
(52, 1),
(57, 8),
(58, 1),
(60, 1),
(62, 3),
(63, 2),
(65, 2),
(70, 1)],
[(0, 1),
(1, 1),
(9, 1),
(16, 1),
(21, 1),
(22, 1),
(28, 1),
(41, 1),
(48, 1)],
[(0, 1), (11, 1), (22, 2), (28, 2), (45, 1), (65, 1)],
[(0, 2), (1, 1), (17, 4), (22, 7), (23, 1), (26, 1), (28, 4), (70, 1)],
[(0, 1),
(1, 1),
(4, 1),
(5, 2),
(6, 1),
(7, 1),
(10, 1),
(11, 2),
(14, 3),
(15, 1),
(21, 1),
(23, 3),
(24, 1),
(28, 1),
(38, 1),
(39, 1)],
[(0, 1), (28, 1)],
[(0, 1), (11, 1), (15, 1), (22, 1), (28, 1)],
[(0, 2), (1, 1), (4, 1), (11, 1), (19, 1), (22, 2), (56, 1), (65, 1)],
[(0, 1),
(1, 1),
(3, 1),
(4, 3),
(9, 1),
(11, 1),
(12, 1),
(13, 1),
(14, 2),
(15, 9),
(18, 2),
(21, 2),
(22, 4),
(23, 1),
(28, 3),
(29, 1),
(30, 1),
(31, 1),
(32, 1),
(35, 1),
(36, 1),
(44, 1),
(58, 2),
(59, 1),
(63, 1),
(69, 1),
(71, 1),
(87, 1),
(93, 1)],
[(0, 1), (2, 2), (76, 1)],
[(0, 2), (1, 1), (22, 2), (23, 1), (48, 1)],
[(0, 2),
(1, 1),
(4, 3),
(5, 1),
(9, 1),
(10, 1),
(11, 2),
(12, 1),
(14, 2),
(15, 5),
(16, 1),
(18, 1),
(21, 3),
(22, 3),
(23, 3),
(26, 1),
(28, 1),
(39, 1),
(44, 1),
(51, 1),
(63, 1),
(65, 1),
(69, 1)],
[(0, 1), (12, 1), (15, 1), (18, 2), (23, 3), (27, 1)],
[(0, 3),
(1, 1),
(4, 3),
(9, 2),
(10, 1),
(11, 1),
(13, 1),
(14, 2),
(15, 3),
(16, 1),
(18, 3),
(20, 1),
(22, 1),
(23, 4),
(26, 3),
(27, 2),
(28, 2),
(30, 1),
(33, 1),
(35, 3),
(38, 1),
(39, 1),
(44, 1),
(54, 1),
(66, 1),
(67, 1),
(72, 1),
(83, 1)],
[(11, 1),
(14, 1),
(18, 1),
(21, 1),
(22, 1),
(23, 1),
(26, 1),
(28, 1),
(36, 1),
(44, 1),
(62, 1),
(69, 1)],
[(0, 4),
(1, 1),
(3, 1),
(4, 37),
(7, 3),
(8, 2),
(9, 1),
(11, 7),
(12, 3),
(14, 27),
(15, 18),
(16, 1),
(18, 52),
(19, 2),
(20, 1),
(21, 7),
(22, 2),
(23, 32),
(25, 2),
(27, 10),
(28, 1),
(29, 2),
(30, 5),
(31, 7),
(33, 2),
(34, 5),
(35, 21),
(36, 2),
(37, 2),
(38, 25),
(39, 1),
(42, 1),
(43, 5),
(44, 1),
(49, 2),
(51, 9),
(52, 6),
(53, 8),
(56, 3),
(57, 5),
(58, 2),
(60, 6),
(62, 6),
(66, 8),
(67, 1),
(69, 5),
(71, 1),
(75, 3),
(84, 1),
(85, 3),
(86, 2),
(90, 1),
(91, 1),
(98, 1),
(99, 1),
(100, 2)],
[(4, 1),
(5, 1),
(10, 1),
(11, 1),
(13, 3),
(18, 2),
(21, 2),
(23, 1),
(44, 1),
(58, 1)],
[(0, 2),
(4, 3),
(11, 1),
(18, 2),
(19, 3),
(23, 3),
(33, 2),
(34, 4),
(42, 4),
(45, 1),
(46, 1),
(69, 2),
(101, 1)],
[(23, 1), (28, 1)],
[(0, 4), (4, 1), (11, 2), (14, 1), (15, 1), (59, 1)],
[(11, 1), (15, 1), (16, 1), (21, 1), (23, 1), (27, 1)],
[(0, 3),
(1, 2),
(4, 2),
(7, 1),
(9, 1),
(14, 6),
(15, 2),
(23, 2),
(24, 1),
(27, 2),
(28, 1),
(29, 1),
(30, 1),
(41, 1),
(44, 1),
(48, 1),
(56, 1),
(61, 1),
(63, 1),
(68, 1),
(71, 1),
(74, 2)],
[(0, 2), (1, 1), (11, 1), (15, 1), (18, 1), (22, 3), (65, 2), (71, 1)],
[(0, 2),
(5, 2),
(13, 1),
(14, 1),
(23, 1),
(24, 1),
(26, 1),
(28, 1),
(29, 1),
(38, 2),
(44, 2)],
[(2, 1),
(3, 1),
(4, 3),
(7, 6),
(12, 1),
(13, 1),
(14, 2),
(16, 2),
(18, 1),
(20, 1),
(23, 1),
(27, 1),
(29, 1),
(31, 1),
(34, 1),
(37, 1),
(39, 1),
(44, 2),
(50, 1),
(51, 2),
(53, 1),
(58, 1),
(63, 1),
(64, 1),
(66, 1),
(67, 1),
(82, 1),
(87, 1)],
[(1, 1), (28, 1)],
[(0, 1), (1, 1), (22, 2), (102, 1)],
[(0, 4),
(4, 25),
(6, 1),
(7, 3),
(8, 1),
(11, 2),
(12, 1),
(13, 1),
(14, 13),
(15, 15),
(18, 20),
(19, 1),
(20, 2),
(21, 4),
(23, 12),
(24, 1),
(27, 3),
(28, 3),
(29, 1),
(30, 1),
(31, 2),
(33, 4),
(35, 16),
(36, 1),
(38, 15),
(39, 2),
(42, 3),
(43, 7),
(44, 2),
(49, 2),
(51, 2),
(52, 1),
(53, 4),
(54, 1),
(57, 1),
(58, 3),
(59, 1),
(61, 2),
(62, 3),
(64, 4),
(67, 1),
(69, 3),
(70, 5),
(71, 1),
(72, 1),
(75, 3),
(78, 1),
(83, 1),
(93, 4),
(98, 1)],
[(5, 1), (13, 1), (15, 1), (22, 5), (28, 1), (44, 1)],
[(0, 1), (22, 5), (28, 1), (65, 1), (73, 1)],
[(0, 5),
(1, 2),
(4, 3),
(5, 1),
(8, 1),
(9, 1),
(10, 1),
(11, 1),
(13, 1),
(14, 2),
(16, 1),
(18, 2),
(19, 1),
(21, 1),
(22, 16),
(23, 4),
(28, 3),
(30, 2),
(32, 1),
(48, 1),
(64, 2),
(67, 1),
(71, 1),
(82, 1),
(87, 1),
(92, 1),
(93, 1),
(103, 1)],
[(0, 2), (7, 1), (11, 1), (12, 1), (17, 1), (28, 1), (63, 1)],
[(0, 1), (1, 1), (28, 2), (48, 1), (73, 1)],
[(0, 1), (5, 5), (11, 1), (14, 1), (15, 1), (28, 2), (29, 1)],
[(0, 1), (11, 1), (23, 1), (49, 1), (58, 1), (70, 1), (71, 3)],
[(28, 3)],
[(0, 2),
(2, 4),
(12, 1),
(14, 3),
(15, 2),
(18, 1),
(19, 1),
(21, 1),
(22, 3),
(23, 1),
(28, 1),
(44, 2),
(50, 1)],
[(1, 1),
(4, 1),
(5, 5),
(6, 1),
(14, 1),
(15, 4),
(23, 2),
(28, 1),
(35, 1),
(63, 1)],
[(0, 2),
(1, 3),
(4, 1),
(9, 1),
(19, 1),
(22, 3),
(23, 2),
(27, 1),
(28, 4),
(42, 1),
(44, 1),
(45, 1),
(50, 1),
(65, 1),
(89, 1)],
[(0, 1),
(1, 1),
(3, 3),
(4, 2),
(5, 1),
(7, 1),
(11, 2),
(14, 2),
(15, 1),
(18, 1),
(22, 3),
(28, 1),
(36, 1),
(38, 1),
(44, 1),
(52, 1),
(65, 1),
(99, 1)],
[(0, 2), (14, 1), (28, 1)],
[(0, 1),
(3, 1),
(4, 11),
(7, 2),
(10, 1),
(11, 3),
(12, 1),
(13, 1),
(14, 7),
(15, 12),
(18, 10),
(19, 2),
(21, 3),
(22, 3),
(23, 2),
(24, 1),
(26, 2),
(28, 1),
(36, 1),
(38, 2),
(44, 3),
(50, 1),
(51, 1),
(57, 1),
(68, 1),
(94, 1)],
[(0, 1), (19, 1), (22, 5), (44, 1)],
[(0, 2),
(1, 1),
(14, 2),
(18, 2),
(19, 2),
(22, 3),
(23, 1),
(27, 1),
(28, 1),
(37, 1),
(48, 1),
(70, 1)],
[(1, 1), (4, 1), (56, 1)],
[(0, 1), (14, 1), (15, 4), (18, 1), (21, 1), (23, 1), (28, 1)],
[(6, 1),
(9, 1),
(11, 1),
(12, 2),
(14, 2),
(15, 2),
(18, 1),
(19, 1),
(22, 3),
(28, 1),
(56, 1),
(59, 1),
(67, 1)],
[(0, 1),
(1, 1),
(9, 1),
(11, 1),
(14, 1),
(22, 4),
(28, 1),
(34, 1),
(97, 1)],
[(1, 1),
(12, 1),
(13, 2),
(14, 6),
(22, 1),
(28, 1),
(44, 2),
(67, 1),
(70, 1),
(73, 1)],
[(0, 1),
(4, 2),
(7, 2),
(9, 1),
(11, 2),
(14, 3),
(15, 3),
(16, 1),
(17, 1),
(18, 1),
(19, 1),
(23, 1),
(29, 1),
(30, 1),
(52, 1)],
[(0, 1),
(1, 1),
(4, 1),
(9, 1),
(13, 2),
(14, 1),
(15, 1),
(19, 1),
(22, 5),
(23, 1),
(28, 3),
(94, 1)],
[(1, 1), (22, 5), (28, 3)],
[(0, 4), (1, 1), (11, 1), (14, 1), (28, 2)],
[(4, 2),
(5, 1),
(7, 3),
(8, 1),
(9, 1),
(11, 1),
(12, 2),
(15, 2),
(16, 1),
(18, 1),
(19, 1),
(21, 2),
(22, 1),
(23, 3),
(26, 2),
(38, 1),
(44, 1),
(58, 1),
(66, 1)],
[(4, 1), (7, 1), (14, 2), (15, 1)],
[(0, 1),
(4, 1),
(5, 1),
(6, 1),
(11, 3),
(12, 1),
(14, 7),
(15, 1),
(23, 1),
(24, 1),
(38, 1)],
[(4, 4),
(7, 3),
(10, 2),
(11, 2),
(12, 1),
(13, 2),
(14, 3),
(15, 7),
(18, 3),
(19, 1),
(21, 4),
(23, 4),
(25, 1),
(29, 1),
(30, 1),
(31, 1),
(32, 1),
(35, 1),
(39, 1),
(44, 3),
(53, 5),
(56, 2),
(57, 1),
(58, 2),
(60, 1),
(63, 1),
(67, 1)],
[(5, 1), (7, 1), (16, 1), (22, 6), (28, 2), (42, 1), (56, 1), (68, 1)],
[(0, 2), (2, 1), (8, 1)],
[(0, 2), (7, 1), (11, 1), (14, 3), (15, 2), (73, 1)],
[(0, 4), (9, 1), (11, 3), (14, 2)],
[(9, 1), (23, 1), (28, 2), (56, 1)],
[(0, 2), (11, 1), (14, 1), (67, 1)],
[(0, 5),
(5, 1),
(11, 1),
(14, 2),
(15, 1),
(16, 1),
(18, 1),
(21, 1),
(23, 1),
(35, 1),
(44, 1),
(67, 1),
(82, 1)],
[(0, 1),
(1, 1),
(4, 5),
(5, 1),
(9, 1),
(11, 1),
(14, 2),
(15, 3),
(18, 1),
(22, 1),
(23, 2),
(25, 1),
(28, 2),
(29, 1),
(33, 2),
(36, 1),
(38, 1),
(63, 1),
(67, 1),
(71, 1)],
[(0, 3),
(1, 4),
(5, 1),
(11, 1),
(23, 1),
(28, 1),
(29, 1),
(38, 1),
(56, 1),
(77, 1),
(93, 1)],
[(0, 1),
(1, 1),
(3, 1),
(11, 2),
(14, 2),
(15, 2),
(22, 1),
(28, 1),
(29, 1)],
[(4, 1), (6, 1), (14, 1), (15, 1), (18, 1), (21, 1), (67, 1)],
[(0, 2),
(3, 1),
(4, 1),
(12, 3),
(15, 3),
(16, 3),
(18, 3),
(21, 1),
(24, 1),
(27, 1),
(28, 1),
(29, 1),
(37, 1),
(38, 1),
(44, 1),
(50, 1),
(52, 1),
(62, 2),
(68, 1),
(71, 1)],
[(4, 4),
(7, 3),
(14, 1),
(15, 4),
(16, 2),
(18, 2),
(19, 2),
(23, 5),
(24, 1),
(26, 1),
(27, 1),
(28, 2),
(29, 1),
(30, 1),
(33, 1),
(35, 1),
(41, 1),
(44, 1),
(56, 1),
(64, 6),
(93, 1)],
[(0, 1), (13, 2), (14, 2), (15, 2), (22, 1), (28, 2), (29, 1), (36, 1)],
[(0, 3),
(1, 1),
(4, 11),
(7, 1),
(11, 4),
(14, 16),
(15, 8),
(18, 4),
(21, 8),
(24, 1),
(25, 1),
(26, 2),
(27, 1),
(30, 2),
(31, 2),
(37, 1),
(38, 23),
(49, 3),
(51, 11),
(52, 1),
(53, 4),
(57, 1),
(58, 1),
(60, 4),
(62, 2),
(66, 2),
(67, 1),
(69, 1),
(70, 1),
(83, 2),
(86, 1),
(90, 1),
(103, 1)],
[(0, 3),
(1, 1),
(4, 7),
(7, 2),
(8, 1),
(11, 1),
(14, 6),
(15, 4),
(18, 6),
(19, 1),
(20, 1),
(22, 1),
(23, 6),
(26, 1),
(27, 3),
(28, 6),
(34, 2),
(35, 2),
(38, 3),
(41, 1),
(42, 2),
(43, 1),
(44, 1),
(45, 1),
(52, 1),
(53, 1),
(57, 1),
(62, 1),
(64, 1),
(69, 1)],
[(0, 1),
(1, 2),
(19, 1),
(22, 2),
(23, 1),
(28, 1),
(56, 1),
(65, 1),
(68, 1)],
[(0, 1),
(4, 2),
(9, 1),
(11, 6),
(14, 4),
(15, 2),
(18, 6),
(29, 1),
(33, 1),
(35, 1),
(38, 1),
(52, 1),
(69, 1)],
[(1, 1), (7, 1), (12, 1), (16, 2), (29, 1)],
[(0, 1),
(1, 2),
(5, 1),
(9, 1),
(11, 1),
(16, 1),
(18, 1),
(22, 4),
(23, 2),
(28, 1)],
[(0, 2),
(4, 1),
(5, 1),
(9, 1),
(11, 1),
(12, 1),
(14, 6),
(15, 4),
(16, 1),
(21, 1),
(22, 1),
(23, 1),
(30, 1),
(36, 1),
(41, 1),
(44, 3),
(54, 1),
(56, 1),
(58, 1),
(67, 1)],
[(1, 1), (7, 1), (11, 1), (15, 1), (22, 1), (23, 1), (28, 1), (50, 1)],
[(0, 1), (1, 2), (11, 1), (22, 1), (28, 3), (85, 1)],
[(0, 1), (1, 1), (28, 1)],
[(0, 3),
(2, 1),
(15, 1),
(16, 1),
(21, 1),
(22, 5),
(28, 1),
(29, 1),
(56, 1),
(73, 1),
(92, 2)],
[(14, 1), (29, 1), (30, 1), (41, 1), (44, 2), (59, 1)],
[(0, 1)],
[(2, 1),
(4, 5),
(7, 2),
(11, 1),
(12, 1),
(15, 2),
(16, 1),
(18, 2),
(21, 1),
(22, 4),
(23, 1),
(26, 1),
(28, 2),
(31, 2),
(32, 2),
(35, 1),
(36, 1),
(38, 3),
(39, 1),
(57, 3),
(60, 1),
(62, 1),
(66, 1)],
[(0, 1),
(6, 1),
(9, 1),
(17, 3),
(18, 2),
(21, 1),
(22, 2),
(23, 1),
(28, 1),
(44, 1),
(73, 1),
(82, 1)],
[(0, 6),
(1, 1),
(3, 1),
(4, 2),
(6, 1),
(7, 1),
(9, 1),
(11, 3),
(12, 1),
(14, 8),
(15, 5),
(16, 1),
(18, 4),
(21, 1),
(22, 1),
(23, 3),
(28, 1),
(29, 1),
(30, 1),
(35, 1),
(50, 1),
(52, 1),
(53, 2),
(55, 1),
(56, 2),
(58, 2),
(63, 1),
(67, 1),
(93, 1)],
[(0, 1),
(7, 1),
(11, 2),
(14, 2),
(15, 2),
(22, 1),
(28, 4),
(29, 1),
(39, 1),
(50, 1)],
[(0, 3),
(1, 2),
(9, 2),
(11, 1),
(16, 1),
(19, 2),
(23, 2),
(26, 1),
(28, 2),
(44, 1),
(67, 1),
(93, 1),
(104, 1)],
[(4, 8),
(7, 2),
(11, 1),
(13, 2),
(14, 7),
(15, 9),
(17, 1),
(18, 14),
(19, 1),
(21, 5),
(23, 5),
(28, 1),
(29, 1),
(30, 1),
(31, 1),
(32, 1),
(35, 5),
(36, 3),
(38, 3),
(44, 2),
(53, 1),
(56, 1),
(58, 1),
(62, 1),
(63, 1)],
[(0, 2),
(1, 4),
(4, 1),
(9, 3),
(11, 3),
(14, 2),
(15, 1),
(22, 2),
(29, 1),
(34, 1),
(76, 2),
(85, 6)],
[(0, 1), (11, 1), (23, 1)],
[(9, 1), (11, 1), (14, 1), (16, 1), (22, 3)]]
In the output, the inner list represent a document, where the tuples indicate the index of the word and its frequency. For example, for the first document [(0, 1), (1, 1), (2, 2)], the 0th word is repeated once, then the 1st word repeated once, and the 2nd word repeated twice. What is the 0th word? It corresponds to the index of words in dict_
.
Then, we can implement the LDA model by creating the object and passing the required arguments:
Lda = gensim.models.ldamodel.LdaModel
lda_bristol = Lda(corpus= doc_term_matrix, num_topics =6, id2word =dict_, random_state=0, eval_every=None)
To generate an LDA model, we input the corpus (doc_term_matrix
) to it together with several parameters.
num_topics: indicates the number of topics will be used
id2word: is the vocabulary generated from the
corpora.Dictionary()
functionrandom_state: used for reproducibility (because we need to randomly initialize some embeddings, so everytime you run it might result into different outputs)
eval_every: Log perplexity (an evaluation metric for the model) is estimated every that many updates. For more parameters to set up, check its official website: https://radimrehurek.com/gensim/models/ldamodel.html
We can see how the topic is represented:
lda_bristol.print_topics()
[(0,
'0.137*"\'fast_food\'" + 0.134*"\'park\'" + 0.065*"\'convenience\'" + 0.055*"\'hairdresser\'" + 0.045*"\'cafe\'" + 0.037*"\'clothes\'" + 0.032*"\'pub\'" + 0.031*"\'playground\'" + 0.030*"\'pitch\'" + 0.027*"\'school\'"'),
(1,
'0.108*"\'hairdresser\'" + 0.089*"\'fast_food\'" + 0.070*"\'pub\'" + 0.059*"\'cafe\'" + 0.057*"\'restaurant\'" + 0.050*"\'convenience\'" + 0.042*"\'pitch\'" + 0.038*"\'park\'" + 0.037*"\'car_dealership\'" + 0.031*"\'school\'"'),
(2,
'0.112*"\'pitch\'" + 0.067*"\'cafe\'" + 0.065*"\'pub\'" + 0.059*"\'school\'" + 0.059*"\'park\'" + 0.056*"\'restaurant\'" + 0.038*"\'fast_food\'" + 0.034*"\'hairdresser\'" + 0.034*"\'clothes\'" + 0.029*"\'playground\'"'),
(3,
'0.126*"\'restaurant\'" + 0.095*"\'cafe\'" + 0.084*"\'fast_food\'" + 0.071*"\'hairdresser\'" + 0.054*"\'pub\'" + 0.044*"\'clothes\'" + 0.040*"\'bar\'" + 0.027*"\'supermarket\'" + 0.026*"\'park\'" + 0.022*"\'beauty_shop\'"'),
(4,
'0.073*"\'park\'" + 0.071*"\'restaurant\'" + 0.068*"\'school\'" + 0.064*"\'pub\'" + 0.061*"\'fast_food\'" + 0.055*"\'playground\'" + 0.055*"\'convenience\'" + 0.055*"\'cafe\'" + 0.054*"\'hairdresser\'" + 0.041*"\'pitch\'"'),
(5,
'0.237*"\'pitch\'" + 0.062*"\'school\'" + 0.058*"\'convenience\'" + 0.049*"\'hairdresser\'" + 0.042*"\'park\'" + 0.038*"\'fast_food\'" + 0.033*"\'pub\'" + 0.033*"\'restaurant\'" + 0.029*"\'playground\'" + 0.027*"\'cafe\'"')]
As can be seen, the 6 topics (listed as 0 - 5) are reprsented as a distribution of words (place types here), and each of the 105 unique words (palce types) is given weights based on the topics. In other words, it implies which of the words (place types) dominate the topics. For example, topic 1 is moare about “fast food” and “park” while topic 2 is more about “hairdresser” and topic 5 is about “pitch”.
We can also only show the top 5 words (place types) for each topic by using code:
lda_bristol.print_topics(num_topics = 6, num_words=5)
[(0,
'0.137*"\'fast_food\'" + 0.134*"\'park\'" + 0.065*"\'convenience\'" + 0.055*"\'hairdresser\'" + 0.045*"\'cafe\'"'),
(1,
'0.108*"\'hairdresser\'" + 0.089*"\'fast_food\'" + 0.070*"\'pub\'" + 0.059*"\'cafe\'" + 0.057*"\'restaurant\'"'),
(2,
'0.112*"\'pitch\'" + 0.067*"\'cafe\'" + 0.065*"\'pub\'" + 0.059*"\'school\'" + 0.059*"\'park\'"'),
(3,
'0.126*"\'restaurant\'" + 0.095*"\'cafe\'" + 0.084*"\'fast_food\'" + 0.071*"\'hairdresser\'" + 0.054*"\'pub\'"'),
(4,
'0.073*"\'park\'" + 0.071*"\'restaurant\'" + 0.068*"\'school\'" + 0.064*"\'pub\'" + 0.061*"\'fast_food\'"'),
(5,
'0.237*"\'pitch\'" + 0.062*"\'school\'" + 0.058*"\'convenience\'" + 0.049*"\'hairdresser\'" + 0.042*"\'park\'"')]
Next, we can check how each document (region) are represented using the topic:
count = 0
for i in lda_bristol[doc_term_matrix]:
print("doc: ", count, i)
count+=1
doc: 0 [(0, 0.83217597), (1, 0.033423353), (2, 0.03352079), (3, 0.03337131), (4, 0.033680912), (5, 0.033827636)]
doc: 1 [(1, 0.9699462)]
doc: 2 [(0, 0.94747126), (1, 0.010519896), (2, 0.010488585), (3, 0.010489068), (4, 0.010525895), (5, 0.01050526)]
doc: 3 [(0, 0.014079193), (1, 0.29682362), (2, 0.014034042), (3, 0.013978785), (4, 0.014052106), (5, 0.6470323)]
doc: 4 [(2, 0.7453384), (5, 0.21913613)]
doc: 5 [(0, 0.5495233), (1, 0.40251347), (2, 0.011982679), (3, 0.011978997), (4, 0.011991423), (5, 0.012010168)]
doc: 6 [(0, 0.015247152), (1, 0.92353535), (2, 0.01531361), (3, 0.015313374), (4, 0.015321066), (5, 0.01526944)]
doc: 7 [(3, 0.9931071)]
doc: 8 [(0, 0.0105504235), (1, 0.9473252), (2, 0.010540981), (3, 0.010473925), (4, 0.010549425), (5, 0.01056005)]
doc: 9 [(0, 0.5802037), (1, 0.01679723), (2, 0.01682109), (3, 0.016754672), (4, 0.016824938), (5, 0.35259834)]
doc: 10 [(1, 0.9634004)]
doc: 11 [(1, 0.15240093), (3, 0.48479685), (4, 0.35438988)]
doc: 12 [(0, 0.19156682), (1, 0.47174674), (3, 0.33012822)]
doc: 13 [(0, 0.041998807), (1, 0.04183528), (2, 0.042015024), (3, 0.04176866), (4, 0.042039167), (5, 0.79034305)]
doc: 14 [(3, 0.43310913), (4, 0.54282767)]
doc: 15 [(0, 0.021173846), (1, 0.020979095), (2, 0.021020494), (3, 0.020898085), (4, 0.021064946), (5, 0.89486355)]
doc: 16 [(0, 0.05592313), (1, 0.056297045), (2, 0.056242563), (3, 0.055985115), (4, 0.71929425), (5, 0.05625785)]
doc: 17 [(4, 0.7117077), (5, 0.26787984)]
doc: 18 [(1, 0.97662306)]
doc: 19 [(0, 0.20986126), (1, 0.48722824), (4, 0.2948858)]
doc: 20 [(0, 0.015258109), (1, 0.9235579), (2, 0.015270039), (3, 0.015304093), (4, 0.015313634), (5, 0.015296179)]
doc: 21 [(0, 0.021061739), (1, 0.021058284), (2, 0.021092903), (3, 0.021000056), (4, 0.8945658), (5, 0.02122121)]
doc: 22 [(0, 0.0112183215), (1, 0.94395834), (2, 0.011209111), (3, 0.0111712), (4, 0.011196391), (5, 0.0112466235)]
doc: 23 [(0, 0.0419544), (1, 0.79038066), (2, 0.04186972), (3, 0.041971896), (4, 0.04197297), (5, 0.04185034)]
doc: 24 [(0, 0.3966683), (1, 0.56587833)]
doc: 25 [(0, 0.10900296), (2, 0.8616712)]
doc: 26 [(0, 0.9505633)]
doc: 27 [(0, 0.6397539), (4, 0.32659358)]
doc: 28 [(0, 0.9234856), (1, 0.015348032), (2, 0.015269217), (3, 0.015277718), (4, 0.015320138), (5, 0.015299315)]
doc: 29 [(0, 0.9234167), (1, 0.015268485), (2, 0.015328541), (3, 0.015233515), (4, 0.015328568), (5, 0.015424265)]
doc: 30 [(1, 0.10323222), (2, 0.75720674), (3, 0.13234371)]
doc: 31 [(5, 0.96138394)]
doc: 32 [(0, 0.75392085), (5, 0.21686251)]
doc: 33 [(0, 0.9064717), (1, 0.018733587), (2, 0.0187056), (3, 0.018651485), (4, 0.018765299), (5, 0.018672269)]
doc: 34 [(0, 0.42057648), (2, 0.1394032), (3, 0.42513642)]
doc: 35 [(0, 0.47034827), (2, 0.4942027)]
doc: 36 [(0, 0.37939805), (1, 0.5592075), (2, 0.015399452), (3, 0.0152483545), (4, 0.015329889), (5, 0.015416824)]
doc: 37 [(1, 0.82384545), (3, 0.15888834)]
doc: 38 [(0, 0.58102053), (1, 0.083692044), (2, 0.083904475), (3, 0.0835684), (4, 0.08408199), (5, 0.08373257)]
doc: 39 [(0, 0.016821997), (1, 0.36672425), (2, 0.016779823), (3, 0.016748136), (4, 0.016805448), (5, 0.5661203)]
doc: 40 [(0, 0.33030936), (5, 0.6322819)]
doc: 41 [(0, 0.7179962), (1, 0.05653706), (2, 0.056529474), (3, 0.05626602), (4, 0.056618016), (5, 0.05605324)]
doc: 42 [(5, 0.9533654)]
doc: 43 [(0, 0.010577291), (1, 0.010562004), (2, 0.01050544), (3, 0.010504081), (4, 0.010525369), (5, 0.9473258)]
doc: 44 [(3, 0.59086114), (4, 0.38508675)]
doc: 45 [(1, 0.6228953), (5, 0.34167024)]
doc: 46 [(0, 0.18574491), (1, 0.5077382), (5, 0.28909826)]
doc: 47 [(0, 0.01527985), (1, 0.0153401345), (2, 0.015229504), (3, 0.0152205005), (4, 0.015241117), (5, 0.9236889)]
doc: 48 [(4, 0.95048773)]
doc: 49 [(0, 0.018689334), (1, 0.9065497), (2, 0.0186589), (3, 0.01868378), (4, 0.018718937), (5, 0.018699413)]
doc: 50 [(0, 0.01288401), (1, 0.012881098), (2, 0.012910637), (3, 0.012841318), (4, 0.012920735), (5, 0.93556225)]
doc: 51 [(0, 0.033626616), (1, 0.83221865), (2, 0.033518806), (3, 0.033577878), (4, 0.03354657), (5, 0.033511527)]
doc: 52 [(4, 0.9772423)]
doc: 53 [(0, 0.08334324), (1, 0.08334228), (2, 0.083343625), (3, 0.5832848), (4, 0.08334296), (5, 0.083343126)]
doc: 54 [(0, 0.90625477), (1, 0.018725852), (2, 0.018812835), (3, 0.018616742), (4, 0.01874055), (5, 0.018849256)]
doc: 55 [(0, 0.021073613), (1, 0.02100332), (2, 0.021019064), (3, 0.020926744), (4, 0.02105007), (5, 0.89492714)]
doc: 56 [(0, 0.0421637), (1, 0.04201479), (2, 0.042009104), (3, 0.041954547), (4, 0.04212894), (5, 0.78972894)]
doc: 57 [(0, 0.01867386), (1, 0.018603817), (2, 0.018683227), (3, 0.018581433), (4, 0.018658018), (5, 0.9067997)]
doc: 58 [(0, 0.24652027), (1, 0.011210666), (2, 0.011287659), (3, 0.011193128), (4, 0.70847946), (5, 0.011308781)]
doc: 59 [(1, 0.06334552), (4, 0.922001)]
doc: 60 [(0, 0.3892188), (1, 0.5989765)]
doc: 61 [(0, 0.9063315), (1, 0.0187126), (2, 0.018739639), (3, 0.018624835), (4, 0.01870965), (5, 0.018881759)]
doc: 62 [(0, 0.016811784), (1, 0.016865281), (2, 0.016831316), (3, 0.016815526), (4, 0.9158751), (5, 0.016801054)]
doc: 63 [(1, 0.9663285)]
doc: 64 [(0, 0.35368788), (1, 0.62138885)]
doc: 65 [(0, 0.32114798), (5, 0.6467774)]
doc: 66 [(0, 0.012014329), (1, 0.011995733), (2, 0.012052908), (3, 0.011980748), (4, 0.0120557435), (5, 0.9399006)]
doc: 67 [(4, 0.9709791)]
doc: 68 [(5, 0.97948265)]
doc: 69 [(0, 0.6576848), (5, 0.3068854)]
doc: 70 [(1, 0.06028744), (5, 0.9022441)]
doc: 71 [(3, 0.9617652)]
doc: 72 [(0, 0.010494314), (1, 0.94755286), (2, 0.0104817515), (3, 0.010475555), (4, 0.010497967), (5, 0.010497536)]
doc: 73 [(0, 0.041996334), (1, 0.042027324), (2, 0.78932816), (3, 0.042121816), (4, 0.04223653), (5, 0.042289846)]
doc: 74 [(0, 0.4964167), (1, 0.010490433), (2, 0.010525827), (3, 0.010451756), (4, 0.0105173355), (5, 0.461598)]
doc: 75 [(0, 0.021169052), (1, 0.02093616), (2, 0.021022046), (3, 0.020891258), (4, 0.021063143), (5, 0.8949183)]
doc: 76 [(0, 0.018785741), (1, 0.018716522), (2, 0.018691264), (3, 0.018651832), (4, 0.018748464), (5, 0.90640616)]
doc: 77 [(0, 0.024107426), (1, 0.024092905), (2, 0.024069294), (3, 0.024112498), (4, 0.8795775), (5, 0.024040336)]
doc: 78 [(0, 0.02396677), (1, 0.023943976), (2, 0.023985198), (3, 0.023893578), (4, 0.88016886), (5, 0.024041627)]
doc: 79 [(0, 0.4640192), (5, 0.5022988)]
doc: 80 [(0, 0.0211191), (1, 0.021120423), (2, 0.021026827), (3, 0.021018997), (4, 0.894659), (5, 0.021055674)]
doc: 81 [(0, 0.024260448), (1, 0.8793815), (2, 0.024108082), (3, 0.023943907), (4, 0.02415126), (5, 0.024154807)]
doc: 82 [(0, 0.28182244), (5, 0.687575)]
doc: 83 [(0, 0.013948811), (1, 0.013964614), (2, 0.013984908), (3, 0.013937109), (4, 0.013980689), (5, 0.9301838)]
doc: 84 [(0, 0.95795405)]
doc: 85 [(0, 0.014008018), (1, 0.014062392), (2, 0.014014296), (3, 0.0139524825), (4, 0.014005432), (5, 0.9299574)]
doc: 86 [(0, 0.01867866), (1, 0.018671244), (2, 0.01868873), (3, 0.018631762), (4, 0.018708404), (5, 0.9066212)]
doc: 87 [(0, 0.021064535), (1, 0.020948656), (2, 0.021076178), (3, 0.020881927), (4, 0.89483035), (5, 0.021198368)]
doc: 88 [(0, 0.08879313), (1, 0.5423661), (3, 0.36012414)]
doc: 89 [(0, 0.014018333), (1, 0.92989856), (2, 0.013996465), (3, 0.014062178), (4, 0.014035775), (5, 0.013988684)]
doc: 90 [(0, 0.024046516), (1, 0.024001658), (2, 0.024101526), (3, 0.02392894), (4, 0.024063664), (5, 0.8798577)]
doc: 91 [(0, 0.011223428), (1, 0.01124866), (2, 0.011226683), (3, 0.943884), (4, 0.011204827), (5, 0.011212417)]
doc: 92 [(0, 0.041950006), (1, 0.041874222), (2, 0.04209734), (3, 0.04174705), (4, 0.042265154), (5, 0.79006624)]
doc: 93 [(1, 0.9759825)]
doc: 94 [(0, 0.011213961), (1, 0.011174938), (2, 0.011207387), (3, 0.011138739), (4, 0.011252615), (5, 0.94401234)]
doc: 95 [(0, 0.7896238), (1, 0.041925862), (2, 0.04218879), (3, 0.04181452), (4, 0.042247158), (5, 0.042199828)]
doc: 96 [(0, 0.25610042), (1, 0.014067966), (2, 0.21105102), (3, 0.014058795), (4, 0.014074898), (5, 0.49064693)]
doc: 97 [(0, 0.015248661), (1, 0.0152765), (2, 0.015233273), (3, 0.015176626), (4, 0.015232912), (5, 0.923832)]
doc: 98 [(1, 0.7172456), (4, 0.26102555)]
doc: 99 [(0, 0.012026619), (1, 0.01197395), (2, 0.012021277), (3, 0.011938577), (4, 0.0120150475), (5, 0.94002455)]
doc: 100 [(0, 0.26893362), (1, 0.011203375), (2, 0.6862145), (3, 0.011181182), (4, 0.011210649), (5, 0.0112566585)]
doc: 101 [(1, 0.57775193), (5, 0.40118617)]
doc: 102 [(0, 0.02401939), (1, 0.024124885), (2, 0.02402478), (3, 0.023985105), (4, 0.8798038), (5, 0.024042035)]
doc: 103 [(0, 0.010511529), (1, 0.94743043), (2, 0.010506749), (3, 0.010501352), (4, 0.010532884), (5, 0.010517088)]
doc: 104 [(0, 0.012037567), (1, 0.9398515), (2, 0.0120121585), (3, 0.011993215), (4, 0.0120630255), (5, 0.012042528)]
doc: 105 [(0, 0.028054547), (1, 0.028047942), (2, 0.028201913), (3, 0.027930774), (4, 0.85939765), (5, 0.028367158)]
doc: 106 [(1, 0.9835291)]
doc: 107 [(0, 0.0153382635), (1, 0.015288379), (2, 0.015297467), (3, 0.015275782), (4, 0.9234789), (5, 0.015321237)]
doc: 108 [(0, 0.29619956), (3, 0.69059914)]
doc: 109 [(4, 0.42108235), (5, 0.54835486)]
doc: 110 [(0, 0.05575243), (1, 0.055796694), (2, 0.05610549), (3, 0.055654056), (4, 0.056028377), (5, 0.72066295)]
doc: 111 [(0, 0.8800459), (1, 0.0239903), (2, 0.02399281), (3, 0.023915006), (4, 0.024053225), (5, 0.024002785)]
doc: 112 [(0, 0.19042303), (1, 0.3799925), (5, 0.41558063)]
doc: 113 [(0, 0.016708503), (1, 0.016716396), (2, 0.016793879), (3, 0.016681613), (4, 0.016742788), (5, 0.9163568)]
doc: 114 [(0, 0.028290857), (1, 0.028185256), (2, 0.028139958), (3, 0.028093625), (4, 0.028050905), (5, 0.8592394)]
doc: 115 [(0, 0.015283785), (1, 0.015258944), (2, 0.015261443), (3, 0.015212201), (4, 0.015226945), (5, 0.92375666)]
doc: 116 [(1, 0.9759489)]
doc: 117 [(0, 0.028060684), (1, 0.8601383), (2, 0.027938543), (3, 0.027931118), (4, 0.02794689), (5, 0.027984433)]
doc: 118 [(0, 0.02402835), (1, 0.8803231), (2, 0.023921782), (3, 0.023892265), (4, 0.023880765), (5, 0.02395373)]
doc: 119 [(1, 0.059910275), (4, 0.8052879), (5, 0.12806891)]
doc: 120 [(0, 0.01200248), (1, 0.0120085385), (2, 0.012029742), (3, 0.011995779), (4, 0.93996805), (5, 0.011995415)]
doc: 121 [(1, 0.96185166)]
doc: 122 [(1, 0.6876246), (2, 0.12054685), (3, 0.18381487)]
doc: 123 [(0, 0.86380005), (5, 0.110335164)]
doc: 124 [(1, 0.95060456)]
doc: 125 [(1, 0.8214463), (3, 0.16751465)]
doc: 126 [(0, 0.35699138), (1, 0.011997002), (2, 0.012054889), (3, 0.011997836), (4, 0.012003806), (5, 0.594955)]
doc: 127 [(0, 0.83103865), (1, 0.033561483), (2, 0.033882987), (3, 0.033418506), (4, 0.03364355), (5, 0.034454804)]
doc: 128 [(0, 0.8464992), (1, 0.010536389), (2, 0.11134751), (3, 0.010504723), (4, 0.010544508), (5, 0.01056767)]
doc: 129 [(0, 0.015286526), (1, 0.015262246), (2, 0.015305827), (3, 0.01522302), (4, 0.01532258), (5, 0.9235998)]
doc: 130 [(0, 0.5510388), (1, 0.0209471), (2, 0.021063846), (3, 0.020881444), (4, 0.020984478), (5, 0.36508435)]
doc: 131 [(0, 0.5810676), (1, 0.08369055), (2, 0.08389685), (3, 0.08356772), (4, 0.084046334), (5, 0.083730936)]
doc: 132 [(5, 0.96003604)]
doc: 133 [(1, 0.98131394)]
doc: 134 [(4, 0.67479074), (5, 0.28981197)]
doc: 135 [(2, 0.9533968)]
doc: 136 [(1, 0.4275891), (4, 0.33731458), (5, 0.21768194)]
doc: 137 [(0, 0.01867153), (1, 0.018701145), (2, 0.018775448), (3, 0.018685106), (4, 0.018796815), (5, 0.90637)]
doc: 138 [(0, 0.018706484), (1, 0.18930066), (2, 0.01877248), (3, 0.018737), (4, 0.018764945), (5, 0.7357185)]
doc: 139 [(0, 0.028080426), (1, 0.85968137), (2, 0.0280047), (3, 0.027928285), (4, 0.028143838), (5, 0.028161345)]
doc: 140 [(0, 0.97711384)]
doc: 141 [(0, 0.015302059), (1, 0.015236695), (2, 0.015397071), (3, 0.015252001), (4, 0.015293278), (5, 0.9235189)]
doc: 142 [(0, 0.018572135), (1, 0.01857683), (2, 0.01863579), (3, 0.018534226), (4, 0.018591097), (5, 0.90708995)]
doc: 143 [(0, 0.16197324), (1, 0.79601276), (2, 0.010481149), (3, 0.010480452), (4, 0.010534917), (5, 0.0105174845)]
doc: 144 [(0, 0.024107154), (1, 0.024034746), (2, 0.02406335), (3, 0.02393932), (4, 0.024137026), (5, 0.8797184)]
doc: 145 [(0, 0.02106492), (1, 0.02094805), (2, 0.021056509), (3, 0.020885939), (4, 0.02113255), (5, 0.89491206)]
doc: 146 [(0, 0.27551916), (5, 0.70343757)]
doc: 147 [(0, 0.018706273), (1, 0.4126156), (2, 0.018774), (3, 0.018622406), (4, 0.5124376), (5, 0.018844126)]
doc: 148 [(0, 0.0153514035), (1, 0.015369818), (2, 0.015340448), (3, 0.015421078), (4, 0.015352685), (5, 0.92316455)]
doc: 149 [(0, 0.8309773), (1, 0.03378097), (2, 0.033857252), (3, 0.033577), (4, 0.03391653), (5, 0.03389095)]
doc: 150 [(1, 0.78416556), (4, 0.19901197)]
doc: 151 [(3, 0.701907), (4, 0.2777058)]
doc: 152 [(0, 0.010501946), (1, 0.0105079785), (2, 0.010543501), (3, 0.010479749), (4, 0.010541955), (5, 0.9474249)]
doc: 153 [(0, 0.012959775), (1, 0.012907731), (2, 0.01296291), (3, 0.012869094), (4, 0.012959091), (5, 0.9353414)]
doc: 154 [(1, 0.56801945), (3, 0.41556138)]
doc: 155 [(1, 0.2870055), (3, 0.6983647)]
doc: 156 [(0, 0.011259781), (1, 0.011238356), (2, 0.011234002), (3, 0.011207973), (4, 0.94381624), (5, 0.011243668)]
doc: 157 [(0, 0.64620626), (1, 0.016760072), (2, 0.016809879), (3, 0.016729662), (4, 0.016842192), (5, 0.2866519)]
doc: 158 [(0, 0.1933009), (4, 0.47110146), (5, 0.31372866)]
doc: 159 [(0, 0.8950403), (1, 0.020948214), (2, 0.021013888), (3, 0.020887008), (4, 0.0210785), (5, 0.02103209)]
doc: 160 [(0, 0.011223569), (1, 0.94383186), (2, 0.011235257), (3, 0.011201873), (4, 0.011266462), (5, 0.011241021)]
doc: 161 [(1, 0.2953749), (3, 0.6776541)]
doc: 162 [(5, 0.9579438)]
doc: 163 [(5, 0.9581312)]
doc: 164 [(5, 0.97905815)]
doc: 165 [(4, 0.30445224), (5, 0.6675276)]
doc: 166 [(1, 0.98723495)]
doc: 167 [(5, 0.9664245)]
doc: 168 [(0, 0.97786355)]
doc: 169 [(0, 0.015311497), (1, 0.9234009), (2, 0.015318546), (3, 0.0152720995), (4, 0.015353984), (5, 0.015343044)]
doc: 170 [(3, 0.99197656)]
doc: 171 [(0, 0.18164146), (1, 0.01677703), (2, 0.016821057), (3, 0.016738677), (4, 0.016840683), (5, 0.7511811)]
doc: 172 [(0, 0.018680187), (1, 0.018625213), (2, 0.018698605), (3, 0.018585872), (4, 0.018722741), (5, 0.90668744)]
doc: 173 [(2, 0.8826539), (5, 0.08688013)]
doc: 174 [(1, 0.96339864)]
doc: 175 [(0, 0.05650424), (1, 0.05591067), (2, 0.05618685), (3, 0.05575784), (4, 0.71952575), (5, 0.056114662)]
doc: 176 [(0, 0.02823976), (1, 0.028096152), (2, 0.028028497), (3, 0.027948752), (4, 0.028124185), (5, 0.8595627)]
doc: 177 [(0, 0.015355163), (1, 0.015292865), (2, 0.0153141385), (3, 0.015261212), (4, 0.015350086), (5, 0.9234265)]
doc: 178 [(1, 0.91966945), (5, 0.06658911)]
doc: 179 [(0, 0.83250344), (1, 0.033452716), (2, 0.03342657), (3, 0.033354163), (4, 0.033547405), (5, 0.03371571)]
doc: 180 [(0, 0.44102895), (1, 0.020992612), (2, 0.021067202), (3, 0.020925498), (4, 0.021070508), (5, 0.47491524)]
doc: 181 [(1, 0.8386378), (5, 0.1440833)]
doc: 182 [(0, 0.016844327), (1, 0.64743215), (2, 0.01688067), (3, 0.28516817), (4, 0.01688017), (5, 0.016794577)]
doc: 183 [(1, 0.52020913), (2, 0.46384728)]
doc: 184 [(0, 0.012977248), (1, 0.0129985465), (2, 0.7874361), (3, 0.012978637), (4, 0.012982994), (5, 0.16062646)]
doc: 185 [(3, 0.9977314)]
doc: 186 [(0, 0.01120842), (1, 0.94395125), (2, 0.011198129), (3, 0.011230915), (4, 0.011197283), (5, 0.011214016)]
doc: 187 [(4, 0.9720186)]
doc: 188 [(0, 0.0558775), (1, 0.05613777), (2, 0.056297168), (3, 0.055941246), (4, 0.71965826), (5, 0.056088034)]
doc: 189 [(0, 0.9235985), (1, 0.015317026), (2, 0.015257439), (3, 0.015270723), (4, 0.015296273), (5, 0.015259994)]
doc: 190 [(0, 0.02409235), (1, 0.8795594), (2, 0.024106232), (3, 0.02405906), (4, 0.024115033), (5, 0.024067923)]
doc: 191 [(0, 0.9765978)]
doc: 192 [(0, 0.013009444), (1, 0.012972249), (2, 0.012952881), (3, 0.012925314), (4, 0.01296726), (5, 0.93517286)]
doc: 193 [(0, 0.9473278), (1, 0.010571014), (2, 0.010540338), (3, 0.010513432), (4, 0.010520001), (5, 0.01052745)]
doc: 194 [(0, 0.09718031), (3, 0.21432409), (4, 0.67586386)]
doc: 195 [(0, 0.055904035), (1, 0.0558215), (2, 0.056077056), (3, 0.05567088), (4, 0.7204084), (5, 0.056118093)]
doc: 196 [(0, 0.02809516), (1, 0.027895587), (2, 0.028011872), (3, 0.027835006), (4, 0.028051134), (5, 0.8601112)]
doc: 197 [(3, 0.9960314)]
doc: 198 [(0, 0.015230137), (1, 0.015287745), (2, 0.015246233), (3, 0.015206956), (4, 0.015223267), (5, 0.92380565)]
doc: 199 [(0, 0.01684851), (1, 0.016735895), (2, 0.016802067), (3, 0.016708305), (4, 0.016766094), (5, 0.9161392)]
doc: 200 [(2, 0.4629934), (5, 0.52578515)]
doc: 201 [(0, 0.018740565), (1, 0.01869888), (2, 0.01887236), (3, 0.018668018), (4, 0.90628844), (5, 0.018731741)]
doc: 202 [(0, 0.8797133), (1, 0.023961745), (2, 0.02410926), (3, 0.023883542), (4, 0.024200346), (5, 0.024131848)]
doc: 203 [(0, 0.0129685905), (1, 0.93532705), (2, 0.012926101), (3, 0.012883998), (4, 0.012948405), (5, 0.012945857)]
doc: 204 [(0, 0.75317216), (1, 0.17962399), (2, 0.016860185), (3, 0.01680023), (4, 0.01677871), (5, 0.01676468)]
doc: 205 [(0, 0.041867595), (1, 0.04190062), (2, 0.04213959), (3, 0.041778196), (4, 0.79015476), (5, 0.042159267)]
doc: 206 [(5, 0.9648826)]
doc: 207 [(1, 0.9558221)]
doc: 208 [(4, 0.82121944), (5, 0.15188536)]
doc: 209 [(1, 0.4191583), (4, 0.15517172), (5, 0.40622997)]
doc: 210 [(0, 0.8318273), (1, 0.033572998), (2, 0.03368024), (3, 0.03348718), (4, 0.03376578), (5, 0.033666488)]
doc: 211 [(1, 0.748365), (3, 0.24276981)]
doc: 212 [(0, 0.018639365), (1, 0.018604225), (2, 0.01865638), (3, 0.01857608), (4, 0.018629313), (5, 0.90689456)]
doc: 213 [(0, 0.2203332), (2, 0.5528093), (5, 0.20023774)]
doc: 214 [(0, 0.041982964), (1, 0.04222485), (2, 0.04222132), (3, 0.042046346), (4, 0.78910863), (5, 0.042415857)]
doc: 215 [(0, 0.015327006), (1, 0.9234784), (2, 0.015290041), (3, 0.015302332), (4, 0.015321929), (5, 0.015280278)]
doc: 216 [(1, 0.39675272), (5, 0.56785536)]
doc: 217 [(0, 0.012972654), (1, 0.0129037965), (2, 0.012911041), (3, 0.012885509), (4, 0.012982537), (5, 0.93534446)]
doc: 218 [(0, 0.9531834)]
doc: 219 [(1, 0.7279432), (4, 0.24275658)]
doc: 220 [(5, 0.9579276)]
doc: 221 [(0, 0.016729262), (1, 0.016727533), (2, 0.0168045), (3, 0.016689641), (4, 0.016797308), (5, 0.9162517)]
doc: 222 [(0, 0.91591686), (1, 0.016781492), (2, 0.016831987), (3, 0.016727418), (4, 0.01690011), (5, 0.016842175)]
doc: 223 [(1, 0.759018), (2, 0.21772704)]
doc: 224 [(0, 0.859697), (1, 0.028139682), (2, 0.027977502), (3, 0.028165363), (4, 0.028058406), (5, 0.027962102)]
doc: 225 [(0, 0.95796764)]
doc: 226 [(1, 0.66438895), (3, 0.32439238)]
doc: 227 [(0, 0.011157525), (1, 0.01118593), (2, 0.011238155), (3, 0.011209889), (4, 0.011254137), (5, 0.94395435)]
doc: 228 [(0, 0.83235157), (1, 0.03345184), (2, 0.033545084), (3, 0.033471122), (4, 0.033519406), (5, 0.033660926)]
doc: 229 [(0, 0.9237297), (1, 0.015296649), (2, 0.015214852), (3, 0.015254307), (4, 0.015263571), (5, 0.015240881)]
doc: 230 [(0, 0.92382663), (1, 0.015248046), (2, 0.015208541), (3, 0.015199595), (4, 0.015268072), (5, 0.015249144)]
doc: 231 [(0, 0.027966868), (1, 0.028079312), (2, 0.028103307), (3, 0.02793328), (4, 0.02813502), (5, 0.8597822)]
doc: 232 [(0, 0.86022294), (1, 0.028016564), (2, 0.027922949), (3, 0.027899949), (4, 0.028024103), (5, 0.027913528)]
doc: 233 [(0, 0.7448505), (1, 0.2196914)]
doc: 234 [(1, 0.9728189)]
doc: 235 [(1, 0.010119875), (4, 0.9501005)]
doc: 236 [(0, 0.48126006), (1, 0.012976307), (2, 0.012937998), (3, 0.01291139), (4, 0.46689728), (5, 0.013016945)]
doc: 237 [(0, 0.021024542), (1, 0.8949018), (2, 0.020991182), (3, 0.021095019), (4, 0.021017252), (5, 0.020970223)]
doc: 238 [(2, 0.39788073), (4, 0.5803694)]
doc: 239 [(2, 0.32005742), (3, 0.6642747)]
doc: 240 [(0, 0.11335334), (1, 0.6432129), (2, 0.012958464), (3, 0.012915699), (4, 0.012960928), (5, 0.20459871)]
doc: 241 [(0, 0.58403116), (3, 0.41068012)]
doc: 242 [(3, 0.6146098), (4, 0.37577277)]
doc: 243 [(0, 0.014007957), (1, 0.013999304), (2, 0.014036859), (3, 0.013946033), (4, 0.014057007), (5, 0.9299528)]
doc: 244 [(0, 0.4134391), (3, 0.5633509)]
doc: 245 [(0, 0.02402512), (1, 0.023970915), (2, 0.024024196), (3, 0.023925848), (4, 0.88001055), (5, 0.02404337)]
doc: 246 [(0, 0.010517221), (1, 0.0105254), (2, 0.01052896), (3, 0.010490651), (4, 0.010553944), (5, 0.9473838)]
doc: 247 [(1, 0.973687)]
doc: 248 [(0, 0.018665476), (1, 0.018711038), (2, 0.018699141), (3, 0.018616669), (4, 0.90644395), (5, 0.01886376)]
doc: 249 [(0, 0.01680894), (1, 0.016771415), (2, 0.016831433), (3, 0.016709587), (4, 0.91593224), (5, 0.016946342)]
doc: 250 [(0, 0.04217169), (1, 0.041880984), (2, 0.042052593), (3, 0.04177904), (4, 0.79009795), (5, 0.04201774)]
doc: 251 [(5, 0.9557194)]
doc: 252 [(0, 0.021046203), (1, 0.021063492), (2, 0.021002732), (3, 0.89483), (4, 0.021042898), (5, 0.02101467)]
doc: 253 [(0, 0.58099735), (1, 0.08369305), (2, 0.0839063), (3, 0.08356877), (4, 0.08409945), (5, 0.0837351)]
doc: 254 [(2, 0.715579), (3, 0.18125984), (5, 0.09084106)]
doc: 255 [(2, 0.52996373), (5, 0.43044698)]
doc: 256 [(0, 0.043813977), (1, 0.38615268), (4, 0.5611813)]
doc: 257 [(4, 0.9504558)]
doc: 258 [(4, 0.959994)]
doc: 259 [(1, 0.27219608), (3, 0.7192935)]
doc: 260 [(4, 0.9709992)]
doc: 261 [(0, 0.78919107), (1, 0.042261735), (2, 0.04214416), (3, 0.04203494), (4, 0.04230868), (5, 0.042059466)]
doc: 262 [(0, 0.021091476), (1, 0.02100511), (2, 0.020968145), (3, 0.020935662), (4, 0.021000907), (5, 0.89499867)]
From the result, we see that each document now is represented as a distribution of topics. For example, for doc: 0
, it is represented using topic 0, 1, 2, 4, and 5, and their probabilities are 0.83217597, 0.033423353, 0.03352079, 0.033680916, and 0.033827633, respectively. Since topic 1 dominates the distribution, we can then say doc: 0
(region indexed as 0) is more about “fast food” and “park” (this is from the topic distribution you get from the last step).
Since regions are also represented as, or can be converted to, numeric vectors. We can use the same semantic simiarity we implemented before to check the relevance between regions. Can you try it yourself?
Finally, to have a more straigtforward view of the model, we can use pyLDAvis
library, and the code is provided as below:
pyLDAvis.enable_notebook()
vis = gensimvis.prepare(lda_bristol, doc_term_matrix, dict_)
vis
/Users/gy22808/opt/anaconda3/lib/python3.9/site-packages/pyLDAvis/_prepare.py:246: FutureWarning: In a future version of pandas all arguments of DataFrame.drop except for the argument 'labels' will be keyword-only.
default_term_info = default_term_info.sort_values(
/Users/gy22808/opt/anaconda3/lib/python3.9/site-packages/past/builtins/misc.py:45: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
from imp import reload
/Users/gy22808/opt/anaconda3/lib/python3.9/site-packages/past/builtins/misc.py:45: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
from imp import reload
/Users/gy22808/opt/anaconda3/lib/python3.9/site-packages/past/builtins/misc.py:45: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
from imp import reload
/Users/gy22808/opt/anaconda3/lib/python3.9/site-packages/past/builtins/misc.py:45: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
from imp import reload
/Users/gy22808/opt/anaconda3/lib/python3.9/site-packages/past/builtins/misc.py:45: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
from imp import reload
/Users/gy22808/opt/anaconda3/lib/python3.9/site-packages/past/builtins/misc.py:45: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
from imp import reload
/Users/gy22808/opt/anaconda3/lib/python3.9/site-packages/past/builtins/misc.py:45: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
from imp import reload
/Users/gy22808/opt/anaconda3/lib/python3.9/site-packages/past/builtins/misc.py:45: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
from imp import reload
This is an interactive visualization. On the left, each bubble represents a topic. The larger the bubble, the more prevalent or dominant the topic is. Good topic model will be fairly big topics scattered in different quadrants rather than being clustered on one quadrant. On the right, it shows the distribution of words of that topic. The red bar indicates the estimated frequency of the word in the topic; the blue bar indicates the overall term frequency (i.e., will not change over topics).
One key challenge of using LDA is to determine the parameter num_topics
, which can largely impact your model’s performance. There are some guidlines on selecting the optimal num_topics
:
To build many LDA models with different values of number of topics and pick the one that gives highest coherence score
coherence score is to measure the degree of semantic similarity between high scoring words in the topic. So if it is high, it means the top terms in the topic are semantically similar, which can further indicates that it is easier to interprete the topic
another evaluation metric is perplexity, which reflects how successfully a trained topic model predicts new data.
to get these two metrics, you can use codes as shown below.
If the same keywords have repeated in multiple topics, it’s probably a sign that the ‘k’ is too large.
If you are intersted in LDA for Place Semantics, check this paper: Gao, S., Janowicz, K., & Couclelis, H. (2017). Extracting urban functional regions from points of interest and human activities on location‐based social networks. Transactions in GIS, 21(3), 446-467. (if the link does not work, search it in UoB library!)
# Compute Perplexity
print('\nPerplexity: ', lda_bristol.log_perplexity(doc_term_matrix))
# a measure of how good the model is. lower the better.
# Compute Coherence Score
coherence_model_lda = CoherenceModel(model=lda_bristol, texts=corpus, dictionary=dict_, coherence='c_v')
coherence_lda = coherence_model_lda.get_coherence()
print('\nCoherence Score: ', coherence_lda)
Perplexity: -3.8607396997846375
Coherence Score: 0.37440290856540687