├── src ├── __init__.py ├── models │ ├── __init__.py │ ├── __init__.pyc │ ├── convnet.pyc │ ├── convnets.pyc │ └── convnets.py ├── scrapers │ ├── __init__.py │ ├── fetch_buzzfeed.py │ ├── convert_indian_express.py │ ├── fetch_guardian.py │ ├── fetch_reddit.py │ ├── fetch.py │ └── fetch_text.py ├── preprocessors │ ├── __init__.py │ ├── __init__.pyc │ ├── preprocess_text.pyc │ ├── preprocess_embeddings.py │ └── preprocess_text.py ├── train.pyc ├── __init__.pyc ├── server.py ├── detect.py └── train.py ├── Procfile ├── .gitignore ├── models ├── detector.h5 ├── embeddings.npy └── detector.finetuned.h5 ├── data ├── clickbait.sources.txt ├── reddit │ └── unique.sh ├── genuine.sources.txt ├── genuine.valid.txt ├── clickbait.valid.txt └── vocabulary.txt ├── requirements.txt ├── fetch.py ├── README.md ├── notebooks ├── Comparision with other approaches.ipynb ├── Looking for Sneaky Clickbait.ipynb └── Finetuning on Reddit data.ipynb └── LICENSE.md /src/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/models/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/scrapers/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/preprocessors/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: gunicorn src.server:app -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .ipynb_checkpoints 2 | notebooks/.ipynb_checkpoints 3 | venv/ 4 | -------------------------------------------------------------------------------- /src/train.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saurabhmathur96/clickbait-detector/HEAD/src/train.pyc -------------------------------------------------------------------------------- /src/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saurabhmathur96/clickbait-detector/HEAD/src/__init__.pyc -------------------------------------------------------------------------------- /models/detector.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saurabhmathur96/clickbait-detector/HEAD/models/detector.h5 -------------------------------------------------------------------------------- /data/clickbait.sources.txt: -------------------------------------------------------------------------------- 1 | buzzfeed 2 | newsweek 3 | the-times-of-india 4 | the-huffington-post 5 | the-lad-bible -------------------------------------------------------------------------------- /data/reddit/unique.sh: -------------------------------------------------------------------------------- 1 | for filename in *.txt; do 2 | echo $filename, `sort $filename | uniq | wc -l` 3 | done 4 | -------------------------------------------------------------------------------- /models/embeddings.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saurabhmathur96/clickbait-detector/HEAD/models/embeddings.npy -------------------------------------------------------------------------------- /data/genuine.sources.txt: -------------------------------------------------------------------------------- 1 | the-hindu 2 | the-economist 3 | the-wall-street-journal 4 | techcrunch 5 | national-geographic -------------------------------------------------------------------------------- /src/models/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saurabhmathur96/clickbait-detector/HEAD/src/models/__init__.pyc -------------------------------------------------------------------------------- /src/models/convnet.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saurabhmathur96/clickbait-detector/HEAD/src/models/convnet.pyc -------------------------------------------------------------------------------- /src/models/convnets.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saurabhmathur96/clickbait-detector/HEAD/src/models/convnets.pyc -------------------------------------------------------------------------------- /models/detector.finetuned.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saurabhmathur96/clickbait-detector/HEAD/models/detector.finetuned.h5 -------------------------------------------------------------------------------- /src/preprocessors/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saurabhmathur96/clickbait-detector/HEAD/src/preprocessors/__init__.pyc -------------------------------------------------------------------------------- /src/preprocessors/preprocess_text.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/saurabhmathur96/clickbait-detector/HEAD/src/preprocessors/preprocess_text.pyc -------------------------------------------------------------------------------- /src/server.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, jsonify, request 2 | from detect import predictor 3 | 4 | 5 | 6 | app = Flask(__name__) 7 | 8 | @app.route("/detect", methods=["GET"]) 9 | def detect (): 10 | headline = request.args.get("headline", "") 11 | clickbaitiness = predictor.predict(headline) 12 | return jsonify({ "clickbaitiness": round(clickbaitiness * 100, 2) }) 13 | 14 | 15 | if __name__ == "__main__": 16 | app.run() 17 | -------------------------------------------------------------------------------- /src/scrapers/fetch_buzzfeed.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import tqdm 3 | 4 | BASE_URL="http://www.buzzfeed.com/api/v2/feeds/index" 5 | 6 | 7 | with open("data/clickbait.txt", "a+") as outfile: 8 | 9 | for page in tqdm.tqdm(range(0, 30)): 10 | response = requests.get(BASE_URL, { "p": page }).json() 11 | titles = [each["title"].encode("ascii", "ignore") for each in response["buzzes"]] 12 | outfile.write("\n" + "\n".join(titles)) -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | appdirs==1.4.0 2 | click==6.7 3 | Flask==0.12 4 | funcsigs==1.0.2 5 | gunicorn==19.6.0 6 | h5py==2.6.0 7 | itsdangerous==0.24 8 | Jinja2==2.9.5 9 | Keras==1.2.1 10 | MarkupSafe==0.23 11 | mock==2.0.0 12 | nltk==3.2.1 13 | numpy==1.11.1 14 | packaging==16.8 15 | pbr==1.10.0 16 | protobuf==3.1.0.post1 17 | pyparsing==2.1.10 18 | PyYAML==3.12 19 | scipy==0.18.1 20 | six==1.10.0 21 | tensorflow==0.12.1 22 | Theano==0.8.2 23 | Werkzeug==0.11.15 24 | tqdm==4.19.4 25 | -------------------------------------------------------------------------------- /src/scrapers/convert_indian_express.py: -------------------------------------------------------------------------------- 1 | from bs4 import BeautifulSoup 2 | import glob 3 | import tqdm 4 | 5 | 6 | with open("data/genuine.txt", "a+") as outfile: 7 | 8 | for filename in tqdm.tqdm(glob.glob("data/feed/*.xml")): 9 | with open(filename) as f: 10 | soup = BeautifulSoup(f.read()) 11 | titles = [each.find("title").text.encode("ascii", "ignore") for each in soup.find_all("item")] 12 | outfile.write("\n" + "\n".join(titles)) -------------------------------------------------------------------------------- /src/scrapers/fetch_guardian.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import tqdm 3 | 4 | BASE_URL = "http://content.guardianapis.com/search" 5 | params = { 6 | "from-date": "2014-07-01", 7 | "to-date": "2017-01-23", 8 | "api-key": "", # API Key here 9 | "page": 1 10 | } 11 | 12 | with open("data/genuine.txt", "a+") as outfile: 13 | 14 | for page in tqdm.tqdm(range(1, 301), desc="fetching headlines from guardian"): 15 | params["page"] = page 16 | response = requests.get(BASE_URL, params=params).json() 17 | results = response["response"]["results"] 18 | titles = [result["webTitle"].encode("ascii", "ignore").replace("\n", "") for result in results] 19 | outfile.write("\n" + "\n".join(titles)) 20 | -------------------------------------------------------------------------------- /src/scrapers/fetch_reddit.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import tqdm 3 | import time 4 | 5 | BASE_URL = "https://www.reddit.com/r/savedyouaclick/hot.json" 6 | params = { 7 | "sort": "hot", 8 | "after": "" 9 | } 10 | headers = { 11 | "User-agent": "clickbait-detector scraper" 12 | } 13 | titles = list() 14 | with open("data/clickbait-reddit.txt", "w") as outfile: 15 | for i in tqdm.tqdm(range(10)): 16 | response = requests.get(BASE_URL, params=params, headers=headers) 17 | time.sleep(1) 18 | if response.status_code == 200: 19 | response = response.json() 20 | params["after"] = response["data"]["after"] 21 | titles += [each["data"]["title"].split("|")[0].encode("ascii", "ignore") for each in response["data"]["children"]] 22 | outfile.write("\n".join(titles)) 23 | -------------------------------------------------------------------------------- /fetch.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import tqdm 3 | import time 4 | 5 | BASE_URL = "https://www.reddit.com/r/savedyouaclick/top.json" 6 | params = { 7 | "sort": "top", 8 | "t": "all", 9 | "after": "" 10 | } 11 | headers = { 12 | "User-agent": "clickbait-detector scraper v1.0" 13 | } 14 | titles = list() 15 | with open("clickbait-top-reddit.txt", "w") as outfile: 16 | for i in tqdm.tqdm(range(100)): 17 | response = requests.get(BASE_URL, params=params, headers=headers) 18 | time.sleep(2) 19 | if response.status_code == 200: 20 | response = response.json() 21 | params["after"] = response["data"]["after"] 22 | titles += [each["data"]["title"].encode("ascii", "ignore").replace("\n", "").split("|")[0] for each in response["data"]["children"]] 23 | else: 24 | time.sleep(10) 25 | print "error" 26 | outfile.write("\n".join(titles)) 27 | 28 | -------------------------------------------------------------------------------- /src/scrapers/fetch.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import tqdm 3 | import time 4 | 5 | BASE_URL = "https://www.reddit.com/r/savedyouaclick/top.json" 6 | params = { 7 | "sort": "top", 8 | "t": "all", 9 | "after": "" 10 | } 11 | headers = { 12 | "User-agent": "clickbait-detector scraper v1.0" 13 | } 14 | titles = list() 15 | with open("clickbait-top-reddit.txt", "w") as outfile: 16 | for i in tqdm.tqdm(range(100)): 17 | response = requests.get(BASE_URL, params=params, headers=headers) 18 | time.sleep(2) 19 | if response.status_code == 200: 20 | response = response.json() 21 | params["after"] = response["data"]["after"] 22 | titles += [each["data"]["title"].encode("ascii", "ignore").replace("\n", "").split("|")[0] for each in response["data"]["children"]] 23 | else: 24 | time.sleep(10) 25 | print "error" 26 | outfile.write("\n".join(titles)) 27 | 28 | -------------------------------------------------------------------------------- /src/preprocessors/preprocess_embeddings.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import tqdm 3 | from sklearn.decomposition import PCA 4 | 5 | 6 | 7 | def preprocess_embeddings(embedding_dimension, vocabulary): 8 | 9 | embeddings = {} 10 | with open("models/glove.6B.50d.txt") as glove_file: 11 | for line in tqdm.tqdm(glove_file, desc="reading embeddings", total=400000): 12 | start = line.find(" ") 13 | word = line[:start] 14 | embeddings[word] = np.fromstring(line[start:], sep=" ", dtype=np.float32) 15 | 16 | 17 | weights = np.zeros((len(vocabulary), 50)) # existing vectors are 50-D 18 | for i, word in enumerate(vocabulary): 19 | if word in embeddings: 20 | weights[i] = embeddings[word] 21 | 22 | pca = PCA(n_components=EMBEDDING_DIMENSION) 23 | weights = pca.fit_transform(weights) 24 | return weights 25 | 26 | if __name__ == "__main__": 27 | EMBEDDING_DIMENSION = 30 28 | vocabulary = open("data/vocabulary.txt").read().split("\n") 29 | weights = preprocess_embeddings(EMBEDDING_DIMENSION, vocabulary) 30 | np.save("models/embeddings.npy", weights) -------------------------------------------------------------------------------- /src/detect.py: -------------------------------------------------------------------------------- 1 | from models.convnets import ConvolutionalNet 2 | from keras.models import load_model 3 | from keras.preprocessing import sequence 4 | from preprocessors.preprocess_text import clean 5 | import sys 6 | import string 7 | import re 8 | 9 | MATCH_MULTIPLE_SPACES = re.compile("\ {2,}") 10 | SEQUENCE_LENGTH = 20 11 | EMBEDDING_DIMENSION = 30 12 | 13 | UNK = "" 14 | PAD = "" 15 | 16 | 17 | 18 | vocabulary = open("data/vocabulary.txt").read().split("\n") 19 | inverse_vocabulary = dict((word, i) for i, word in enumerate(vocabulary)) 20 | 21 | def words_to_indices(inverse_vocabulary, words): 22 | return [inverse_vocabulary.get(word, inverse_vocabulary[UNK]) for word in words] 23 | 24 | 25 | 26 | 27 | class Predictor (object): 28 | def __init__(self, model_path): 29 | model = ConvolutionalNet(vocabulary_size=len(vocabulary), embedding_dimension=EMBEDDING_DIMENSION, input_length=SEQUENCE_LENGTH) 30 | model.load_weights(model_path) 31 | self.model = model 32 | 33 | def predict (self, headline): 34 | headline = headline.encode("ascii", "ignore") 35 | inputs = sequence.pad_sequences([words_to_indices(inverse_vocabulary, clean(headline).lower().split())], maxlen=SEQUENCE_LENGTH) 36 | clickbaitiness = self.model.predict(inputs)[0, 0] 37 | return clickbaitiness 38 | predictor = Predictor("models/detector.h5") 39 | if __name__ == "__main__": 40 | print ("headline is {0} % clickbaity".format(round(predictor.predict(sys.argv[1]) * 100, 2))) -------------------------------------------------------------------------------- /src/models/convnets.py: -------------------------------------------------------------------------------- 1 | from keras.models import Sequential, Model 2 | from keras.layers import Convolution1D, MaxPooling1D, Flatten, Dense, Embedding, Activation, BatchNormalization, GlobalAveragePooling1D, Input, merge, ZeroPadding1D 3 | from keras.preprocessing import sequence 4 | from keras.optimizers import RMSprop, Adam, SGD 5 | from keras.regularizers import l2 6 | 7 | def ConvolutionalNet(vocabulary_size, embedding_dimension, input_length, embedding_weights=None): 8 | 9 | model = Sequential() 10 | if embedding_weights is None: 11 | model.add(Embedding(vocabulary_size, embedding_dimension, input_length=input_length, trainable=False)) 12 | else: 13 | model.add(Embedding(vocabulary_size, embedding_dimension, input_length=input_length, weights=[embedding_weights], trainable=False)) 14 | 15 | model.add(Convolution1D(32, 2, W_regularizer=l2(0.005))) 16 | model.add(BatchNormalization()) 17 | model.add(Activation("relu")) 18 | 19 | model.add(Convolution1D(32, 2, W_regularizer=l2(0.001))) 20 | model.add(BatchNormalization()) 21 | model.add(Activation("relu")) 22 | 23 | model.add(Convolution1D(32, 2, W_regularizer=l2(0.001))) 24 | model.add(BatchNormalization()) 25 | model.add(Activation("relu")) 26 | 27 | model.add(MaxPooling1D(17)) 28 | model.add(Flatten()) 29 | 30 | model.add(Dense(1, bias=True, W_regularizer=l2(0.001))) 31 | model.add(BatchNormalization()) 32 | model.add(Activation("sigmoid")) 33 | 34 | return model 35 | 36 | 37 | -------------------------------------------------------------------------------- /src/scrapers/fetch_text.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import itertools 3 | import tqdm 4 | 5 | ARTICLES_URL = "https://newsapi.org/v1/articles" 6 | API_KEY = "" # API Key here 7 | 8 | SOURCES_URL = "https://newsapi.org/v1/sources?language=en" 9 | sources_response = requests.get(SOURCES_URL).json() 10 | all_source_details = sources_response["sources"] 11 | 12 | clickbait_sources = open("data/clickbait.sources.txt").read().strip().split() 13 | genuine_sources = open("data/genuine.sources.txt").read().strip().split() 14 | 15 | def find_details(id): 16 | return next((x for x in all_source_details if x["id"] == id), None) 17 | 18 | clickbait_details = filter(bool, [find_details(id) for id in clickbait_sources]) 19 | genuine_details = filter(bool, [find_details(id) for id in genuine_sources]) 20 | 21 | def fetch_headlines(source_details): 22 | source_id, sort_bys_available = source_details["id"], source_details["sortBysAvailable"] 23 | def fetch_articles(source_id, sort_by, api_key): 24 | response = requests.get(ARTICLES_URL, { "source": source_id, "sortBy": sort_by, "apiKey": api_key}).json() 25 | return response["articles"] 26 | articles = [fetch_articles(source_id, sort_by, API_KEY) for sort_by in sort_bys_available] 27 | titles = [article["title"] for article in itertools.chain.from_iterable(articles)] 28 | return list(set(titles)) 29 | 30 | clickbait_headlines = list(itertools.chain.from_iterable(fetch_headlines(details) for details in tqdm.tqdm(clickbait_details, desc="fetching clickbait"))) 31 | genuine_headlines = list(itertools.chain.from_iterable(fetch_headlines(details) for details in tqdm.tqdm(genuine_details, desc="fetching genuine"))) 32 | 33 | open("data/clickbait.txt", "w").write("\n" + "\n".join(clickbait_headlines).encode("ascii", "ignore")) 34 | open("data/genuine.txt", "w").write("\n" + "\n".join(genuine_headlines).encode("ascii", "ignore")) -------------------------------------------------------------------------------- /src/preprocessors/preprocess_text.py: -------------------------------------------------------------------------------- 1 | import string 2 | from collections import Counter 3 | import tqdm 4 | import nltk 5 | import re 6 | 7 | MATCH_MULTIPLE_SPACES = re.compile("\ {2,}") 8 | VOCABULARY_SIZE = 6500 9 | UNK = "" 10 | PAD = "" 11 | 12 | def clean(text): 13 | text = text.lower() 14 | for punctuation in string.punctuation: 15 | text = text.replace(punctuation, " " + punctuation + " ") 16 | for i in range(10): 17 | text = text.replace(str(i), " " + str(i) + " ") 18 | text = MATCH_MULTIPLE_SPACES.sub(" ", text) 19 | return "\n".join(line.strip() for line in text.split("\n")) 20 | 21 | 22 | 23 | def mark_unknown_words(vocabulary, sentence): 24 | return " ".join(word if word in vocabulary else UNK for word in sentence.split(" ")) 25 | 26 | 27 | def preprocess_text(genuine, clickbait, vocabulary): 28 | genuine = clean(genuine) 29 | clickbait = clean(clickbait) 30 | 31 | words = nltk.word_tokenize(genuine) + nltk.word_tokenize(clickbait) 32 | glove_vocabulary = open("data/vocabulary.glove.txt").read().split("\n") 33 | counts = Counter(word for word in words if word in glove_vocabulary) 34 | 35 | vocabulary = [PAD, UNK] + [word for word, count in counts.most_common(VOCABULARY_SIZE-2)] 36 | genuine = [mark_unknown_words(vocabulary, sentence) for sentence in tqdm.tqdm(genuine.split("\n"), desc="genuine")] 37 | clickbait = [mark_unknown_words(vocabulary, sentence) for sentence in tqdm.tqdm(clickbait.split("\n"), desc="clickbait")] 38 | 39 | return (vocabulary, "\n".join(genuine), "\n".join(clickbait)) 40 | 41 | if __name__ == "__main__": 42 | genuine = open("data/genuine.txt").read() 43 | clickbait = open("data/clickbait.txt").read() 44 | vocabulary, genuine_preprocessed, clickbait_preprocessed = preprocess_text(genuine, clickbait) 45 | open("data/vocabulary.txt", "w").write("\n".join(vocabulary)) 46 | open("data/genuine.preprocessed.txt", "w").write("\n".join(genuine)) 47 | open("data/clickbait.preprocessed.txt", "w").write("\n".join(clickbait)) -------------------------------------------------------------------------------- /src/train.py: -------------------------------------------------------------------------------- 1 | import os 2 | import numpy as np 3 | from keras.layers import Embedding 4 | from models.convnets import ConvolutionalNet 5 | from keras.preprocessing import sequence 6 | from keras.optimizers import RMSprop, Adam, SGD 7 | from keras.callbacks import EarlyStopping 8 | from sklearn.cross_validation import train_test_split 9 | 10 | 11 | SEQUENCE_LENGTH = 20 12 | EMBEDDING_DIMENSION = 30 13 | MODEL_FILE = "models/detector.h5" 14 | 15 | 16 | 17 | def words_to_indices(inverse_vocabulary, words): 18 | return [inverse_vocabulary[word] for word in words] 19 | 20 | if __name__ == "__main__": 21 | 22 | vocabulary = open("data/vocabulary.txt").read().split("\n") 23 | inverse_vocabulary = dict((word, i) for i, word in enumerate(vocabulary)) 24 | 25 | 26 | clickbait = open("data/clickbait.preprocessed.txt").read().split("\n") 27 | clickbait = sequence.pad_sequences([words_to_indices(inverse_vocabulary, sentence.split()) for sentence in clickbait], maxlen=SEQUENCE_LENGTH) 28 | 29 | genuine = open("data/genuine.preprocessed.txt").read().split("\n") 30 | genuine = sequence.pad_sequences([words_to_indices(inverse_vocabulary, sentence.split()) for sentence in genuine], maxlen=SEQUENCE_LENGTH) 31 | 32 | X = np.concatenate([clickbait, genuine], axis=0) 33 | y = np.array([[1] * clickbait.shape[0] + [0] * genuine.shape[0]], dtype=np.int32).T 34 | p = np.random.permutation(y.shape[0]) 35 | X = X[p] 36 | y = y[p] 37 | 38 | X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y) 39 | 40 | 41 | embedding_weights = np.load("models/embeddings.npy") 42 | params = dict(vocabulary_size=len(vocabulary), embedding_dimension=EMBEDDING_DIMENSION, input_length=SEQUENCE_LENGTH, embedding_weights=embedding_weights) 43 | model = ConvolutionalNet(**params) 44 | 45 | 46 | model.compile(loss="binary_crossentropy", optimizer="adam", metrics=["acc"]) 47 | model.fit(X_train, y_train, validation_data=(X_test, y_test), batch_size=32, nb_epoch=20, shuffle=True, callbacks=[EarlyStopping(monitor="val_loss", patience=2)]) 48 | model.save_weights(MODEL_FILE) -------------------------------------------------------------------------------- /data/genuine.valid.txt: -------------------------------------------------------------------------------- 1 | Mayawatis risky calculus 2 | L&T Q3 net up 39% at Rs 972 cr, co says note ban a disruptor 3 | Australian Open women's final: Serena beats sister Venus Williams to win 23rd Grand Slam 4 | It's Federer vs Nadal in Australian Open finals 5 | Medical board fails to make any conclusion in report on Sunandas death 6 | Only love, no jihad: RLD fields couples who broke the communal divide 7 | In U.P. polls, a united Left will make an impact: Yechury 8 | Getting ties with UAE on track 9 | Modis Mann ki baat gets EC nod 10 | The bull and their life 11 | When White House blocked U.K. scribes from covering Trump-May meet 12 | A look at Trumps executive order on refugees, immigration 13 | Gold regains shine, bounces Rs 230 on global uptrend 14 | Three weeks on, missing Pakistani rights activist returns home 15 | TN CM announces Rs 20 lakh solatium to avalanche victims kin 16 | Malala heartbroken over Trumps ban on most defenceless refugees 17 | Zahida Pervez, three others convicted in Shehla Masood murder case 18 | Indus waters that flow into Pakistan as waste will be brought to Punjab: Modi 19 | Five soldiers trapped under snow in Kupwara 20 | How necessary is Donald Trumps wall? 21 | The White House hints that tax reform could pay for the border wall 22 | Foreign reserves 23 | Why Berlins new airport keeps missing its opening date 24 | Death of a Brazilian justice 25 | Retail sales, producer prices, wages and exchange rates 26 | Understanding the spike in Chinas birth rate 27 | Donald Trump gets serious about building a border wall 28 | Britains excruciating embrace of Donald Trump shows how little independence it has gained from Brexit 29 | President Trumps infrastructure plans probably involve more tolls 30 | The multinational company is in trouble 31 | Donald Trump backs two big oil pipelines 32 | The Doomsday Clock now reads two and a half minutes to midnight 33 | Digital immortality for the Holocausts last survivors 34 | Printed human body parts could soon be available for transplant 35 | Why Russia is about to decriminalise wife-beating 36 | Germanys Social Democrats pick Martin Schulz as leader 37 | Trumps Move to Clamp Down on Communications Spurs Backlash 38 | Donald Trump Signs Actions Banning Syrians, Suspending Refugee Program 39 | On Globalization, China and Trump Are Closer Than They Appear 40 | Obstacles Remain in Talks to Settle 41 | 42 | 43 | 44 | Wal-Mart Bribery Probe 45 | Nikki Haley Arrives at U.N., Vowing to Take Names of Opposing Nations 46 | Trumps First Week: Governing Without a Script 47 | Trumps Foreign-Policy Flurry Sets Allies on Edge 48 | Big Chinese Deals Stall on Capital-Outflows Clampdown 49 | How to Unsend Emails... Before Regret Kicks In 50 | U.S. Economy Returns to Lackluster Growth 51 | Apple aims to up its AI smarts with iCloud user data in iOS10.3 52 | Netgears Orbi might be the best Wi-Fi router Ive everused 53 | Crunch Report 54 | Weekly Roundup: AppDynamics sells to Cisco ahead of IPO, CZI buysMeta 55 | Twitter releases national securityletters 56 | Trumps manufacturing council includes Elon Musk, Michael Dell and MarkFields 57 | Zuckerberg defends immigrants threatened byTrump 58 | Doug shows you how to get rid of Amazon Freshtotes 59 | Snap will reportedly file publicly for its massive IPO late nextweek 60 | Rogue National Park Service Twitter account says its no longer run by government employeesbut maybe it neverwas 61 | Alphabets bets beyond search are starting to payoff 62 | Leapfrogging in highered 63 | Crunch Report | Galaxy S8 Coming inMarch 64 | Silicon Valleys false feminist idol finally makes apeep 65 | Another Dolphin Killed By Selfie-Seeking Tourists 66 | Watch a Massive Fire Tornado Sweep the Outback 67 | The Worst Wildfires in Chiles History Revealed in Pictures 68 | New Crypt-Keeper Wasp Is Parasite That Bursts From Host's Head 69 | 3 Things You Need to Know About the Science Rebellion Against Trump 70 | These Are the Defiant "Water Protectors" of Standing Rock 71 | Watch Alien Worlds Whirl Around a Distant Star 72 | Why a Volcano Has Erupted Almost Every Hour for 94 Years 73 | 4 Key Impacts of the Keystone XL and Dakota Access Pipelines 74 | Human-Pig Hybrid Created in the LabHere Are the Facts -------------------------------------------------------------------------------- /data/clickbait.valid.txt: -------------------------------------------------------------------------------- 1 | All The Looks At The People's Choice Awards 2 | Does Kylie Jenner Know How To Wear Coats? A Very Serious Investigation 3 | This Is What US Protests Looked Like In The '60s 4 | 24 GIFs That Show How Corinne Is The Greatest "Bachelor" Villian Yet 5 | Nene Leakes And Kandi Burruss Finally "See Each Other" In A Good Way 6 | Here's What Miley Cyrus Said During Her Women's March Speech 7 | Which Bachelor Villain Are You? 8 | Wire Nails Are The New Manicure Trend Of Your Dreams 9 | Stuntman Killed During Music Video Shoot Instagrammed "Faulty Props" Before His Death 10 | Channing Tatum Is Currently Teaching Himself How To Play Piano 11 | Trump signs executive order to 'keep radical Islamic terrorists out' of U.S. 12 | Considering A Medical Career? 13 | Prosecutors won't pursue Bridgegate charges against NJ Governor Chris Christie 14 | A look at Neil Gorsuch, a possible Trump Supreme Court nominee 15 | U.S. judge blocks controversial Texas abortion provider regulations 16 | Why Donald Trumps executive orders are more symbol than substance 17 | Haley to U.N. allies: back us or we'll take names 18 | People in red states where Medicaid expanded under Obamacare have a positive view of the law 19 | Jewish leaders have warned against post-truth populism on Holocaust Memorial Day 20 | Do Donald Trump's criticisms of NATO have merit? | Opinion 21 | Trumps Putin bromance is making Americans pro-Russian 22 | Has Putin just arrested two American spies? 23 | Mexico foreign minister says paying for Trump's border wall "totally unacceptable" 24 | How much longer can Oman be an oasis of peace in the Middle East? 25 | China is stepping up as Donald Trump withdraws from the world stage | Opinion 26 | Buffett, Gates express optimism for U.S. in Trump era 27 | Can Congos footballers help ease political tensions? 28 | Aruba; Five Star Island Goes Green 29 | This is California's plan to revolt against Donald Trump 30 | Michael Wolff: Why the media keeps losing to Donald Trump 31 | Vijay Mallya: I begged for help, not loans - Times of India 32 | Union Budget 2017: What manufacturing sector expect from Arun Jaitley- The Times of India 33 | Republicans Trying To Replace Obamacare Still Don't Have Any Idea What They're In For 34 | Read The Full Text Of Donald Trump's Executive Order Limiting Muslim Entry To The U.S. 35 | Paul Ryan Really Doesn't Care If Mexico Pays For Trump's Wall 36 | Chuck Schumer To Vote Against Rex Tillerson For Secretary Of State 37 | Dear President Trump: Our Grandparents Were Refugees. This Is Their Story. 38 | Weekend Roundup: A New 'Nationalist International' Challenges The Old Globalization 39 | Anne Frank Was A Refugee, Too 40 | Heres How To Sign Up For Obamacare, Now That Trump's Not Fully Promoting It 41 | Donald Trump Says He Would Prioritize Christians Over Other Refugees 42 | This Is What Happens When You Put Red Hot Steel Onto Frozen Lake 43 | Two Lads Convince Everyone They Won The Lottery By Driving Around In A Sports Car 44 | Hollywood Actor Invites Elderly Neighbour To Live Out Final Days With Him 45 | We Didn't Ask For It, But Apple Has Rolled Out A Bendable iPhone Patent Anyway 46 | Baby Dolphin Dies On Beach Because Holiday Makers Took Pictures With It 47 | Can You Guess Which Drugs Kill The Most People In The UK? 48 | If Someone Rings You And Says "Can You Hear Me?", Hang Up Immediately 49 | Dad's Hilarious Tweets Show How His Four Daughters Regularly Destroy Him 50 | James Blunt Tweets The Real Reason Guys Buy Girls Tickets To See Him 51 | GQ Gives Donald Trump An Arguably Much-Needed Makeover 52 | Trump To Publish Weekly List Of Crimes Committed By Undocumented Immigrants In Sanctuary Cities 53 | This Wire Nail Trend Is Going To Blow Your Mind 54 | Channing Tatum Is Currently Teaching Himself How To Play Piano 55 | Which Villain On "The Bachelor" Are You? 56 | It's Entirely Possible That Kylie Jenner Never Learned How To Wear A Coat 57 | Style At The People's Choice Awards 58 | This Is What US Protests Looked Like In The '60s 59 | Nene Leakes And Kandi Burruss Finally "See Each Other" In A Good Way 60 | Stuntman Killed During Music Video Shoot Instagrammed "Faulty Props" Before His Death 61 | Miley Cyrus Got Emotional During Her Women's March Speech 62 | 24 Examples Of Corinne Being The Greatest "Bachelor" Villain Yet 63 | Red Carpet Fashion At The 2017 Golden Globes 64 | 25 Things Khloe Kardashian Has Very Meticulously Organized 65 | Celebrity Babies We Met In 2016 66 | 10 Celebs Killin The Elf On The Shelf Game 67 | People Can't Stop Laughing At This Girl Who Painted Her Nails The Same Colour As Ham 68 | These Photos Of Older LGBTI Women Celebrate Breaking Beauty Norms 69 | A Mindset "Revolution" Sweeping Britain's Classrooms May Be Based On Shaky Science 70 | This Drag King's David Bowie Looks Are Incredible 71 | People Are Inspired By This Random Facebook Friendship Between Two Men With The Same Name 72 | 21 Gifts For The Gwyneth Paltrow In Your Life 73 | People Are Obsessed With This High Schooler Who Made A Fierce Statement With His T-Shirt 74 | Viola Davis's Acceptance Speech Gave A Powerful Nod To Her Father And People Are Here For It 75 | People Really Think This "Beauty And The Beast" Doll Looks Like Justin Bieber 76 | Someone Altered A Tomi Lahren Facebook Page To Support Michelle Obama And People Lost It -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Clickbait Detector 2 | 3 | Detects clickbait headlines using deep learning. 4 | 5 | Find the Chrome Extension [here](https://chrome.google.com/webstore/detail/this-is-clickbait/ppklhdlfnadnlnllnenceabhldpnafjm) ( built by [rahulkapoor90](https://github.com/rahulkapoor90/This-is-Clickbait) ) 6 | 7 | The doi for this project is https://doi.org/10.17605/OSF.IO/T3UJ9 8 | 9 | ## Requirements 10 | - Python 2.7.12 11 | - Keras 1.2.1 12 | - Tensorflow 0.12.1 13 | - Numpy 1.11.1 14 | - NLTK 3.2.1 15 | 16 | ## Getting Started 17 | 1. Install a virtualenv in the project directory 18 | 19 | virtualenv venv 20 | 21 | 2. Activate the virtualenv 22 | - On Windows: 23 | 24 | cd venv/Scripts 25 | activate 26 | 27 | - On Linux 28 | 29 | source venv/bin/activate 30 | 31 | 3. Install the requirements 32 | 33 | pip install -r requirements.txt 34 | 35 | 4. Try it out! 36 | Try running one of the [examples](#examples). 37 | 38 | ## Accuracy 39 | Training Accuracy after 25 epochs = 93.8 % (loss = 0.1484) 40 | 41 | Validation Accuracy after 25 epochs = 90.15 % (loss = 0.2670) 42 | 43 | ## Examples 44 | 45 | ``` 46 | $ python src/detect.py "Novak Djokovic stunned as Australian Open title defence ends against Denis Istomin" 47 | Using TensorFlow backend. 48 | headline is 0.33 % clickbaity 49 | ``` 50 | 51 | ``` 52 | $ python src/detect.py "Just 22 Cute Animal Pictures You Need Right Now" 53 | Using TensorFlow backend. 54 | headline is 85.38 % clickbaity 55 | ``` 56 | 57 | ``` 58 | $ python src/detect.py " 15 Beautifully Created Doors You Need To See Before You Die. The One In Soho Blew Me Away" 59 | Using TensorFlow backend. 60 | headline is 52.29 % clickbaity 61 | ``` 62 | 63 | ``` 64 | $ python src/detect.py "French presidential candidate Emmanuel Macrons anti-system angle is a sham | Philippe Marlire" 65 | Using TensorFlow backend. 66 | headline is 0.05 % clickbaity 67 | ``` 68 | 69 | ## Model Summary 70 | ``` 71 | ____________________________________________________________________________________________________ 72 | Layer (type) Output Shape Param # Connected to 73 | ==================================================================================================== 74 | embedding_1 (Embedding) (None, 20, 30) 195000 embedding_input_1[0][0] 75 | ____________________________________________________________________________________________________ 76 | convolution1d_1 (Convolution1D) (None, 19, 32) 1952 embedding_1[0][0] 77 | ____________________________________________________________________________________________________ 78 | batchnormalization_1 (BatchNorma (None, 19, 32) 128 convolution1d_1[0][0] 79 | ____________________________________________________________________________________________________ 80 | activation_1 (Activation) (None, 19, 32) 0 batchnormalization_1[0][0] 81 | ____________________________________________________________________________________________________ 82 | convolution1d_2 (Convolution1D) (None, 18, 32) 2080 activation_1[0][0] 83 | ____________________________________________________________________________________________________ 84 | batchnormalization_2 (BatchNorma (None, 18, 32) 128 convolution1d_2[0][0] 85 | ____________________________________________________________________________________________________ 86 | activation_2 (Activation) (None, 18, 32) 0 batchnormalization_2[0][0] 87 | ____________________________________________________________________________________________________ 88 | convolution1d_3 (Convolution1D) (None, 17, 32) 2080 activation_2[0][0] 89 | ____________________________________________________________________________________________________ 90 | batchnormalization_3 (BatchNorma (None, 17, 32) 128 convolution1d_3[0][0] 91 | ____________________________________________________________________________________________________ 92 | activation_3 (Activation) (None, 17, 32) 0 batchnormalization_3[0][0] 93 | ____________________________________________________________________________________________________ 94 | maxpooling1d_1 (MaxPooling1D) (None, 1, 32) 0 activation_3[0][0] 95 | ____________________________________________________________________________________________________ 96 | flatten_1 (Flatten) (None, 32) 0 maxpooling1d_1[0][0] 97 | ____________________________________________________________________________________________________ 98 | dense_1 (Dense) (None, 1) 33 flatten_1[0][0] 99 | ____________________________________________________________________________________________________ 100 | batchnormalization_4 (BatchNorma (None, 1) 4 dense_1[0][0] 101 | ____________________________________________________________________________________________________ 102 | activation_4 (Activation) (None, 1) 0 batchnormalization_4[0][0] 103 | ==================================================================================================== 104 | Total params: 201,533 105 | Trainable params: 201,339 106 | Non-trainable params: 194 107 | ____________________________________________________________________________________________________ 108 | 109 | ``` 110 | 111 | 112 | ## Data 113 | The dataset consists of about 12,000 headlines half of which are clickbait. 114 | The clickbait headlines were fetched from BuzzFeed, NewsWeek, The Times of India and, 115 | The Huffington Post. 116 | The genuine/non-clickbait headlines were fetched from The Hindu, The Guardian, The Economist, 117 | TechCrunch, The wall street journal, National Geographic and, The Indian Express. 118 | 119 | Some of the data was from 120 | [peterldowns's clickbait-classifier repository](https://github.com/peterldowns/clickbait-classifier.git) 121 | 122 | 123 | ## Pretrained Embeddings 124 | I used Stanford's Glove Pretrained Embeddings PCA-ed to 30 dimensions. This sped up the 125 | training. 126 | 127 | 128 | ## Improving accuracy 129 | To improve Accuracy, 130 | - Increase Embedding layer dimension (Currently it is 30) - `src/preprocess_embeddings.py` 131 | - Use more data 132 | - Increase vocabulary size - `src/preprocess_text.py` 133 | - Increase maximum sequence length - `src/train.py` 134 | - Do better data cleaning 135 | -------------------------------------------------------------------------------- /notebooks/Comparision with other approaches.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Comparision with other approaches" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "The aim of this experiment is to compare the Deep Learning model with other Conventional ML approaches to the same problem of clickbait detection." 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 1, 20 | "metadata": { 21 | "collapsed": false 22 | }, 23 | "outputs": [ 24 | { 25 | "name": "stderr", 26 | "output_type": "stream", 27 | "text": [ 28 | "Using TensorFlow backend.\n" 29 | ] 30 | } 31 | ], 32 | "source": [ 33 | "import sys\n", 34 | "import string \n", 35 | "import re\n", 36 | "import numpy as np\n", 37 | "from sklearn import metrics\n", 38 | "from sklearn.feature_extraction.text import TfidfTransformer, CountVectorizer\n", 39 | "from sklearn.svm import SVC\n", 40 | "from sklearn.pipeline import Pipeline\n", 41 | "from keras.models import load_model\n", 42 | "from keras.preprocessing import sequence" 43 | ] 44 | }, 45 | { 46 | "cell_type": "code", 47 | "execution_count": 2, 48 | "metadata": { 49 | "collapsed": false 50 | }, 51 | "outputs": [ 52 | { 53 | "name": "stdout", 54 | "output_type": "stream", 55 | "text": [ 56 | "Clickbait: \n", 57 | "1 0 celebs killin the elf on the shelf game\n", 58 | "all the looks at the people ' s choice awards\n", 59 | "does kylie jenner know how to wear ? a very serious investigation\n", 60 | "2 4 gifs that show how corinne is the greatest bachelor yet\n", 61 | "all the looks at the 2 0 1 7 golden globes\n", 62 | "--------------------------------------------------\n", 63 | "Genuine: \n", 64 | "a \n", 65 | "bill to replace jallikattu ordinance will be placed in assembly : tn governor\n", 66 | "myanmar asks for time and space to solve rohingya crisis\n", 67 | "the nowhere people next door\n", 68 | "a tussle between judges and jallikattu supporters on who more for bulls\n" 69 | ] 70 | } 71 | ], 72 | "source": [ 73 | "genuine = open(\"../data/genuine.preprocessed.txt\").read().split(\"\\n\")\n", 74 | "clickbait = open(\"../data/clickbait.preprocessed.txt\").read().split(\"\\n\")\n", 75 | "\n", 76 | "\n", 77 | "print \"Clickbait: \"\n", 78 | "for each in clickbait[:5]:\n", 79 | " print each\n", 80 | "print \"-\" * 50\n", 81 | "\n", 82 | "print \"Genuine: \"\n", 83 | "for each in genuine[:5]:\n", 84 | " print each\n", 85 | " \n", 86 | "\n", 87 | "data = clickbait + genuine\n", 88 | "labels = len(genuine) * [0] + len(clickbait) * [1] \n" 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "execution_count": 3, 94 | "metadata": { 95 | "collapsed": false 96 | }, 97 | "outputs": [ 98 | { 99 | "name": "stdout", 100 | "output_type": "stream", 101 | "text": [ 102 | "Clickbait: \n", 103 | "All The Looks At The People's Choice Awards\n", 104 | "Does Kylie Jenner Know How To Wear Coats? A Very Serious Investigation\n", 105 | "This Is What US Protests Looked Like In The '60s\n", 106 | "24 GIFs That Show How Corinne Is The Greatest \"Bachelor\" Villian Yet\n", 107 | "Nene Leakes And Kandi Burruss Finally \"See Each Other\" In A Good Way\n", 108 | "--------------------------------------------------\n", 109 | "Genuine: \n", 110 | "Mayawatis risky calculus\n", 111 | "L&T Q3 net up 39% at Rs 972 cr, co says note ban a disruptor\n", 112 | "Australian Open women's final: Serena beats sister Venus Williams to win 23rd Grand Slam\n", 113 | "It's Federer vs Nadal in Australian Open finals\n", 114 | "Medical board fails to make any conclusion in report on Sunandas death\n" 115 | ] 116 | } 117 | ], 118 | "source": [ 119 | "clickbait_valid = open(\"../data/clickbait.valid.txt\").read().split(\"\\n\")\n", 120 | "genuine_valid = open(\"../data/genuine.valid.txt\").read().split(\"\\n\")\n", 121 | "\n", 122 | "print \"Clickbait: \"\n", 123 | "for each in clickbait_valid[:5]:\n", 124 | " print each\n", 125 | "print \"-\" * 50\n", 126 | "\n", 127 | "print \"Genuine: \"\n", 128 | "for each in genuine_valid[:5]:\n", 129 | " print each\n", 130 | "\n", 131 | "valid_data = clickbait_valid + genuine_valid\n", 132 | "vocabulary = open(\"../data/vocabulary.txt\").read().split(\"\\n\")\n", 133 | "inverse_vocabulary = dict((word, i) for i, word in enumerate(vocabulary))\n", 134 | "\n", 135 | "\n", 136 | "valid_data = [\" \".join([w if w in vocabulary else \"\" for w in sent.split()]) for sent in valid_data]\n", 137 | "\n", 138 | "valid_labels = len(clickbait_valid) * [1] + len(genuine_valid) * [0]" 139 | ] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "execution_count": 4, 144 | "metadata": { 145 | "collapsed": false 146 | }, 147 | "outputs": [], 148 | "source": [ 149 | "svm_clf = Pipeline([(\"vect\", CountVectorizer()),\n", 150 | " (\"tfidf\", TfidfTransformer()),\n", 151 | " (\"clf\", SVC())])" 152 | ] 153 | }, 154 | { 155 | "cell_type": "code", 156 | "execution_count": 5, 157 | "metadata": { 158 | "collapsed": false 159 | }, 160 | "outputs": [], 161 | "source": [ 162 | "svm_clf.fit(data, labels);" 163 | ] 164 | }, 165 | { 166 | "cell_type": "code", 167 | "execution_count": 6, 168 | "metadata": { 169 | "collapsed": false 170 | }, 171 | "outputs": [], 172 | "source": [ 173 | "UNK = \"\"\n", 174 | "PAD = \"\"\n", 175 | "MATCH_MULTIPLE_SPACES = re.compile(\"\\ {2,}\")\n", 176 | "SEQUENCE_LENGTH = 20\n", 177 | "\n", 178 | "def words_to_indices(words):\n", 179 | " return [inverse_vocabulary.get(word, inverse_vocabulary[UNK]) for word in words]\n", 180 | "\n", 181 | "\n", 182 | "def clean(text):\n", 183 | " for punctuation in string.punctuation:\n", 184 | " text = text.replace(punctuation, \" \" + punctuation + \" \")\n", 185 | " for i in range(10):\n", 186 | " text = text.replace(str(i), \" \" + str(i) + \" \")\n", 187 | " text = MATCH_MULTIPLE_SPACES.sub(\" \", text)\n", 188 | " return text\n", 189 | "\n", 190 | "model = load_model(\"../models/detector.h5\")" 191 | ] 192 | }, 193 | { 194 | "cell_type": "code", 195 | "execution_count": 7, 196 | "metadata": { 197 | "collapsed": false 198 | }, 199 | "outputs": [], 200 | "source": [ 201 | "inputs = sequence.pad_sequences([words_to_indices(clean(sent.lower()).split()) for sent in valid_data], maxlen=SEQUENCE_LENGTH)\n", 202 | "predictions = model.predict(inputs)\n", 203 | "predictions = predictions.flatten() > .5" 204 | ] 205 | }, 206 | { 207 | "cell_type": "code", 208 | "execution_count": 9, 209 | "metadata": { 210 | "collapsed": false 211 | }, 212 | "outputs": [ 213 | { 214 | "name": "stdout", 215 | "output_type": "stream", 216 | "text": [ 217 | "SVM\n", 218 | " precision recall f1-score support\n", 219 | "\n", 220 | " 0 0.49 1.00 0.66 74\n", 221 | " 1 0.00 0.00 0.00 76\n", 222 | "\n", 223 | "avg / total 0.24 0.49 0.33 150\n", 224 | "\n", 225 | "--------------------------------------------------\n", 226 | "Convolutional Neural Network\n", 227 | " precision recall f1-score support\n", 228 | "\n", 229 | " 0 0.46 0.81 0.59 74\n", 230 | " 1 0.26 0.07 0.11 76\n", 231 | "\n", 232 | "avg / total 0.36 0.43 0.34 150\n", 233 | "\n" 234 | ] 235 | } 236 | ], 237 | "source": [ 238 | "print (\"SVM\")\n", 239 | "print (metrics.classification_report(valid_labels, svm_clf.predict(valid_data)))\n", 240 | "\n", 241 | "print \"-\" * 50\n", 242 | "\n", 243 | "print (\"Convolutional Neural Network\")\n", 244 | "print (metrics.classification_report(valid_labels, predictions))" 245 | ] 246 | }, 247 | { 248 | "cell_type": "code", 249 | "execution_count": null, 250 | "metadata": { 251 | "collapsed": true 252 | }, 253 | "outputs": [], 254 | "source": [] 255 | } 256 | ], 257 | "metadata": { 258 | "anaconda-cloud": {}, 259 | "kernelspec": { 260 | "display_name": "Python [conda root]", 261 | "language": "python", 262 | "name": "conda-root-py" 263 | }, 264 | "language_info": { 265 | "codemirror_mode": { 266 | "name": "ipython", 267 | "version": 2 268 | }, 269 | "file_extension": ".py", 270 | "mimetype": "text/x-python", 271 | "name": "python", 272 | "nbconvert_exporter": "python", 273 | "pygments_lexer": "ipython2", 274 | "version": "2.7.12" 275 | } 276 | }, 277 | "nbformat": 4, 278 | "nbformat_minor": 1 279 | } 280 | -------------------------------------------------------------------------------- /notebooks/Looking for Sneaky Clickbait.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Looking for Sneaky Clickbait" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "The aim of this experiment is to evaluate the clickbait detector model and find out what kind of clickbait does it fail to detect." 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 1, 20 | "metadata": { 21 | "collapsed": false 22 | }, 23 | "outputs": [ 24 | { 25 | "name": "stderr", 26 | "output_type": "stream", 27 | "text": [ 28 | "Using TensorFlow backend.\n" 29 | ] 30 | } 31 | ], 32 | "source": [ 33 | "from keras.models import load_model\n", 34 | "from keras.preprocessing import sequence\n", 35 | "import sys\n", 36 | "import string \n", 37 | "import re\n", 38 | "\n", 39 | "\n", 40 | "UNK = \"\"\n", 41 | "PAD = \"\"\n", 42 | "MATCH_MULTIPLE_SPACES = re.compile(\"\\ {2,}\")\n", 43 | "SEQUENCE_LENGTH = 20" 44 | ] 45 | }, 46 | { 47 | "cell_type": "markdown", 48 | "metadata": {}, 49 | "source": [ 50 | "## Load the model and vocabulary" 51 | ] 52 | }, 53 | { 54 | "cell_type": "code", 55 | "execution_count": 2, 56 | "metadata": { 57 | "collapsed": false 58 | }, 59 | "outputs": [], 60 | "source": [ 61 | "model = load_model(\"../models/detector.h5\")\n", 62 | "\n", 63 | "\n", 64 | "vocabulary = open(\"../data/vocabulary.txt\").read().split(\"\\n\")\n", 65 | "inverse_vocabulary = dict((word, i) for i, word in enumerate(vocabulary))" 66 | ] 67 | }, 68 | { 69 | "cell_type": "markdown", 70 | "metadata": {}, 71 | "source": [ 72 | "## Load validation data" 73 | ] 74 | }, 75 | { 76 | "cell_type": "code", 77 | "execution_count": 3, 78 | "metadata": { 79 | "collapsed": false 80 | }, 81 | "outputs": [ 82 | { 83 | "name": "stdout", 84 | "output_type": "stream", 85 | "text": [ 86 | "Clickbait: \n", 87 | "All The Looks At The People's Choice Awards\n", 88 | "Does Kylie Jenner Know How To Wear Coats? A Very Serious Investigation\n", 89 | "This Is What US Protests Looked Like In The '60s\n", 90 | "24 GIFs That Show How Corinne Is The Greatest \"Bachelor\" Villian Yet\n", 91 | "Nene Leakes And Kandi Burruss Finally \"See Each Other\" In A Good Way\n", 92 | "--------------------------------------------------\n", 93 | "Genuine: \n", 94 | "Mayawatis risky calculus\n", 95 | "L&T Q3 net up 39% at Rs 972 cr, co says note ban a disruptor\n", 96 | "Australian Open women's final: Serena beats sister Venus Williams to win 23rd Grand Slam\n", 97 | "It's Federer vs Nadal in Australian Open finals\n", 98 | "Medical board fails to make any conclusion in report on Sunandas death\n" 99 | ] 100 | } 101 | ], 102 | "source": [ 103 | "clickbait = open(\"../data/clickbait.valid.txt\").read().split(\"\\n\")\n", 104 | "genuine = open(\"../data/genuine.valid.txt\").read().split(\"\\n\")\n", 105 | "\n", 106 | "print \"Clickbait: \"\n", 107 | "for each in clickbait[:5]:\n", 108 | " print each\n", 109 | "print \"-\" * 50\n", 110 | "\n", 111 | "print \"Genuine: \"\n", 112 | "for each in genuine[:5]:\n", 113 | " print each" 114 | ] 115 | }, 116 | { 117 | "cell_type": "code", 118 | "execution_count": 4, 119 | "metadata": { 120 | "collapsed": true 121 | }, 122 | "outputs": [], 123 | "source": [ 124 | "def words_to_indices(words):\n", 125 | " return [inverse_vocabulary.get(word, inverse_vocabulary[UNK]) for word in words]\n", 126 | "\n", 127 | "\n", 128 | "def clean(text):\n", 129 | " for punctuation in string.punctuation:\n", 130 | " text = text.replace(punctuation, \" \" + punctuation + \" \")\n", 131 | " for i in range(10):\n", 132 | " text = text.replace(str(i), \" \" + str(i) + \" \")\n", 133 | " text = MATCH_MULTIPLE_SPACES.sub(\" \", text)\n", 134 | " return text\n" 135 | ] 136 | }, 137 | { 138 | "cell_type": "markdown", 139 | "metadata": {}, 140 | "source": [ 141 | "## Genuine news marked as clickbait" 142 | ] 143 | }, 144 | { 145 | "cell_type": "code", 146 | "execution_count": 5, 147 | "metadata": { 148 | "collapsed": false 149 | }, 150 | "outputs": [ 151 | { 152 | "name": "stdout", 153 | "output_type": "stream", 154 | "text": [ 155 | "0.865757 A look at Trumps executive order on refugees, immigration\n", 156 | "0.90955 Malala heartbroken over Trumps ban on most defenceless refugees\n", 157 | "0.541996 The White House hints that tax reform could pay for the border wall\n", 158 | "0.786731 Understanding the spike in Chinas birth rate\n", 159 | "0.685651 President Trumps infrastructure plans probably involve more tolls\n", 160 | "0.61867 Digital immortality for the Holocausts last survivors\n", 161 | "0.504147 Printed human body parts could soon be available for transplant\n", 162 | "0.979102 Germanys Social Democrats pick Martin Schulz as leader\n", 163 | "0.843225 Netgears Orbi might be the best Wi-Fi router Ive everused\n", 164 | "0.934488 Twitter releases national securityletters\n", 165 | "0.736603 Zuckerberg defends immigrants threatened byTrump\n", 166 | "0.807549 Doug shows you how to get rid of Amazon Freshtotes\n", 167 | "0.925443 Rogue National Park Service Twitter account says its no longer run by government employeesbut maybe it neverwas\n", 168 | "0.839666 Watch a Massive Fire Tornado Sweep the Outback\n", 169 | "0.991364 3 Things You Need to Know About the Science Rebellion Against Trump\n", 170 | "0.729308 These Are the Defiant \"Water Protectors\" of Standing Rock\n", 171 | "0.956611 Watch Alien Worlds Whirl Around a Distant Star\n", 172 | "0.563429 Why a Volcano Has Erupted Almost Every Hour for 94 Years\n", 173 | "0.93334 4 Key Impacts of the Keystone XL and Dakota Access Pipelines\n", 174 | "0.61299 Human-Pig Hybrid Created in the LabHere Are the Facts\n", 175 | "--------------------------------------------------\n", 176 | "20 out of 74 wrong.\n" 177 | ] 178 | } 179 | ], 180 | "source": [ 181 | "wrong_genuine_count = 0\n", 182 | "for each in genuine:\n", 183 | " cleaned = clean(each.encode(\"ascii\", \"ignore\").lower()).split()\n", 184 | " indices = words_to_indices(cleaned)\n", 185 | " indices = sequence.pad_sequences([indices], maxlen=SEQUENCE_LENGTH)\n", 186 | " prediction = model.predict(indices)[0, 0]\n", 187 | " if prediction > .5:\n", 188 | " print prediction, each\n", 189 | " wrong_genuine_count += 1\n", 190 | "\n", 191 | "print \"-\" * 50\n", 192 | "print \"{0} out of {1} wrong.\".format(wrong_genuine_count, len(genuine))" 193 | ] 194 | }, 195 | { 196 | "cell_type": "markdown", 197 | "metadata": {}, 198 | "source": [ 199 | "## Clickbait not detected" 200 | ] 201 | }, 202 | { 203 | "cell_type": "code", 204 | "execution_count": 6, 205 | "metadata": { 206 | "collapsed": false 207 | }, 208 | "outputs": [ 209 | { 210 | "name": "stdout", 211 | "output_type": "stream", 212 | "text": [ 213 | "0.347193 Nene Leakes And Kandi Burruss Finally \"See Each Other\" In A Good Way\n", 214 | "0.446493 Channing Tatum Is Currently Teaching Himself How To Play Piano\n", 215 | "0.244268 Trump signs executive order to 'keep radical Islamic terrorists out' of U.S.\n", 216 | "0.486077 A look at Neil Gorsuch, a possible Trump Supreme Court nominee\n", 217 | "0.101281 Haley to U.N. allies: back us or we'll take names\n", 218 | "0.409009 Do Donald Trump's criticisms of NATO have merit? | Opinion\n", 219 | "0.139018 Mexico foreign minister says paying for Trump's border wall \"totally unacceptable\"\n", 220 | "0.0512496 China is stepping up as Donald Trump withdraws from the world stage | Opinion\n", 221 | "0.135089 Buffett, Gates express optimism for U.S. in Trump era\n", 222 | "0.154335 Can Congos footballers help ease political tensions?\n", 223 | "0.113401 Aruba; Five Star Island Goes Green\n", 224 | "0.0229274 Michael Wolff: Why the media keeps losing to Donald Trump\n", 225 | "0.31196 Vijay Mallya: I begged for help, not loans - Times of India\n", 226 | "0.117259 Union Budget 2017: What manufacturing sector expect from Arun Jaitley- The Times of India\n", 227 | "0.183548 Read The Full Text Of Donald Trump's Executive Order Limiting Muslim Entry To The U.S.\n", 228 | "0.0772077 Weekend Roundup: A New 'Nationalist International' Challenges The Old Globalization\n", 229 | "0.0710645 Anne Frank Was A Refugee, Too\n", 230 | "0.437475 Can You Guess Which Drugs Kill The Most People In The UK?\n", 231 | "0.389437 GQ Gives Donald Trump An Arguably Much-Needed Makeover\n", 232 | "0.193617 Trump To Publish Weekly List Of Crimes Committed By Undocumented Immigrants In Sanctuary Cities\n", 233 | "0.446493 Channing Tatum Is Currently Teaching Himself How To Play Piano\n", 234 | "0.347193 Nene Leakes And Kandi Burruss Finally \"See Each Other\" In A Good Way\n", 235 | "--------------------------------------------------\n", 236 | "22 out of 76 wrong.\n" 237 | ] 238 | } 239 | ], 240 | "source": [ 241 | "wrong_clickbait_count = 0\n", 242 | "for each in clickbait:\n", 243 | " cleaned = clean(each.encode(\"ascii\", \"ignore\").lower()).split()\n", 244 | " indices = words_to_indices(cleaned)\n", 245 | " indices = sequence.pad_sequences([indices], maxlen=SEQUENCE_LENGTH)\n", 246 | " prediction = model.predict(indices)[0, 0]\n", 247 | " if prediction < .5:\n", 248 | " print prediction, each\n", 249 | " wrong_clickbait_count += 1\n", 250 | "\n", 251 | "print \"-\" * 50\n", 252 | "print \"{0} out of {1} wrong.\".format(wrong_clickbait_count, len(clickbait))" 253 | ] 254 | } 255 | ], 256 | "metadata": { 257 | "anaconda-cloud": {}, 258 | "kernelspec": { 259 | "display_name": "Python [conda root]", 260 | "language": "python", 261 | "name": "conda-root-py" 262 | }, 263 | "language_info": { 264 | "codemirror_mode": { 265 | "name": "ipython", 266 | "version": 2 267 | }, 268 | "file_extension": ".py", 269 | "mimetype": "text/x-python", 270 | "name": "python", 271 | "nbconvert_exporter": "python", 272 | "pygments_lexer": "ipython2", 273 | "version": "2.7.12" 274 | } 275 | }, 276 | "nbformat": 4, 277 | "nbformat_minor": 1 278 | } 279 | -------------------------------------------------------------------------------- /notebooks/Finetuning on Reddit data.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Finetuning on Reddit data" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "metadata": { 14 | "collapsed": false 15 | }, 16 | "outputs": [ 17 | { 18 | "name": "stderr", 19 | "output_type": "stream", 20 | "text": [ 21 | "Using TensorFlow backend.\n" 22 | ] 23 | } 24 | ], 25 | "source": [ 26 | "import sys, os\n", 27 | "sys.path.insert(0, os.path.join(os.path.abspath(os.pardir)))\n", 28 | "\n", 29 | "import numpy as np\n", 30 | "from keras.preprocessing import sequence\n", 31 | "from sklearn.cross_validation import train_test_split\n", 32 | "from src.models.convnets import ConvolutionalNet\n", 33 | "from src.preprocessors.preprocess_text import clean, mark_unknown_words\n", 34 | "from src.train import words_to_indices, SEQUENCE_LENGTH, EMBEDDING_DIMENSION, MODEL_FILE" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 2, 40 | "metadata": { 41 | "collapsed": false 42 | }, 43 | "outputs": [ 44 | { 45 | "name": "stdout", 46 | "output_type": "stream", 47 | "text": [ 48 | "Clickbait\n", 49 | "--------------------------------------------------\n", 50 | "1. mom a tough after she starts her daughter in the car\n", 51 | "2. if you see a $ 1 0 0 bill on your car , be of this scam\n", 52 | "3. an iphone 7 with an iphone case\n", 53 | "4. she knows i lied\n", 54 | "5. bernie sanders could replace president trump with little known \n", 55 | "--------------------------------------------------\n", 56 | "Genuine\n", 57 | "--------------------------------------------------\n", 58 | "1. says my great grandparents were denied in australia & amp ; were murdered in - the jew terrorists who were ' about in as the twin came down on 9 1 1 have had in since the day of the outrage - / steven \n", 59 | "2. despite what you might think , are not stupid\n", 60 | "3. challenge : the real story of a military exercise and its legacy\n", 61 | "4. death toll now 7 5 in , brazil as chaos \n", 62 | "5. bans the daily mail as a source for being ' '\n", 63 | "--------------------------------------------------\n" 64 | ] 65 | } 66 | ], 67 | "source": [ 68 | "vocabulary = open(\"../data/vocabulary.txt\").read().split(\"\\n\")\n", 69 | "inverse_vocabulary = dict((word, i) for i, word in enumerate(vocabulary))\n", 70 | "\n", 71 | "clickbait = open(\"../data/reddit/clickbait-reddit.txt\").read() + \"\\n\"\n", 72 | "clickbait += open(\"../data/reddit/clickbait-top-reddit.txt\").read()\n", 73 | "clickbait = clean(clickbait)\n", 74 | "clickbait = clickbait.split(\"\\n\")\n", 75 | "clickbait = list(set(clickbait))\n", 76 | "clickbait = [mark_unknown_words(vocabulary, title) for title in clickbait]\n", 77 | "\n", 78 | "print \"Clickbait\"\n", 79 | "print \"-\" * 50\n", 80 | "for i, each in enumerate(clickbait[:5]):\n", 81 | " print \"{0}. {1}\".format(i+1, each)\n", 82 | "print \"-\" * 50\n", 83 | "\n", 84 | "genuine = open(\"../data/reddit/genuine-reddit.txt\").read() + \"\\n\"\n", 85 | "genuine += open(\"../data/reddit/news-reddit.txt\").read()\n", 86 | "genuine = clean(genuine)\n", 87 | "genuine = genuine.split(\"\\n\")\n", 88 | "genuine = list(set(genuine))\n", 89 | "genuine = [mark_unknown_words(vocabulary, title) for title in genuine]\n", 90 | "\n", 91 | "print \"Genuine\"\n", 92 | "print \"-\" * 50\n", 93 | "for i, each in enumerate(genuine[:5]):\n", 94 | " print \"{0}. {1}\".format(i+1, each)\n", 95 | "print \"-\" * 50\n" 96 | ] 97 | }, 98 | { 99 | "cell_type": "code", 100 | "execution_count": 3, 101 | "metadata": { 102 | "collapsed": false 103 | }, 104 | "outputs": [], 105 | "source": [ 106 | "C = sequence.pad_sequences([words_to_indices(inverse_vocabulary, sentence.split()) for sentence in clickbait], maxlen=SEQUENCE_LENGTH)\n", 107 | "G = sequence.pad_sequences([words_to_indices(inverse_vocabulary, sentence.split()) for sentence in genuine], maxlen=SEQUENCE_LENGTH)\n", 108 | "\n", 109 | "X = np.concatenate([C, G], axis=0)\n", 110 | "y = np.array([[1] * C.shape[0] + [0] * G.shape[0]], dtype=np.int32).T\n", 111 | "p = np.random.permutation(y.shape[0])\n", 112 | "X = X[p]\n", 113 | "y = y[p]\n", 114 | "\n", 115 | "X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y)" 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 4, 121 | "metadata": { 122 | "collapsed": false 123 | }, 124 | "outputs": [], 125 | "source": [ 126 | "params = dict(vocabulary_size=len(vocabulary), embedding_dimension=EMBEDDING_DIMENSION, input_length=SEQUENCE_LENGTH)\n", 127 | "model = ConvolutionalNet(**params)" 128 | ] 129 | }, 130 | { 131 | "cell_type": "code", 132 | "execution_count": 5, 133 | "metadata": { 134 | "collapsed": false 135 | }, 136 | "outputs": [ 137 | { 138 | "data": { 139 | "image/svg+xml": [ 140 | "\n", 141 | "\n", 142 | "G\n", 143 | "\n", 144 | "\n", 145 | "140099902367696\n", 146 | "\n", 147 | "embedding_input_1: InputLayer\n", 148 | "\n", 149 | "\n", 150 | "140098849803920\n", 151 | "\n", 152 | "embedding_1: Embedding\n", 153 | "\n", 154 | "\n", 155 | "140099902367696->140098849803920\n", 156 | "\n", 157 | "\n", 158 | "\n", 159 | "\n", 160 | "140099902366992\n", 161 | "\n", 162 | "convolution1d_1: Convolution1D\n", 163 | "\n", 164 | "\n", 165 | "140098849803920->140099902366992\n", 166 | "\n", 167 | "\n", 168 | "\n", 169 | "\n", 170 | "140098848505552\n", 171 | "\n", 172 | "batchnormalization_1: BatchNormalization\n", 173 | "\n", 174 | "\n", 175 | "140099902366992->140098848505552\n", 176 | "\n", 177 | "\n", 178 | "\n", 179 | "\n", 180 | "140098848276304\n", 181 | "\n", 182 | "activation_1: Activation\n", 183 | "\n", 184 | "\n", 185 | "140098848505552->140098848276304\n", 186 | "\n", 187 | "\n", 188 | "\n", 189 | "\n", 190 | "140098847862736\n", 191 | "\n", 192 | "convolution1d_2: Convolution1D\n", 193 | "\n", 194 | "\n", 195 | "140098848276304->140098847862736\n", 196 | "\n", 197 | "\n", 198 | "\n", 199 | "\n", 200 | "140098847471504\n", 201 | "\n", 202 | "batchnormalization_2: BatchNormalization\n", 203 | "\n", 204 | "\n", 205 | "140098847862736->140098847471504\n", 206 | "\n", 207 | "\n", 208 | "\n", 209 | "\n", 210 | "140098846703248\n", 211 | "\n", 212 | "activation_2: Activation\n", 213 | "\n", 214 | "\n", 215 | "140098847471504->140098846703248\n", 216 | "\n", 217 | "\n", 218 | "\n", 219 | "\n", 220 | "140098846769104\n", 221 | "\n", 222 | "convolution1d_3: Convolution1D\n", 223 | "\n", 224 | "\n", 225 | "140098846703248->140098846769104\n", 226 | "\n", 227 | "\n", 228 | "\n", 229 | "\n", 230 | "140098846090384\n", 231 | "\n", 232 | "batchnormalization_3: BatchNormalization\n", 233 | "\n", 234 | "\n", 235 | "140098846769104->140098846090384\n", 236 | "\n", 237 | "\n", 238 | "\n", 239 | "\n", 240 | "140098845989008\n", 241 | "\n", 242 | "activation_3: Activation\n", 243 | "\n", 244 | "\n", 245 | "140098846090384->140098845989008\n", 246 | "\n", 247 | "\n", 248 | "\n", 249 | "\n", 250 | "140098845934928\n", 251 | "\n", 252 | "maxpooling1d_1: MaxPooling1D\n", 253 | "\n", 254 | "\n", 255 | "140098845989008->140098845934928\n", 256 | "\n", 257 | "\n", 258 | "\n", 259 | "\n", 260 | "140098845793552\n", 261 | "\n", 262 | "flatten_1: Flatten\n", 263 | "\n", 264 | "\n", 265 | "140098845934928->140098845793552\n", 266 | "\n", 267 | "\n", 268 | "\n", 269 | "\n", 270 | "140098845133776\n", 271 | "\n", 272 | "dense_1: Dense\n", 273 | "\n", 274 | "\n", 275 | "140098845793552->140098845133776\n", 276 | "\n", 277 | "\n", 278 | "\n", 279 | "\n", 280 | "140098844866896\n", 281 | "\n", 282 | "batchnormalization_4: BatchNormalization\n", 283 | "\n", 284 | "\n", 285 | "140098845133776->140098844866896\n", 286 | "\n", 287 | "\n", 288 | "\n", 289 | "\n", 290 | "140098844660240\n", 291 | "\n", 292 | "activation_4: Activation\n", 293 | "\n", 294 | "\n", 295 | "140098844866896->140098844660240\n", 296 | "\n", 297 | "\n", 298 | "\n", 299 | "\n", 300 | "" 301 | ], 302 | "text/plain": [ 303 | "" 304 | ] 305 | }, 306 | "execution_count": 5, 307 | "metadata": {}, 308 | "output_type": "execute_result" 309 | } 310 | ], 311 | "source": [ 312 | "from IPython.display import SVG\n", 313 | "from keras.utils.visualize_util import model_to_dot\n", 314 | "\n", 315 | "\n", 316 | "SVG(model_to_dot(model).create(prog=\"dot\", format=\"svg\"))" 317 | ] 318 | }, 319 | { 320 | "cell_type": "code", 321 | "execution_count": 22, 322 | "metadata": { 323 | "collapsed": false 324 | }, 325 | "outputs": [], 326 | "source": [ 327 | "from keras.layers import Convolution1D, Dense\n", 328 | "from keras.regularizers import activity_l1l2\n", 329 | "from keras.optimizers import SGD, Adam\n", 330 | "\n", 331 | "model.load_weights(\"../models/detector.h5\")\n", 332 | "\n", 333 | "for layer in model.layers:\n", 334 | " layer.trainable = False\n", 335 | "\n", 336 | "for layer in model.layers[1:]:\n", 337 | " if type(layer) == Dense or type(layer) == Convolution1D:\n", 338 | " layer.W_regularizer=None\n", 339 | " layer.activity_regularizer=activity_l1l2(0.05)\n", 340 | " layer.trainable = True\n", 341 | "\n", 342 | "\n", 343 | "\n", 344 | "model.compile(loss=\"binary_crossentropy\", optimizer=\"adam\", metrics=[\"acc\"])" 345 | ] 346 | }, 347 | { 348 | "cell_type": "code", 349 | "execution_count": 23, 350 | "metadata": { 351 | "collapsed": false 352 | }, 353 | "outputs": [ 354 | { 355 | "name": "stdout", 356 | "output_type": "stream", 357 | "text": [ 358 | "Train on 2541 samples, validate on 848 samples\n", 359 | "Epoch 1/5\n", 360 | "2541/2541 [==============================] - 4s - loss: 0.5413 - acc: 0.7824 - val_loss: 0.5357 - val_acc: 0.8066\n", 361 | "Epoch 2/5\n", 362 | "2541/2541 [==============================] - 1s - loss: 0.3778 - acc: 0.8512 - val_loss: 0.4626 - val_acc: 0.8160\n", 363 | "Epoch 3/5\n", 364 | "2541/2541 [==============================] - 1s - loss: 0.3174 - acc: 0.8835 - val_loss: 0.4603 - val_acc: 0.8031\n", 365 | "Epoch 4/5\n", 366 | "2541/2541 [==============================] - 1s - loss: 0.2693 - acc: 0.9071 - val_loss: 0.4570 - val_acc: 0.8208\n", 367 | "Epoch 5/5\n", 368 | "2541/2541 [==============================] - 1s - loss: 0.2418 - acc: 0.9260 - val_loss: 0.4623 - val_acc: 0.8125\n" 369 | ] 370 | }, 371 | { 372 | "data": { 373 | "text/plain": [ 374 | "" 375 | ] 376 | }, 377 | "execution_count": 23, 378 | "metadata": {}, 379 | "output_type": "execute_result" 380 | } 381 | ], 382 | "source": [ 383 | "model.fit(X_train, y_train, validation_data=(X_test, y_test), batch_size=32, nb_epoch=5, shuffle=True)" 384 | ] 385 | }, 386 | { 387 | "cell_type": "code", 388 | "execution_count": 24, 389 | "metadata": { 390 | "collapsed": true 391 | }, 392 | "outputs": [], 393 | "source": [ 394 | "model.save_weights(\"../models/detector.finetuned.h5\")" 395 | ] 396 | } 397 | ], 398 | "metadata": { 399 | "anaconda-cloud": {}, 400 | "kernelspec": { 401 | "display_name": "Python [conda root]", 402 | "language": "python", 403 | "name": "conda-root-py" 404 | }, 405 | "language_info": { 406 | "codemirror_mode": { 407 | "name": "ipython", 408 | "version": 2 409 | }, 410 | "file_extension": ".py", 411 | "mimetype": "text/x-python", 412 | "name": "python", 413 | "nbconvert_exporter": "python", 414 | "pygments_lexer": "ipython2", 415 | "version": "2.7.12" 416 | } 417 | }, 418 | "nbformat": 4, 419 | "nbformat_minor": 1 420 | } 421 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | {one line to give the program's name and a brief idea of what it does.} 635 | Copyright (C) {year} {name of author} 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | {project} Copyright (C) {year} {fullname} 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /data/vocabulary.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | to 4 | the 5 | ' 6 | , 7 | : 8 | 1 9 | . 10 | in 11 | of 12 | a 13 | 2 14 | - 15 | for 16 | you 17 | 0 18 | s 19 | and 20 | is 21 | on 22 | this 23 | that 24 | are 25 | trump 26 | 5 27 | with 28 | `` 29 | 3 30 | 7 31 | it 32 | at 33 | will 34 | ? 35 | from 36 | people 37 | 9 38 | as 39 | your 40 | 4 41 | these 42 | who 43 | be 44 | i 45 | after 46 | # 47 | what 48 | | 49 | t 50 | 6 51 | by 52 | says 53 | new 54 | but 55 | can 56 | how 57 | have 58 | out 59 | over 60 | up 61 | not 62 | 8 63 | his 64 | was 65 | about 66 | we 67 | just 68 | their 69 | ; 70 | photos 71 | make 72 | all 73 | world 74 | us 75 | no 76 | ! 77 | review 78 | they 79 | has 80 | most 81 | man 82 | he 83 | so 84 | an 85 | like 86 | things 87 | one 88 | never 89 | may 90 | & 91 | year 92 | police 93 | donald 94 | life 95 | see 96 | more 97 | if 98 | first 99 | why 100 | best 101 | get 102 | were 103 | india 104 | her 105 | time 106 | when 107 | do 108 | now 109 | should 110 | old 111 | against 112 | know 113 | mumbai 114 | ll 115 | day 116 | women 117 | ever 118 | christmas 119 | look 120 | into 121 | delhi 122 | need 123 | two 124 | here 125 | president 126 | happened 127 | too 128 | court 129 | quot 130 | times 131 | take 132 | its 133 | could 134 | than 135 | uk 136 | my 137 | australian 138 | open 139 | way 140 | woman 141 | made 142 | say 143 | china 144 | england 145 | obama 146 | actually 147 | would 148 | want 149 | years 150 | love 151 | city 152 | back 153 | kids 154 | me 155 | pics 156 | had 157 | really 158 | them 159 | death 160 | show 161 | off 162 | before 163 | real 164 | re 165 | case 166 | m 167 | inauguration 168 | only 169 | down 170 | bjp 171 | change 172 | win 173 | dog 174 | believe 175 | ve 176 | being 177 | south 178 | high 179 | our 180 | video 181 | family 182 | home 183 | got 184 | found 185 | girl 186 | house 187 | west 188 | animals 189 | blast 190 | won 191 | amazing 192 | kolkata 193 | been 194 | pm 195 | looks 196 | right 197 | help 198 | live 199 | held 200 | go 201 | dead 202 | every 203 | big 204 | still 205 | killed 206 | around 207 | three 208 | or 209 | last 210 | trumps 211 | arrested 212 | hit 213 | hilarious 214 | state 215 | next 216 | $ 217 | much 218 | letters 219 | did 220 | cup 221 | election 222 | black 223 | watch 224 | week 225 | incredible 226 | white 227 | work 228 | top 229 | facebook 230 | odi 231 | dogs 232 | she 233 | better 234 | chief 235 | murder 236 | news 237 | there 238 | tv 239 | bmc 240 | good 241 | polls 242 | gifts 243 | bangkok 244 | study 245 | little 246 | set 247 | party 248 | north 249 | even 250 | deal 251 | think 252 | thought 253 | reasons 254 | anti 255 | guy 256 | pictures 257 | attack 258 | seen 259 | stop 260 | again 261 | under 262 | heart 263 | during 264 | twitter 265 | korea 266 | food 267 | some 268 | maharashtra 269 | speech 270 | school 271 | series 272 | fake 273 | going 274 | girls 275 | fire 276 | government 277 | war 278 | car 279 | bad 280 | govt 281 | singh 282 | movie 283 | other 284 | team 285 | meet 286 | totally 287 | children 288 | everyone 289 | baby 290 | vs 291 | fight 292 | prove 293 | virat 294 | him 295 | mind 296 | national 297 | congress 298 | might 299 | america 300 | cats 301 | thing 302 | absolutely 303 | must 304 | second 305 | russia 306 | face 307 | takes 308 | art 309 | which 310 | plan 311 | adorable 312 | league 313 | rape 314 | four 315 | artist 316 | parents 317 | media 318 | protests 319 | don 320 | men 321 | gets 322 | student 323 | awesome 324 | wants 325 | beautiful 326 | making 327 | pakistan 328 | jallikattu 329 | perfect 330 | then 331 | shows 332 | rights 333 | give 334 | run 335 | through 336 | report 337 | today 338 | theresa 339 | holiday 340 | child 341 | where 342 | power 343 | d 344 | david 345 | order 346 | secretary 347 | climate 348 | modi 349 | pay 350 | find 351 | % 352 | without 353 | worst 354 | list 355 | kohli 356 | former 357 | rs 358 | teen 359 | sex 360 | history 361 | lost 362 | supreme 363 | keep 364 | chinese 365 | something 366 | until 367 | leave 368 | favorite 369 | australia 370 | does 371 | game 372 | ( 373 | disney 374 | hc 375 | ban 376 | ) 377 | story 378 | manchester 379 | john 380 | call 381 | dont 382 | minister 383 | sign 384 | doing 385 | put 386 | five 387 | office 388 | test 389 | very 390 | march 391 | star 392 | talks 393 | health 394 | wrong 395 | cops 396 | didn 397 | indian 398 | move 399 | russian 400 | omg 401 | died 402 | poll 403 | leader 404 | because 405 | great 406 | japan 407 | famous 408 | tells 409 | bengal 410 | round 411 | dad 412 | end 413 | six 414 | bombay 415 | own 416 | night 417 | missing 418 | left 419 | needs 420 | mom 421 | crisis 422 | calls 423 | use 424 | sena 425 | probe 426 | law 427 | security 428 | officials 429 | used 430 | accused 431 | protest 432 | tips 433 | college 434 | killing 435 | students 436 | any 437 | * 438 | asked 439 | whole 440 | makes 441 | air 442 | based 443 | suspect 444 | understand 445 | took 446 | someone 447 | united 448 | music 449 | facts 450 | die 451 | wait 452 | behind 453 | hard 454 | body 455 | risk 456 | feel 457 | muslim 458 | internet 459 | play 460 | books 461 | tell 462 | claims 463 | leaders 464 | london 465 | football 466 | tax 467 | son 468 | away 469 | post 470 | eu 471 | probably 472 | father 473 | cute 474 | money 475 | beat 476 | days 477 | nhs 478 | ways 479 | crash 480 | future 481 | action 482 | plans 483 | definitely 484 | places 485 | told 486 | daughter 487 | long 488 | asks 489 | human 490 | dies 491 | eyes 492 | cancer 493 | free 494 | workers 495 | stunning 496 | book 497 | inside 498 | moments 499 | another 500 | months 501 | cat 502 | while 503 | dhoni 504 | said 505 | didnt 506 | everything 507 | job 508 | lead 509 | harry 510 | plane 511 | rules 512 | victims 513 | taken 514 | true 515 | ms 516 | american 517 | wish 518 | well 519 | warns 520 | finally 521 | campaign 522 | secret 523 | shooting 524 | questions 525 | view 526 | vote 527 | th 528 | signs 529 | young 530 | photo 531 | january 532 | celebrity 533 | using 534 | instagram 535 | uber 536 | washington 537 | friends 538 | cant 539 | shot 540 | social 541 | season 542 | protesters 543 | sc 544 | wont 545 | tried 546 | care 547 | between 548 | lives 549 | chelsea 550 | bill 551 | la 552 | obituary 553 | genius 554 | getting 555 | let 556 | age 557 | animal 558 | hope 559 | punjab 560 | ahead 561 | key 562 | mexico 563 | guardian 564 | visit 565 | taking 566 | rise 567 | malaysia 568 | water 569 | kills 570 | rest 571 | full 572 | drug 573 | caught 574 | business 575 | trying 576 | lose 577 | boy 578 | different 579 | panel 580 | changed 581 | head 582 | name 583 | wife 584 | yuvraj 585 | once 586 | bomb 587 | pick 588 | bcci 589 | guess 590 | self 591 | try 592 | paul 593 | global 594 | celebrities 595 | ready 596 | final 597 | hits 598 | eat 599 | movies 600 | zealand 601 | names 602 | seeks 603 | faces 604 | gifs 605 | place 606 | far 607 | v 608 | return 609 | travel 610 | thai 611 | sea 612 | person 613 | clinton 614 | market 615 | ex 616 | michael 617 | went 618 | among 619 | peace 620 | injured 621 | hospital 622 | quotes 623 | andy 624 | turn 625 | come 626 | quiz 627 | notes 628 | possible 629 | williams 630 | church 631 | sexual 632 | green 633 | friend 634 | premier 635 | charged 636 | read 637 | month 638 | stories 639 | akhilesh 640 | shiv 641 | group 642 | assault 643 | same 644 | public 645 | least 646 | per 647 | train 648 | wedding 649 | hate 650 | row 651 | blow 652 | europe 653 | many 654 | having 655 | small 656 | politics 657 | official 658 | stars 659 | border 660 | cricket 661 | third 662 | living 663 | awkward 664 | almost 665 | taylor 666 | britain 667 | called 668 | words 669 | record 670 | jobs 671 | states 672 | trade 673 | land 674 | start 675 | cm 676 | become 677 | yet 678 | / 679 | looking 680 | wow 681 | fears 682 | completely 683 | data 684 | force 685 | heres 686 | talk 687 | dossier 688 | express 689 | laugh 690 | tough 691 | lakh 692 | hearing 693 | earth 694 | mother 695 | judge 696 | gives 697 | cash 698 | kill 699 | cbi 700 | elections 701 | tech 702 | support 703 | investigation 704 | arrest 705 | british 706 | pretty 707 | stay 708 | army 709 | weeks 710 | rock 711 | americans 712 | part 713 | fans 714 | laughing 715 | red 716 | works 717 | yadav 718 | powerful 719 | wanted 720 | officer 721 | tamil 722 | issues 723 | hot 724 | wins 725 | role 726 | winter 727 | potter 728 | note 729 | couple 730 | battle 731 | labour 732 | seeing 733 | bangladesh 734 | murray 735 | suicide 736 | jail 737 | tweets 738 | across 739 | coming 740 | google 741 | happens 742 | street 743 | victory 744 | ice 745 | level 746 | offers 747 | george 748 | stand 749 | press 750 | james 751 | hold 752 | tree 753 | birth 754 | knew 755 | always 756 | failed 757 | insane 758 | indias 759 | bring 760 | alliance 761 | toll 762 | bank 763 | turns 764 | forever 765 | editorial 766 | justice 767 | close 768 | university 769 | cent 770 | hollywood 771 | near 772 | gujarat 773 | fall 774 | share 775 | idea 776 | build 777 | administration 778 | match 779 | female 780 | amazon 781 | search 782 | reveal 783 | fails 784 | song 785 | kind 786 | reach 787 | political 788 | apple 789 | york 790 | centre 791 | tianjin 792 | release 793 | country 794 | boost 795 | am 796 | hours 797 | sent 798 | funny 799 | challenge 800 | less 801 | class 802 | fan 803 | east 804 | teacher 805 | yourself 806 | step 807 | policy 808 | points 809 | save 810 | daily 811 | guys 812 | cuts 813 | california 814 | enough 815 | middle 816 | u 817 | done 818 | epic 819 | others 820 | staff 821 | general 822 | goes 823 | weird 824 | returns 825 | cast 826 | celebs 827 | mamata 828 | fear 829 | mike 830 | beauty 831 | saying 832 | pre 833 | prison 834 | brilliant 835 | abortion 836 | saw 837 | single 838 | dark 839 | readers 840 | un 841 | bombing 842 | creepy 843 | board 844 | online 845 | soon 846 | makeup 847 | barack 848 | eating 849 | doesn 850 | till 851 | crore 852 | education 853 | likely 854 | massive 855 | roger 856 | buy 857 | bus 858 | amid 859 | talking 860 | players 861 | greatest 862 | ideas 863 | cities 864 | federer 865 | wine 866 | schools 867 | losing 868 | happy 869 | exist 870 | room 871 | quarter 872 | million 873 | science 874 | major 875 | runs 876 | families 877 | minor 878 | corbyn 879 | reality 880 | creative 881 | obamacare 882 | charges 883 | learned 884 | inspired 885 | department 886 | products 887 | perfectly 888 | foods 889 | kim 890 | normal 891 | clever 892 | violence 893 | obsessed 894 | fun 895 | decision 896 | tom 897 | snow 898 | gave 899 | check 900 | terrifying 901 | cards 902 | hotel 903 | golden 904 | survivors 905 | episode 906 | '' 907 | putin 908 | homeless 909 | gone 910 | past 911 | company 912 | mine 913 | fund 914 | budget 915 | santa 916 | legal 917 | send 918 | delay 919 | system 920 | indonesia 921 | stage 922 | chance 923 | seriously 924 | word 925 | evidence 926 | songs 927 | couldn 928 | message 929 | hacks 930 | since 931 | miss 932 | voters 933 | draw 934 | loss 935 | peter 936 | irani 937 | seek 938 | french 939 | rolls 940 | anyone 941 | reading 942 | chris 943 | point 944 | cut 945 | sets 946 | biggest 947 | special 948 | protect 949 | games 950 | gift 951 | brother 952 | huge 953 | nadu 954 | bizarre 955 | driver 956 | shrine 957 | valley 958 | finals 959 | nothing 960 | opposition 961 | confirmation 962 | clash 963 | liverpool 964 | wild 965 | hero 966 | k 967 | service 968 | project 969 | came 970 | presidency 971 | federal 972 | morgan 973 | race 974 | anything 975 | lot 976 | davos 977 | photographer 978 | isis 979 | together 980 | trial 981 | happen 982 | sri 983 | lol 984 | dream 985 | hell 986 | guide 987 | hands 988 | ben 989 | met 990 | mean 991 | classic 992 | hillary 993 | mark 994 | those 995 | everyday 996 | strikes 997 | airport 998 | term 999 | park 1000 | summer 1001 | foreign 1002 | access 1003 | phone 1004 | already 1005 | characters 1006 | civil 1007 | posts 1008 | crime 1009 | outside 1010 | alleged 1011 | tragedy 1012 | gang 1013 | nfl 1014 | patients 1015 | looked 1016 | closer 1017 | rare 1018 | strike 1019 | aleppo 1020 | accident 1021 | muslims 1022 | push 1023 | sp 1024 | saina 1025 | central 1026 | problem 1027 | band 1028 | forced 1029 | germany 1030 | dance 1031 | kedar 1032 | explosion 1033 | heard 1034 | card 1035 | suspects 1036 | assembly 1037 | sales 1038 | mps 1039 | officers 1040 | ambassador 1041 | nehwal 1042 | halloween 1043 | claim 1044 | wars 1045 | messages 1046 | san 1047 | tiny 1048 | meets 1049 | kid 1050 | yes 1051 | weekend 1052 | manager 1053 | elect 1054 | fast 1055 | warning 1056 | yr 1057 | tattoos 1058 | eye 1059 | pro 1060 | late 1061 | youth 1062 | restaurant 1063 | meeting 1064 | gay 1065 | giving 1066 | countries 1067 | homes 1068 | ads 1069 | deadly 1070 | hear 1071 | denies 1072 | comments 1073 | cool 1074 | port 1075 | fourth 1076 | lanka 1077 | director 1078 | energy 1079 | threat 1080 | martin 1081 | tumblr 1082 | few 1083 | light 1084 | ncp 1085 | brain 1086 | wall 1087 | member 1088 | fighting 1089 | entire 1090 | fail 1091 | allowed 1092 | scientists 1093 | rises 1094 | defends 1095 | crossword 1096 | firm 1097 | line 1098 | ago 1099 | avoid 1100 | housing 1101 | split 1102 | derailment 1103 | promises 1104 | welcome 1105 | remember 1106 | cold 1107 | non 1108 | ec 1109 | ceo 1110 | issue 1111 | horse 1112 | both 1113 | control 1114 | exactly 1115 | culture 1116 | isn 1117 | modern 1118 | seven 1119 | thoughts 1120 | jadhav 1121 | super 1122 | parade 1123 | allegedly 1124 | island 1125 | tribute 1126 | movement 1127 | africa 1128 | created 1129 | response 1130 | members 1131 | hopes 1132 | later 1133 | j 1134 | republicans 1135 | cause 1136 | changes 1137 | bail 1138 | dads 1139 | hunt 1140 | groups 1141 | released 1142 | couples 1143 | lets 1144 | bihar 1145 | racing 1146 | breaking 1147 | style 1148 | expect 1149 | hiv 1150 | finds 1151 | fbi 1152 | mulayam 1153 | nick 1154 | capital 1155 | abuse 1156 | bbc 1157 | taliban 1158 | loses 1159 | hilariously 1160 | reports 1161 | brought 1162 | nations 1163 | letter 1164 | castro 1165 | ham 1166 | raises 1167 | boyfriend 1168 | turned 1169 | color 1170 | hes 1171 | fatal 1172 | aap 1173 | cover 1174 | magic 1175 | ministers 1176 | thanksgiving 1177 | nuclear 1178 | youll 1179 | winning 1180 | drink 1181 | pressure 1182 | beach 1183 | break 1184 | observer 1185 | thanks 1186 | mays 1187 | trophy 1188 | emotional 1189 | eden 1190 | truly 1191 | poor 1192 | strong 1193 | nine 1194 | banks 1195 | syria 1196 | station 1197 | popular 1198 | camera 1199 | nation 1200 | beats 1201 | cutest 1202 | jones 1203 | adviser 1204 | meme 1205 | squad 1206 | seat 1207 | playing 1208 | pregnant 1209 | serena 1210 | pollution 1211 | gilmore 1212 | act 1213 | rex 1214 | wear 1215 | hair 1216 | tmc 1217 | dangerous 1218 | mp 1219 | driving 1220 | fashion 1221 | expected 1222 | gorgeous 1223 | cleared 1224 | reaction 1225 | turkey 1226 | table 1227 | booked 1228 | worse 1229 | flight 1230 | womens 1231 | seized 1232 | proof 1233 | english 1234 | debt 1235 | marches 1236 | unique 1237 | raped 1238 | choice 1239 | sh 1240 | rival 1241 | male 1242 | shocking 1243 | missed 1244 | relationship 1245 | gold 1246 | viral 1247 | results 1248 | wearing 1249 | owner 1250 | means 1251 | ends 1252 | cd 1253 | forces 1254 | khan 1255 | gun 1256 | half 1257 | title 1258 | suspected 1259 | inquiry 1260 | thinking 1261 | early 1262 | snapchat 1263 | prepare 1264 | injury 1265 | governor 1266 | himself 1267 | becomes 1268 | pure 1269 | intelligence 1270 | carrie 1271 | survive 1272 | palace 1273 | seem 1274 | pets 1275 | ugly 1276 | leaves 1277 | im 1278 | box 1279 | sharing 1280 | growing 1281 | council 1282 | coffee 1283 | mcdonald 1284 | each 1285 | road 1286 | film 1287 | advice 1288 | blood 1289 | services 1290 | scenes 1291 | century 1292 | johanna 1293 | dan 1294 | text 1295 | latest 1296 | host 1297 | deaths 1298 | kardashian 1299 | hundreds 1300 | despite 1301 | trust 1302 | attacks 1303 | tim 1304 | coach 1305 | guilty 1306 | chocolate 1307 | cases 1308 | factory 1309 | freaking 1310 | jokes 1311 | paper 1312 | pop 1313 | model 1314 | cabinet 1315 | longer 1316 | alt 1317 | anniversary 1318 | short 1319 | fisher 1320 | king 1321 | drunk 1322 | aged 1323 | holidays 1324 | december 1325 | inaugural 1326 | jeremy 1327 | prize 1328 | fix 1329 | babies 1330 | easy 1331 | transgender 1332 | alone 1333 | working 1334 | plea 1335 | drive 1336 | tears 1337 | awards 1338 | threatens 1339 | kerala 1340 | traffic 1341 | side 1342 | experience 1343 | scam 1344 | sense 1345 | dress 1346 | marriage 1347 | banned 1348 | picks 1349 | demands 1350 | cia 1351 | turkish 1352 | eve 1353 | standing 1354 | shut 1355 | festival 1356 | rbi 1357 | blowing 1358 | banerjee 1359 | worth 1360 | afcon 1361 | target 1362 | de 1363 | dc 1364 | ill 1365 | unlikely 1366 | victim 1367 | gandhi 1368 | toys 1369 | asking 1370 | crystal 1371 | brothers 1372 | helps 1373 | nod 1374 | hall 1375 | marina 1376 | xi 1377 | discovered 1378 | comes 1379 | billion 1380 | streets 1381 | answers 1382 | clean 1383 | northern 1384 | flights 1385 | manning 1386 | else 1387 | e 1388 | ryan 1389 | plays 1390 | links 1391 | quit 1392 | effect 1393 | diego 1394 | personal 1395 | website 1396 | sentence 1397 | dreams 1398 | diet 1399 | husband 1400 | tale 1401 | paid 1402 | doctor 1403 | images 1404 | girlfriend 1405 | delicious 1406 | funding 1407 | b 1408 | nominee 1409 | built 1410 | konta 1411 | development 1412 | private 1413 | scandal 1414 | account 1415 | recipes 1416 | seats 1417 | sleep 1418 | blue 1419 | pence 1420 | cycle 1421 | cook 1422 | local 1423 | farmers 1424 | bodies 1425 | moon 1426 | horses 1427 | friday 1428 | backs 1429 | leaving 1430 | app 1431 | weather 1432 | thousands 1433 | joe 1434 | cross 1435 | largest 1436 | lord 1437 | rescued 1438 | hidden 1439 | rd 1440 | thriller 1441 | eastern 1442 | player 1443 | attorney 1444 | citizens 1445 | melt 1446 | costumes 1447 | films 1448 | revealed 1449 | unbelievable 1450 | thailand 1451 | cuttack 1452 | complete 1453 | mass 1454 | richard 1455 | information 1456 | justin 1457 | plant 1458 | owners 1459 | activists 1460 | community 1461 | levels 1462 | arrests 1463 | continue 1464 | senate 1465 | melbourne 1466 | fresh 1467 | crying 1468 | stuff 1469 | site 1470 | repeal 1471 | simon 1472 | gardens 1473 | highlights 1474 | lodha 1475 | youre 1476 | launches 1477 | terror 1478 | cost 1479 | club 1480 | handle 1481 | drop 1482 | space 1483 | humans 1484 | nagpur 1485 | fraud 1486 | building 1487 | committee 1488 | reason 1489 | base 1490 | launch 1491 | arsenal 1492 | jeff 1493 | damn 1494 | historical 1495 | taiwan 1496 | remains 1497 | started 1498 | front 1499 | able 1500 | nato 1501 | badass 1502 | japanese 1503 | supporters 1504 | meal 1505 | starts 1506 | matter 1507 | obamas 1508 | troops 1509 | switch 1510 | language 1511 | track 1512 | according 1513 | oil 1514 | videos 1515 | file 1516 | illegal 1517 | important 1518 | doctors 1519 | thomas 1520 | giant 1521 | moment 1522 | inspiring 1523 | queen 1524 | chicago 1525 | named 1526 | announces 1527 | cop 1528 | helped 1529 | executive 1530 | paris 1531 | tweet 1532 | immigrants 1533 | tourists 1534 | defence 1535 | random 1536 | porn 1537 | sports 1538 | sessions 1539 | marathon 1540 | floods 1541 | changing 1542 | championship 1543 | barcelona 1544 | ticket 1545 | israel 1546 | strange 1547 | double 1548 | crazy 1549 | corruption 1550 | prince 1551 | fucking 1552 | question 1553 | problems 1554 | steve 1555 | deals 1556 | democrats 1557 | candidates 1558 | loan 1559 | transfer 1560 | cake 1561 | incredibly 1562 | lgbt 1563 | absolute 1564 | financial 1565 | silicon 1566 | collapse 1567 | camp 1568 | rich 1569 | crowd 1570 | sam 1571 | twin 1572 | breath 1573 | civic 1574 | paying 1575 | assam 1576 | sell 1577 | straight 1578 | netflix 1579 | comedy 1580 | truth 1581 | owned 1582 | ohio 1583 | roads 1584 | rule 1585 | interview 1586 | safe 1587 | crimes 1588 | daniel 1589 | dictionary 1590 | rate 1591 | kitchen 1592 | aid 1593 | hand 1594 | everton 1595 | theyre 1596 | fidel 1597 | weirdest 1598 | scores 1599 | economy 1600 | southern 1601 | fired 1602 | michelle 1603 | german 1604 | concert 1605 | sport 1606 | notice 1607 | aren 1608 | horror 1609 | decide 1610 | safety 1611 | novak 1612 | scotland 1613 | afghanistan 1614 | lawyers 1615 | paintings 1616 | artists 1617 | myanmar 1618 | adult 1619 | roof 1620 | sees 1621 | lyrics 1622 | ties 1623 | bar 1624 | vows 1625 | kin 1626 | form 1627 | accidentally 1628 | international 1629 | thane 1630 | suspended 1631 | bets 1632 | shop 1633 | either 1634 | nearly 1635 | malaysian 1636 | tour 1637 | shopping 1638 | running 1639 | pradesh 1640 | broken 1641 | mixed 1642 | syrian 1643 | town 1644 | mystery 1645 | cakes 1646 | gas 1647 | injuries 1648 | bit 1649 | pep 1650 | drama 1651 | ride 1652 | objects 1653 | talent 1654 | britney 1655 | f 1656 | democracy 1657 | loved 1658 | eight 1659 | raping 1660 | antonio 1661 | dakota 1662 | worlds 1663 | alive 1664 | brand 1665 | mh 1666 | centrelink 1667 | corrections 1668 | fantasy 1669 | ton 1670 | twice 1671 | nightmares 1672 | drugs 1673 | experts 1674 | existed 1675 | tie 1676 | djokovic 1677 | philippines 1678 | tillerson 1679 | watching 1680 | married 1681 | eoin 1682 | railway 1683 | trip 1684 | picture 1685 | deserve 1686 | lack 1687 | sons 1688 | flag 1689 | storm 1690 | wrote 1691 | spears 1692 | edge 1693 | pipeline 1694 | waiting 1695 | serial 1696 | massacre 1697 | sick 1698 | military 1699 | thrones 1700 | needed 1701 | nature 1702 | planned 1703 | opinions 1704 | projects 1705 | sure 1706 | harassment 1707 | offer 1708 | address 1709 | passengers 1710 | sky 1711 | angry 1712 | gambia 1713 | following 1714 | matches 1715 | records 1716 | ridiculous 1717 | prime 1718 | breathtaking 1719 | fame 1720 | haryana 1721 | image 1722 | parties 1723 | forgot 1724 | including 1725 | research 1726 | wayne 1727 | cry 1728 | pound 1729 | defeat 1730 | residents 1731 | charity 1732 | pieces 1733 | lawsuit 1734 | tattoo 1735 | literally 1736 | princesses 1737 | puts 1738 | details 1739 | saved 1740 | above 1741 | charge 1742 | hike 1743 | hacking 1744 | blames 1745 | kept 1746 | brown 1747 | trouble 1748 | price 1749 | leicester 1750 | blame 1751 | low 1752 | hospitals 1753 | tracks 1754 | fairy 1755 | beyond 1756 | uses 1757 | economic 1758 | william 1759 | jonathan 1760 | masters 1761 | evans 1762 | bears 1763 | kanye 1764 | klopp 1765 | page 1766 | nightclub 1767 | puppies 1768 | whose 1769 | excited 1770 | credit 1771 | warn 1772 | ward 1773 | attempt 1774 | surprise 1775 | failing 1776 | kejriwal 1777 | failure 1778 | sale 1779 | france 1780 | snl 1781 | mad 1782 | finance 1783 | canada 1784 | jackson 1785 | blasts 1786 | grants 1787 | custody 1788 | investigating 1789 | association 1790 | lovers 1791 | statement 1792 | orders 1793 | southampton 1794 | fine 1795 | please 1796 | drawings 1797 | create 1798 | spend 1799 | immigration 1800 | boys 1801 | thinks 1802 | depression 1803 | bunch 1804 | disease 1805 | narendra 1806 | doesnt 1807 | venus 1808 | hide 1809 | path 1810 | property 1811 | preview 1812 | join 1813 | alex 1814 | saturday 1815 | radio 1816 | reported 1817 | disturbing 1818 | boss 1819 | improve 1820 | n 1821 | elf 1822 | jennifer 1823 | escape 1824 | zodiac 1825 | serious 1826 | focus 1827 | bribery 1828 | farmer 1829 | hamilton 1830 | farewell 1831 | hacked 1832 | childhood 1833 | millions 1834 | transport 1835 | arvind 1836 | rumours 1837 | magical 1838 | alleges 1839 | ali 1840 | awful 1841 | nba 1842 | guns 1843 | allows 1844 | alcohol 1845 | passes 1846 | store 1847 | risks 1848 | wilson 1849 | penalty 1850 | bars 1851 | defense 1852 | became 1853 | sweep 1854 | due 1855 | whoa 1856 | demand 1857 | refuses 1858 | graham 1859 | attacking 1860 | jos 1861 | opening 1862 | present 1863 | smith 1864 | convicted 1865 | explained 1866 | successful 1867 | currency 1868 | damage 1869 | charleston 1870 | feeling 1871 | result 1872 | wtf 1873 | stadium 1874 | sydney 1875 | european 1876 | posting 1877 | models 1878 | falling 1879 | date 1880 | stress 1881 | natural 1882 | st 1883 | pulled 1884 | sad 1885 | zoo 1886 | laws 1887 | screen 1888 | boat 1889 | exit 1890 | rage 1891 | diary 1892 | clarifications 1893 | scott 1894 | hyderabad 1895 | mla 1896 | recent 1897 | homeland 1898 | dating 1899 | code 1900 | chinas 1901 | survey 1902 | carrying 1903 | rooney 1904 | accounts 1905 | davis 1906 | allow 1907 | fact 1908 | hottest 1909 | diabetes 1910 | englands 1911 | total 1912 | scary 1913 | era 1914 | refugee 1915 | rates 1916 | character 1917 | portraits 1918 | bruce 1919 | received 1920 | brad 1921 | voice 1922 | rain 1923 | jong 1924 | rather 1925 | cars 1926 | trick 1927 | conservative 1928 | stoke 1929 | delayed 1930 | pledges 1931 | witnesses 1932 | ask 1933 | terrible 1934 | block 1935 | within 1936 | kempton 1937 | gender 1938 | disaster 1939 | course 1940 | nightmare 1941 | written 1942 | capture 1943 | mistakes 1944 | refugees 1945 | captain 1946 | sorry 1947 | asia 1948 | lights 1949 | answer 1950 | royce 1951 | content 1952 | explain 1953 | decided 1954 | candidate 1955 | digital 1956 | skin 1957 | dip 1958 | african 1959 | texas 1960 | killer 1961 | solve 1962 | critical 1963 | dollar 1964 | lawyer 1965 | hour 1966 | recall 1967 | bulls 1968 | divorce 1969 | ruin 1970 | doubles 1971 | lion 1972 | italy 1973 | spent 1974 | alternative 1975 | pen 1976 | cashless 1977 | treats 1978 | jason 1979 | holds 1980 | waters 1981 | labor 1982 | loves 1983 | unless 1984 | add 1985 | success 1986 | italian 1987 | conference 1988 | campus 1989 | god 1990 | rail 1991 | evil 1992 | bridge 1993 | breaks 1994 | realize 1995 | brief 1996 | andhra 1997 | leads 1998 | immediately 1999 | proud 2000 | iphone 2001 | islamic 2002 | exclusive 2003 | equality 2004 | district 2005 | urge 2006 | senior 2007 | reveals 2008 | shops 2009 | events 2010 | violent 2011 | guardiola 2012 | captured 2013 | swift 2014 | pet 2015 | racist 2016 | jnu 2017 | follow 2018 | texts 2019 | goal 2020 | ordinance 2021 | soccer 2022 | bigger 2023 | nepal 2024 | chairman 2025 | swansea 2026 | sold 2027 | frozen 2028 | also 2029 | teams 2030 | resistance 2031 | impact 2032 | spy 2033 | debate 2034 | vintage 2035 | growth 2036 | urges 2037 | hanging 2038 | increase 2039 | cooking 2040 | replace 2041 | cheating 2042 | spoke 2043 | hurt 2044 | welcomes 2045 | wales 2046 | debut 2047 | wasn 2048 | professor 2049 | population 2050 | respond 2051 | rings 2052 | municipal 2053 | actor 2054 | chain 2055 | chair 2056 | ground 2057 | divided 2058 | spot 2059 | walking 2060 | aggressive 2061 | freezing 2062 | worried 2063 | iconic 2064 | agree 2065 | ad 2066 | yoga 2067 | puppy 2068 | jrgen 2069 | mosul 2070 | pass 2071 | pulls 2072 | door 2073 | mall 2074 | thackeray 2075 | mexican 2076 | bowl 2077 | heads 2078 | stopped 2079 | cryptic 2080 | bachelor 2081 | alert 2082 | kelly 2083 | lady 2084 | emergency 2085 | terrorists 2086 | opens 2087 | garden 2088 | torture 2089 | firms 2090 | dumbest 2091 | presidential 2092 | society 2093 | scene 2094 | briefing 2095 | false 2096 | koreas 2097 | korean 2098 | email 2099 | co 2100 | ball 2101 | afghan 2102 | uttar 2103 | r 2104 | sister 2105 | monday 2106 | oldest 2107 | votes 2108 | tickets 2109 | items 2110 | wore 2111 | cites 2112 | affected 2113 | rocks 2114 | admits 2115 | creates 2116 | rejects 2117 | lewis 2118 | iran 2119 | attacked 2120 | mukherjee 2121 | elderly 2122 | tottenham 2123 | p 2124 | shared 2125 | extra 2126 | jan 2127 | shooter 2128 | halt 2129 | impossible 2130 | flowers 2131 | concern 2132 | mona 2133 | moves 2134 | coverage 2135 | soldier 2136 | trailer 2137 | heavy 2138 | americas 2139 | scheme 2140 | assaulted 2141 | quota 2142 | clear 2143 | trees 2144 | smart 2145 | older 2146 | faith 2147 | papua 2148 | congressman 2149 | jump 2150 | cell 2151 | blogger 2152 | herself 2153 | rss 2154 | accuses 2155 | career 2156 | funniest 2157 | freedom 2158 | nintendo 2159 | samsung 2160 | molesting 2161 | companies 2162 | clothes 2163 | quits 2164 | taught 2165 | turning 2166 | begins 2167 | mini 2168 | medical 2169 | kerber 2170 | inappropriate 2171 | guaranteed 2172 | basic 2173 | bhubaneswar 2174 | conspiracy 2175 | shocked 2176 | yep 2177 | pranks 2178 | fireworks 2179 | propaganda 2180 | journey 2181 | happening 2182 | praises 2183 | chemical 2184 | touching 2185 | ministry 2186 | sexy 2187 | mattis 2188 | speechless 2189 | gurgaon 2190 | drivers 2191 | difference 2192 | creatures 2193 | bhangar 2194 | shark 2195 | seeking 2196 | confirms 2197 | dancing 2198 | breast 2199 | pissed 2200 | simple 2201 | expensive 2202 | ireland 2203 | proved 2204 | commentator 2205 | forward 2206 | shock 2207 | forest 2208 | liquor 2209 | reform 2210 | deliver 2211 | domestic 2212 | guard 2213 | minutes 2214 | circus 2215 | @ 2216 | jack 2217 | gadgets 2218 | ultimate 2219 | oakland 2220 | ganguly 2221 | revival 2222 | shelf 2223 | apart 2224 | heartwarming 2225 | cyber 2226 | remain 2227 | agrees 2228 | healthy 2229 | dumb 2230 | theory 2231 | hull 2232 | given 2233 | buzzfeed 2234 | legacy 2235 | champions 2236 | relief 2237 | globes 2238 | tower 2239 | discrimination 2240 | reactions 2241 | mental 2242 | kittens 2243 | directors 2244 | fat 2245 | sum 2246 | shouldn 2247 | hill 2248 | wenger 2249 | outrageous 2250 | moving 2251 | patel 2252 | files 2253 | jagdalpur 2254 | rally 2255 | rainbow 2256 | income 2257 | users 2258 | posters 2259 | survivor 2260 | figure 2261 | parliament 2262 | sculptures 2263 | republican 2264 | linked 2265 | sues 2266 | abandoned 2267 | nadal 2268 | van 2269 | whether 2270 | wednesday 2271 | reporter 2272 | dna 2273 | wing 2274 | solution 2275 | threatened 2276 | kashmir 2277 | master 2278 | singer 2279 | fair 2280 | campaigners 2281 | union 2282 | spin 2283 | ease 2284 | passenger 2285 | along 2286 | ipl 2287 | slams 2288 | tory 2289 | indigenous 2290 | sexually 2291 | curbs 2292 | slow 2293 | hockey 2294 | ive 2295 | technology 2296 | racial 2297 | dda 2298 | industry 2299 | dirty 2300 | al 2301 | watched 2302 | large 2303 | civilians 2304 | keeping 2305 | atm 2306 | accept 2307 | skipper 2308 | reduce 2309 | detains 2310 | leonardo 2311 | typhoon 2312 | available 2313 | connection 2314 | haunt 2315 | pledge 2316 | lessons 2317 | licence 2318 | thats 2319 | process 2320 | reynolds 2321 | realized 2322 | evacuation 2323 | haven 2324 | insanely 2325 | matthew 2326 | crace 2327 | checking 2328 | schedule 2329 | function 2330 | count 2331 | triumph 2332 | officially 2333 | nigerian 2334 | identify 2335 | tons 2336 | speak 2337 | iraq 2338 | perform 2339 | dimitri 2340 | born 2341 | pose 2342 | newspapers 2343 | prisoners 2344 | stake 2345 | indians 2346 | hardest 2347 | birds 2348 | fires 2349 | transition 2350 | fc 2351 | breakfast 2352 | begin 2353 | celebrate 2354 | wouldn 2355 | ship 2356 | treatment 2357 | throw 2358 | louis 2359 | rory 2360 | species 2361 | starbucks 2362 | payet 2363 | robert 2364 | houses 2365 | bash 2366 | expecting 2367 | passed 2368 | apprentice 2369 | feels 2370 | x 2371 | honour 2372 | conditions 2373 | bench 2374 | anthony 2375 | mitchell 2376 | shah 2377 | adults 2378 | drag 2379 | youtube 2380 | gp 2381 | verdict 2382 | florida 2383 | privacy 2384 | bieber 2385 | soldiers 2386 | joins 2387 | kei 2388 | fierce 2389 | fate 2390 | historic 2391 | strategy 2392 | museum 2393 | authority 2394 | contest 2395 | chennai 2396 | baking 2397 | employees 2398 | heading 2399 | berlin 2400 | warm 2401 | trolled 2402 | navy 2403 | loud 2404 | maria 2405 | beaten 2406 | coast 2407 | brazil 2408 | commission 2409 | whatsapp 2410 | gove 2411 | ford 2412 | fort 2413 | warehouse 2414 | award 2415 | diy 2416 | soul 2417 | nyc 2418 | writers 2419 | main 2420 | miley 2421 | kevin 2422 | performance 2423 | morning 2424 | seal 2425 | sunanda 2426 | arts 2427 | dramatic 2428 | sahara 2429 | struggling 2430 | dalai 2431 | bottle 2432 | l 2433 | vacation 2434 | istanbul 2435 | clinch 2436 | zero 2437 | stood 2438 | abu 2439 | jackie 2440 | suffer 2441 | singapore 2442 | benefits 2443 | lifts 2444 | rebels 2445 | remove 2446 | common 2447 | restaurants 2448 | burned 2449 | simply 2450 | prices 2451 | itself 2452 | juventus 2453 | mob 2454 | knock 2455 | captaincy 2456 | though 2457 | patient 2458 | steven 2459 | presidents 2460 | lama 2461 | lines 2462 | struggles 2463 | le 2464 | warner 2465 | angelique 2466 | calling 2467 | af 2468 | choose 2469 | tackle 2470 | founder 2471 | conduct 2472 | middlesbrough 2473 | laid 2474 | bath 2475 | annoying 2476 | vietnam 2477 | sherlock 2478 | trend 2479 | learn 2480 | memory 2481 | lonely 2482 | moms 2483 | falls 2484 | allegations 2485 | senator 2486 | author 2487 | rose 2488 | seems 2489 | tunisia 2490 | plastic 2491 | chicken 2492 | taste 2493 | settlement 2494 | sun 2495 | knows 2496 | teens 2497 | brave 2498 | colombia 2499 | hangs 2500 | actors 2501 | drone 2502 | finding 2503 | electric 2504 | fastest 2505 | emails 2506 | guinea 2507 | anne 2508 | vaccine 2509 | junior 2510 | vice 2511 | acid 2512 | villain 2513 | razak 2514 | instead 2515 | toddler 2516 | attend 2517 | wwii 2518 | bills 2519 | electoral 2520 | bought 2521 | agencies 2522 | walk 2523 | respect 2524 | painted 2525 | recap 2526 | tennessee 2527 | album 2528 | woods 2529 | stabbed 2530 | bringing 2531 | tired 2532 | glass 2533 | keeps 2534 | releases 2535 | victoria 2536 | turnbull 2537 | carbon 2538 | worked 2539 | masterpieces 2540 | played 2541 | shadow 2542 | steps 2543 | bottom 2544 | fox 2545 | floor 2546 | roll 2547 | explosions 2548 | cheap 2549 | prevent 2550 | positive 2551 | davies 2552 | alzheimers 2553 | elephant 2554 | creations 2555 | bowling 2556 | aside 2557 | israeli 2558 | operations 2559 | dispute 2560 | surgery 2561 | shortlist 2562 | horrifying 2563 | surveillance 2564 | births 2565 | costa 2566 | trains 2567 | panda 2568 | stranger 2569 | stone 2570 | spirit 2571 | biden 2572 | status 2573 | ivanka 2574 | amy 2575 | signals 2576 | disorder 2577 | religion 2578 | ambush 2579 | garbage 2580 | nationalist 2581 | feud 2582 | summit 2583 | pugs 2584 | led 2585 | les 2586 | invented 2587 | witness 2588 | chills 2589 | scare 2590 | evacuated 2591 | medal 2592 | decade 2593 | reid 2594 | bristol 2595 | cr 2596 | mannequin 2597 | britains 2598 | optimistic 2599 | terrorism 2600 | identity 2601 | wed 2602 | footage 2603 | spots 2604 | websites 2605 | rural 2606 | controversial 2607 | phones 2608 | celebration 2609 | balance 2610 | versus 2611 | nishikori 2612 | painfully 2613 | terms 2614 | tony 2615 | nia 2616 | accepts 2617 | holding 2618 | zone 2619 | revolution 2620 | supporting 2621 | ended 2622 | el 2623 | ed 2624 | honest 2625 | blind 2626 | striking 2627 | tomorrow 2628 | inmates 2629 | ] 2630 | tackling 2631 | article 2632 | coolest 2633 | canceled 2634 | worry 2635 | arctic 2636 | zverev 2637 | execution 2638 | mourinho 2639 | eddie 2640 | watchdog 2641 | fatally 2642 | boycott 2643 | fa 2644 | relate 2645 | beyonc 2646 | event 2647 | trapped 2648 | villiers 2649 | shirts 2650 | sentences 2651 | position 2652 | grew 2653 | protecting 2654 | lived 2655 | pact 2656 | useful 2657 | politicians 2658 | reportedly 2659 | reservation 2660 | tweeted 2661 | wave 2662 | kidnapped 2663 | clare 2664 | announced 2665 | sanctions 2666 | agenda 2667 | globe 2668 | activist 2669 | memes 2670 | matip 2671 | relations 2672 | beard 2673 | julian 2674 | aww 2675 | nailed 2676 | ridiculously 2677 | winner 2678 | spotted 2679 | horrible 2680 | treat 2681 | smoking 2682 | novel 2683 | decades 2684 | warrant 2685 | payments 2686 | offensive 2687 | accidents 2688 | railways 2689 | georgia 2690 | updates 2691 | arms 2692 | type 2693 | ranji 2694 | fifa 2695 | pharma 2696 | carolina 2697 | aids 2698 | pranab 2699 | naughty 2700 | anxiety 2701 | chatterbox 2702 | jailed 2703 | bay 2704 | testing 2705 | cyrus 2706 | interest 2707 | chilling 2708 | smoke 2709 | exists 2710 | commit 2711 | lies 2712 | pushkar 2713 | profits 2714 | marks 2715 | unexpected 2716 | targets 2717 | favour 2718 | reunite 2719 | predict 2720 | confused 2721 | sworn 2722 | johnson 2723 | elephants 2724 | earlier 2725 | pain 2726 | complaints 2727 | deportation 2728 | ashwin 2729 | freak 2730 | cancelled 2731 | freaked 2732 | served 2733 | nice 2734 | romantic 2735 | leaked 2736 | lifetime 2737 | assets 2738 | forget 2739 | further 2740 | sharp 2741 | coal 2742 | dolls 2743 | hails 2744 | insurance 2745 | extremely 2746 | kg 2747 | penguins 2748 | theft 2749 | thakur 2750 | newborn 2751 | entry 2752 | source 2753 | bid 2754 | openers 2755 | planet 2756 | uddhav 2757 | prepares 2758 | stonehenge 2759 | cctv 2760 | putting 2761 | rivers 2762 | nobel 2763 | themselves 2764 | stations 2765 | stock 2766 | profile 2767 | buildings 2768 | willing 2769 | retail 2770 | tide 2771 | parks 2772 | mix 2773 | unseen 2774 | photography 2775 | areas 2776 | racket 2777 | progress 2778 | jharkhand 2779 | ab 2780 | value 2781 | spread 2782 | pig 2783 | toxic 2784 | detention 2785 | enter 2786 | celebrating 2787 | banning 2788 | gop 2789 | tool 2790 | serve 2791 | alabama 2792 | situations 2793 | faced 2794 | confident 2795 | beer 2796 | burns 2797 | exxon 2798 | combat 2799 | cnn 2800 | undocumented 2801 | plus 2802 | setting 2803 | westworld 2804 | rob 2805 | roy 2806 | halts 2807 | angelina 2808 | [ 2809 | unarmed 2810 | stroke 2811 | birthday 2812 | attended 2813 | stuck 2814 | nathan 2815 | cheteshwar 2816 | versions 2817 | registry 2818 | parking 2819 | duty 2820 | colony 2821 | tiger 2822 | inflation 2823 | ok 2824 | thursday 2825 | aaron 2826 | lawmakers 2827 | design 2828 | flat 2829 | known 2830 | disabled 2831 | isnt 2832 | resort 2833 | hawaii 2834 | teach 2835 | fought 2836 | aims 2837 | warnings 2838 | measures 2839 | cartoons 2840 | cringe 2841 | attention 2842 | sweet 2843 | decline 2844 | peoples 2845 | daughters 2846 | seize 2847 | suggests 2848 | hardy 2849 | product 2850 | chaos 2851 | sing 2852 | g 2853 | july 2854 | gain 2855 | scrutiny 2856 | unlike 2857 | coaches 2858 | lobby 2859 | scottish 2860 | urged 2861 | brush 2862 | ruling 2863 | cyprus 2864 | regional 2865 | costume 2866 | yahoo 2867 | machine 2868 | fictional 2869 | democratic 2870 | senators 2871 | fit 2872 | easier 2873 | rukh 2874 | foundation 2875 | ups 2876 | carson 2877 | legs 2878 | listen 2879 | kremlin 2880 | mouth 2881 | sexist 2882 | theme 2883 | tomic 2884 | criticised 2885 | worker 2886 | dave 2887 | kushner 2888 | tops 2889 | melania 2890 | avalanche 2891 | minute 2892 | studies 2893 | loving 2894 | everywhere 2895 | suck 2896 | jim 2897 | quite 2898 | structures 2899 | trinamool 2900 | pages 2901 | comeback 2902 | airlines 2903 | differently 2904 | polly 2905 | unveil 2906 | reaches 2907 | fiver 2908 | bubble 2909 | rush 2910 | natalie 2911 | causes 2912 | condition 2913 | november 2914 | via 2915 | saha 2916 | suggestions 2917 | ethics 2918 | truths 2919 | highway 2920 | guest 2921 | tate 2922 | walmart 2923 | gym 2924 | golf 2925 | dicaprio 2926 | writes 2927 | lee 2928 | suit 2929 | link 2930 | competition 2931 | hello 2932 | marry 2933 | fewer 2934 | dressed 2935 | maker 2936 | confidence 2937 | britons 2938 | decorations 2939 | depressing 2940 | documents 2941 | chhattisgarh 2942 | rough 2943 | jay 2944 | meant 2945 | lazy 2946 | edition 2947 | waste 2948 | pitt 2949 | sunderland 2950 | recognition 2951 | passion 2952 | seeds 2953 | fuck 2954 | dhawan 2955 | smooth 2956 | placed 2957 | lauds 2958 | write 2959 | voted 2960 | jinping 2961 | provide 2962 | pizza 2963 | alexis 2964 | network 2965 | strangers 2966 | medicine 2967 | chirag 2968 | comic 2969 | najib 2970 | voting 2971 | such 2972 | du 2973 | dozens 2974 | attacker 2975 | lauderdale 2976 | launched 2977 | cong 2978 | centres 2979 | musical 2980 | photographed 2981 | celebrates 2982 | towards 2983 | sends 2984 | denied 2985 | marketing 2986 | pays 2987 | rahul 2988 | dying 2989 | regret 2990 | resigns 2991 | chargesheet 2992 | whats 2993 | appoints 2994 | kane 2995 | challenges 2996 | replay 2997 | television 2998 | fifth 2999 | sisodia 3000 | swim 3001 | learning 3002 | pleads 3003 | speed 3004 | spectacular 3005 | invites 3006 | inequality 3007 | loc 3008 | hire 3009 | comics 3010 | messi 3011 | cookies 3012 | bomber 3013 | arent 3014 | thatcher 3015 | thrown 3016 | broke 3017 | coalition 3018 | pushes 3019 | lacks 3020 | photoshop 3021 | bryan 3022 | hales 3023 | selling 3024 | greg 3025 | experienced 3026 | experiences 3027 | wreckage 3028 | stunned 3029 | throwing 3030 | ranked 3031 | jaitley 3032 | forgotten 3033 | hackers 3034 | likes 3035 | airstrikes 3036 | canadian 3037 | conflict 3038 | retirement 3039 | showing 3040 | fathers 3041 | urgent 3042 | taboo 3043 | shine 3044 | computer 3045 | pwd 3046 | fda 3047 | desserts 3048 | unusual 3049 | rotten 3050 | vehicle 3051 | beijing 3052 | farm 3053 | tristram 3054 | gunman 3055 | critics 3056 | princess 3057 | timed 3058 | quality 3059 | dump 3060 | spurs 3061 | makeover 3062 | truck 3063 | affair 3064 | ngt 3065 | syed 3066 | tuesday 3067 | netanyahu 3068 | restore 3069 | headed 3070 | goals 3071 | display 3072 | disability 3073 | rescue 3074 | reforms 3075 | neo 3076 | kumar 3077 | rhetoric 3078 | tales 3079 | swimming 3080 | judges 3081 | azad 3082 | mohammad 3083 | royal 3084 | interior 3085 | tennis 3086 | covers 3087 | shit 3088 | parenthood 3089 | authorities 3090 | skip 3091 | disgusting 3092 | billionaire 3093 | bipin 3094 | transportation 3095 | earthquake 3096 | priceless 3097 | effort 3098 | reviews 3099 | sunday 3100 | mac 3101 | grow 3102 | thank 3103 | manifesto 3104 | advance 3105 | underwear 3106 | cheese 3107 | sounds 3108 | moscow 3109 | zsa 3110 | appreciate 3111 | recreated 3112 | mephedrone 3113 | channel 3114 | theatre 3115 | cuban 3116 | especially 3117 | surprising 3118 | sites 3119 | storms 3120 | treasury 3121 | ranking 3122 | gen 3123 | stupid 3124 | declared 3125 | summons 3126 | parent 3127 | sleeping 3128 | protein 3129 | jake 3130 | facing 3131 | gross 3132 | confirm 3133 | autism 3134 | deep 3135 | fill 3136 | caste 3137 | sitting 3138 | mothers 3139 | transforms 3140 | buses 3141 | dev 3142 | sourav 3143 | lawrence 3144 | shikhar 3145 | trolls 3146 | eggs 3147 | permission 3148 | expert 3149 | responses 3150 | mushtaq 3151 | reverse 3152 | raise 3153 | metro 3154 | dhabi 3155 | cpm 3156 | wage 3157 | nsw 3158 | ellen 3159 | maldives 3160 | chapo 3161 | springsteen 3162 | exchange 3163 | tunnel 3164 | winners 3165 | kashmiri 3166 | watson 3167 | galaxy 3168 | greater 3169 | defend 3170 | pakistani 3171 | gear 3172 | environmental 3173 | dementia 3174 | stranded 3175 | supporter 3176 | photographs 3177 | joke 3178 | comment 3179 | kidnapping 3180 | sisters 3181 | tests 3182 | gambian 3183 | quickly 3184 | corporation 3185 | hats 3186 | kicked 3187 | pratt 3188 | feelings 3189 | demanding 3190 | tourist 3191 | primary 3192 | toy 3193 | urban 3194 | clears 3195 | rawat 3196 | lift 3197 | sanitation 3198 | bathroom 3199 | catch 3200 | several 3201 | jean 3202 | humanity 3203 | sanjay 3204 | dinner 3205 | papers 3206 | environment 3207 | artwork 3208 | standards 3209 | rethink 3210 | rafael 3211 | philippine 3212 | russell 3213 | devendra 3214 | flying 3215 | modifies 3216 | ensure 3217 | crashes 3218 | zuckerberg 3219 | lesbian 3220 | multiple 3221 | recipe 3222 | nd 3223 | approval 3224 | wriddhiman 3225 | peaceful 3226 | pilot 3227 | mcgregor 3228 | reminder 3229 | cartoon 3230 | hint 3231 | except 3232 | nails 3233 | royals 3234 | stereotypes 3235 | rising 3236 | toilet 3237 | cinema 3238 | wifi 3239 | decisions 3240 | activities 3241 | tea 3242 | andrews 3243 | pond 3244 | okay 3245 | radical 3246 | commits 3247 | notch 3248 | hil 3249 | outfit 3250 | citys 3251 | village 3252 | referee 3253 | higher 3254 | restraint 3255 | complaint 3256 | arthur 3257 | streaming 3258 | roundup 3259 | helping 3260 | degree 3261 | fee 3262 | manish 3263 | kunduz 3264 | orange 3265 | covered 3266 | philip 3267 | crashed 3268 | teenagers 3269 | afraid 3270 | senegal 3271 | planning 3272 | cuba 3273 | ones 3274 | difficult 3275 | happiness 3276 | nagar 3277 | promise 3278 | horrific 3279 | foul 3280 | dnc 3281 | brings 3282 | organized 3283 | youths 3284 | fir 3285 | nigel 3286 | channels 3287 | showed 3288 | wawrinka 3289 | bradford 3290 | sexism 3291 | score 3292 | adventures 3293 | argue 3294 | advert 3295 | memorial 3296 | corporate 3297 | stokes 3298 | visitors 3299 | slightly 3300 | bannon 3301 | statements 3302 | waits 3303 | lays 3304 | looms 3305 | liberal 3306 | tournament 3307 | flood 3308 | jenkins 3309 | aiims 3310 | subway 3311 | celebrated 3312 | current 3313 | afford 3314 | claus 3315 | deserved 3316 | stole 3317 | cozy 3318 | wikileaks 3319 | differences 3320 | doll 3321 | training 3322 | puns 3323 | ignored 3324 | proving 3325 | altered 3326 | remarks 3327 | bright 3328 | vision 3329 | spark 3330 | mccain 3331 | newspaper 3332 | situation 3333 | downs 3334 | burning 3335 | survives 3336 | survived 3337 | vehicles 3338 | malda 3339 | operation 3340 | cpi 3341 | original 3342 | consider 3343 | caused 3344 | debris 3345 | minors 3346 | dressing 3347 | ghana 3348 | appointment 3349 | struggle 3350 | hotspur 3351 | dismisses 3352 | waves 3353 | broadway 3354 | followers 3355 | number 3356 | mentally 3357 | singles 3358 | accepting 3359 | enemy 3360 | incident 3361 | packers 3362 | judicial 3363 | owen 3364 | vow 3365 | chase 3366 | flooded 3367 | recovered 3368 | nhrc 3369 | bn 3370 | agreement 3371 | spending 3372 | jewish 3373 | cid 3374 | continues 3375 | hyde 3376 | nominates 3377 | expresses 3378 | poverty 3379 | engage 3380 | involved 3381 | opinion 3382 | doubt 3383 | beaches 3384 | customer 3385 | insists 3386 | marathi 3387 | slip 3388 | solidarity 3389 | degrees 3390 | shortage 3391 | grandpa 3392 | netaji 3393 | jaw 3394 | h 3395 | explosive 3396 | lg 3397 | figures 3398 | shashi 3399 | ck 3400 | barthel 3401 | commutes 3402 | wef 3403 | crack 3404 | emma 3405 | separate 3406 | location 3407 | angeles 3408 | construction 3409 | ink 3410 | ghost 3411 | bike 3412 | shoot 3413 | cms 3414 | festive 3415 | protection 3416 | plot 3417 | negative 3418 | insult 3419 | kanpur 3420 | separated 3421 | ii 3422 | tinder 3423 | transparency 3424 | uae 3425 | recovery 3426 | lab 3427 | mayor 3428 | derails 3429 | anthem 3430 | drones 3431 | powers 3432 | assange 3433 | iceland 3434 | hammond 3435 | sue 3436 | aung 3437 | overload 3438 | steal 3439 | cattle 3440 | compensation 3441 | pudukottai 3442 | epa 3443 | wasps 3444 | strangely 3445 | plymouth 3446 | tesla 3447 | bedi 3448 | beds 3449 | killings 3450 | kitten 3451 | spider 3452 | appear 3453 | shares 3454 | uniform 3455 | genes 3456 | retired 3457 | threw 3458 | defeats 3459 | cab 3460 | posing 3461 | magazine 3462 | nom 3463 | opener 3464 | rebel 3465 | invitation 3466 | size 3467 | rapes 3468 | hsbc 3469 | professional 3470 | elected 3471 | materials 3472 | hurts 3473 | donating 3474 | struck 3475 | benefit 3476 | exposed 3477 | racism 3478 | credits 3479 | fell 3480 | area 3481 | bucket 3482 | moved 3483 | innings 3484 | restored 3485 | upholds 3486 | carpet 3487 | loose 3488 | iraqi 3489 | mysterious 3490 | portman 3491 | rudy 3492 | fined 3493 | publish 3494 | expand 3495 | norms 3496 | headache 3497 | lie 3498 | mobile 3499 | pochettino 3500 | withdrawal 3501 | locals 3502 | practice 3503 | secrets 3504 | doping 3505 | mission 3506 | anymore 3507 | grand 3508 | quarters 3509 | questioned 3510 | marco 3511 | sketch 3512 | trends 3513 | reef 3514 | similar 3515 | smiles 3516 | frances 3517 | suits 3518 | friendly 3519 | cupcakes 3520 | danger 3521 | singing 3522 | actual 3523 | whisky 3524 | potus 3525 | ronald 3526 | advocates 3527 | revise 3528 | cruise 3529 | alexander 3530 | registrations 3531 | nationals 3532 | measure 3533 | jill 3534 | ankle 3535 | bee 3536 | battles 3537 | awe 3538 | businessman 3539 | sheriff 3540 | fuel 3541 | jammu 3542 | joint 3543 | mohammed 3544 | piss 3545 | immigrant 3546 | stats 3547 | hollingworth 3548 | admit 3549 | shame 3550 | sarcastic 3551 | rift 3552 | kkk 3553 | accurate 3554 | lincoln 3555 | necessary 3556 | shed 3557 | library 3558 | cleveland 3559 | anurag 3560 | mizoram 3561 | courts 3562 | empty 3563 | appoint 3564 | nitish 3565 | presents 3566 | protections 3567 | vladimir 3568 | drew 3569 | tapes 3570 | fantastic 3571 | guests 3572 | criminals 3573 | calm 3574 | thirsty 3575 | minority 3576 | dangal 3577 | scoring 3578 | crew 3579 | anil 3580 | goddamn 3581 | spanish 3582 | crucial 3583 | resume 3584 | tharoor 3585 | pune 3586 | stewart 3587 | enjoy 3588 | regular 3589 | hunger 3590 | ending 3591 | attempts 3592 | decides 3593 | olympics 3594 | appeared 3595 | lionel 3596 | unfortunate 3597 | renaissance 3598 | opportunity 3599 | buyers 3600 | priyanka 3601 | amazingly 3602 | cosby 3603 | drought 3604 | felt 3605 | bunnies 3606 | governments 3607 | olympic 3608 | dealing 3609 | teenage 3610 | hotels 3611 | map 3612 | maybe 3613 | shoes 3614 | lunch 3615 | nonfiction 3616 | frequent 3617 | carry 3618 | sean 3619 | nazi 3620 | speakers 3621 | foreigner 3622 | merkel 3623 | declares 3624 | forecast 3625 | holders 3626 | logic 3627 | mary 3628 | wake 3629 | pac 3630 | pak 3631 | conor 3632 | parody 3633 | surrenders 3634 | bowie 3635 | disappointed 3636 | seconds 3637 | militants 3638 | organizers 3639 | mars 3640 | emissions 3641 | suitcase 3642 | deer 3643 | field 3644 | colleges 3645 | emily 3646 | alien 3647 | titles 3648 | abe 3649 | conte 3650 | speeches 3651 | armed 3652 | arsne 3653 | sakshi 3654 | maps 3655 | coat 3656 | stepped 3657 | drake 3658 | acting 3659 | bully 3660 | backed 3661 | bullied 3662 | reunion 3663 | paths 3664 | ki 3665 | sector 3666 | jared 3667 | merger 3668 | toddlers 3669 | rivals 3670 | limit 3671 | purpose 3672 | easter 3673 | foreigners 3674 | mirror 3675 | grave 3676 | desert 3677 | sanctuary 3678 | mlas 3679 | madurai 3680 | mauricio 3681 | extreme 3682 | minnesota 3683 | escapes 3684 | snacks 3685 | balshaw 3686 | institutional 3687 | bridges 3688 | marsh 3689 | identified 3690 | jessica 3691 | ancient 3692 | nobody 3693 | lover 3694 | absurd 3695 | bernard 3696 | perfection 3697 | routine 3698 | ebola 3699 | busted 3700 | partner 3701 | journalist 3702 | classical 3703 | proper 3704 | surreal 3705 | dresses 3706 | resolution 3707 | uniteds 3708 | nail 3709 | teachers 3710 | auction 3711 | actions 3712 | los 3713 | pic 3714 | badly 3715 | reacting 3716 | destroyed 3717 | outfits 3718 | fiction 3719 | pope 3720 | gods 3721 | shots 3722 | grandmother 3723 | approach 3724 | epidemic 3725 | strangest 3726 | weren 3727 | stopping 3728 | inventions 3729 | brutal 3730 | ocean 3731 | proposed 3732 | teenager 3733 | newcastle 3734 | burnt 3735 | orlando 3736 | trainspotting 3737 | efforts 3738 | removes 3739 | heat 3740 | precious 3741 | hams 3742 | shines 3743 | bullet 3744 | uttarakhand 3745 | australias 3746 | kyi 3747 | qualifiers 3748 | levy 3749 | repeat 3750 | tories 3751 | mayweather 3752 | execute 3753 | contain 3754 | cspan 3755 | tweeting 3756 | trafficking 3757 | hack 3758 | naked 3759 | pants 3760 | weapons 3761 | jammeh 3762 | robbed 3763 | reminded 3764 | refusal 3765 | tip 3766 | actress 3767 | polish 3768 | furniture 3769 | madrid 3770 | hipster 3771 | poem 3772 | update 3773 | oh 3774 | rice 3775 | hasnt 3776 | finale 3777 | siblings 3778 | suu 3779 | vandeweghe 3780 | concerns 3781 | stephen 3782 | friendship 3783 | weight 3784 | paradise 3785 | benjamin 3786 | fees 3787 | script 3788 | react 3789 | windows 3790 | solo 3791 | creating 3792 | c 3793 | shirt 3794 | lower 3795 | cheer 3796 | intense 3797 | firing 3798 | dalit 3799 | conductor 3800 | ashton 3801 | drinking 3802 | explore 3803 | apply 3804 | usa 3805 | recount 3806 | traders 3807 | panic 3808 | tenure 3809 | jolie 3810 | underwater 3811 | permanent 3812 | conflicts 3813 | photoshopped 3814 | shell 3815 | academy 3816 | catholic 3817 | agency 3818 | funds 3819 | harmful 3820 | deny 3821 | sued 3822 | hosting 3823 | joy 3824 | rescuers 3825 | jol 3826 | choices 3827 | unite 3828 | warming 3829 | rocket 3830 | console 3831 | mischa 3832 | hosts 3833 | slum 3834 | exciting 3835 | apps 3836 | woody 3837 | mlk 3838 | miller 3839 | naidu 3840 | unit 3841 | passport 3842 | plunges 3843 | effective 3844 | lifeline 3845 | screaming 3846 | stevens 3847 | volcano 3848 | allan 3849 | rp 3850 | mason 3851 | silent 3852 | diabetic 3853 | musicians 3854 | whirlwind 3855 | lego 3856 | engagement 3857 | ahmed 3858 | runner 3859 | mishra 3860 | grips 3861 | dragged 3862 | withdraw 3863 | qaeda 3864 | mens 3865 | rihanna 3866 | valenti 3867 | net 3868 | blew 3869 | clarifies 3870 | glasgow 3871 | extend 3872 | souvenir 3873 | pregnancy 3874 | contestants 3875 | investors 3876 | privilege 3877 | criticises 3878 | appeals 3879 | flooding 3880 | harmony 3881 | supper 3882 | sania 3883 | pyongyang 3884 | fog 3885 | fish 3886 | pairs 3887 | mullah 3888 | panels 3889 | proves 3890 | dealer 3891 | devos 3892 | vet 3893 | stays 3894 | organiser 3895 | cooks 3896 | solved 3897 | jury 3898 | gladys 3899 | molestation 3900 | homesick 3901 | predictions 3902 | wicket 3903 | capsizes 3904 | locks 3905 | aamir 3906 | truce 3907 | professors 3908 | kellyanne 3909 | civilian 3910 | amnesty 3911 | breakthrough 3912 | entering 3913 | disasters 3914 | grandma 3915 | locations 3916 | saving 3917 | stuffed 3918 | republic 3919 | mountain 3920 | printed 3921 | outrage 3922 | beatles 3923 | corridors 3924 | diver 3925 | mouthwatering 3926 | leander 3927 | stretch 3928 | chan 3929 | thousand 3930 | policies 3931 | shuts 3932 | defy 3933 | edges 3934 | costs 3935 | summed 3936 | weekly 3937 | millennials 3938 | monopoly 3939 | leadership 3940 | neighbor 3941 | texted 3942 | mice 3943 | pull 3944 | abuses 3945 | politically 3946 | ai 3947 | tricks 3948 | adam 3949 | welfare 3950 | tn 3951 | smile 3952 | ndmc 3953 | heist 3954 | investment 3955 | clock 3956 | kiss 3957 | condemn 3958 | mapping 3959 | legos 3960 | odis 3961 | atms 3962 | vmas 3963 | prabhu 3964 | consult 3965 | sometimes 3966 | artistic 3967 | microsoft 3968 | writer 3969 | factor 3970 | startup 3971 | migration 3972 | monsters 3973 | mindset 3974 | nri 3975 | champion 3976 | towns 3977 | robin 3978 | backing 3979 | researchers 3980 | amp 3981 | psu 3982 | surprised 3983 | quest 3984 | cuteness 3985 | silence 3986 | sight 3987 | sharma 3988 | transactions 3989 | temple 3990 | nowhere 3991 | tidal 3992 | coldest 3993 | customers 3994 | marseille 3995 | toynbee 3996 | chat 3997 | nrega 3998 | bush 3999 | swaraj 4000 | robots 4001 | sides 4002 | trail 4003 | walked 4004 | birla 4005 | continued 4006 | bird 4007 | leg 4008 | receive 4009 | binge 4010 | patrol 4011 | balls 4012 | destroying 4013 | pair 4014 | boxing 4015 | directs 4016 | freaky 4017 | legendary 4018 | beneath 4019 | meth 4020 | grilled 4021 | napoli 4022 | blows 4023 | prank 4024 | stomach 4025 | reacted 4026 | latino 4027 | visa 4028 | stronger 4029 | kipling 4030 | cks 4031 | wounded 4032 | painting 4033 | lucky 4034 | didyouknow 4035 | ransom 4036 | terrorist 4037 | ikea 4038 | audit 4039 | colour 4040 | outlines 4041 | behold 4042 | francisco 4043 | inspiration 4044 | womans 4045 | relationships 4046 | bandra 4047 | jacob 4048 | honor 4049 | raonic 4050 | chef 4051 | machines 4052 | stressed 4053 | refusing 4054 | indie 4055 | consumer 4056 | ordinary 4057 | suing 4058 | greek 4059 | shameful 4060 | parthiv 4061 | cameras 4062 | recovering 4063 | oppose 4064 | paes 4065 | rated 4066 | wasted 4067 | stalls 4068 | maiden 4069 | swamp 4070 | wishlist 4071 | personality 4072 | gored 4073 | haunted 4074 | dr 4075 | drawn 4076 | wb 4077 | enters 4078 | engulfs 4079 | cylinder 4080 | confirmed 4081 | independent 4082 | contact 4083 | countrys 4084 | belongs 4085 | expelled 4086 | honored 4087 | purple 4088 | bound 4089 | becoming 4090 | gather 4091 | floyd 4092 | burqa 4093 | trolling 4094 | flash 4095 | aggressively 4096 | gum 4097 | rapist 4098 | appeal 4099 | giles 4100 | sending 4101 | churchill 4102 | bullock 4103 | shaming 4104 | watford 4105 | angelo 4106 | cuter 4107 | incidents 4108 | samajwadi 4109 | expanding 4110 | chip 4111 | carroll 4112 | chit 4113 | spreads 4114 | whistleblower 4115 | concerts 4116 | cart 4117 | carl 4118 | marine 4119 | tragic 4120 | mostly 4121 | lunches 4122 | contentious 4123 | craig 4124 | slam 4125 | anger 4126 | offering 4127 | saints 4128 | whitewash 4129 | mcdonalds 4130 | carey 4131 | dictator 4132 | pesticide 4133 | document 4134 | foot 4135 | fortune 4136 | fully 4137 | output 4138 | oscars 4139 | brighton 4140 | shamed 4141 | generation 4142 | smuggling 4143 | farage 4144 | beliefs 4145 | describe 4146 | polar 4147 | carpenter 4148 | queensland 4149 | suresh 4150 | strings 4151 | unrest 4152 | fence 4153 | gadchiroli 4154 | wisconsin 4155 | emotions 4156 | pixar 4157 | surprisingly 4158 | yemen 4159 | jenner 4160 | ft 4161 | lynch 4162 | eros 4163 | labours 4164 | systems 4165 | sweeping 4166 | linking 4167 | trusts 4168 | timeline 4169 | jordan 4170 | translation 4171 | sentenced 4172 | lit 4173 | lip 4174 | gerrard 4175 | circle 4176 | howrah 4177 | gloves 4178 | battery 4179 | whatever 4180 | territory 4181 | hoax 4182 | user 4183 | brussels 4184 | transformation 4185 | stein 4186 | mha 4187 | savage 4188 | monfils 4189 | hail 4190 | pwl 4191 | ordered 4192 | kidney 4193 | rested 4194 | bribe 4195 | kate 4196 | mosque 4197 | picked 4198 | gene 4199 | appointed 4200 | escaped 4201 | tomi 4202 | digested 4203 | longest 4204 | koreans 4205 | secretly 4206 | reacts 4207 | photograph 4208 | bed 4209 | q 4210 | jain 4211 | montana 4212 | upset 4213 | uri 4214 | gesture 4215 | millwall 4216 | boris 4217 | evolution 4218 | grab 4219 | luckiest 4220 | ken 4221 | torn 4222 | senses 4223 | diversity 4224 | harder 4225 | simone 4226 | parts 4227 | ashley 4228 | claiming 4229 | skill 4230 | candy 4231 | shes 4232 | evacuate 4233 | administrators 4234 | ear 4235 | piece 4236 | firefighters 4237 | stan 4238 | recalled 4239 | asian 4240 | aides 4241 | swap 4242 | vast 4243 | skills 4244 | meals 4245 | orchestra 4246 | spokesman 4247 | haze 4248 | stern 4249 | county 4250 | recommend 4251 | root 4252 | burdwan 4253 | goodbye 4254 | donors 4255 | lucy 4256 | mounts 4257 | navi 4258 | burnley 4259 | revenge 4260 | features 4261 | grade 4262 | trippy 4263 | kurla 4264 | fabulous 4265 | rattle 4266 | timberlake 4267 | memo 4268 | mario 4269 | upadhyay 4270 | retire 4271 | sugar 4272 | monuments 4273 | pliskova 4274 | bat 4275 | bag 4276 | ears 4277 | startups 4278 | bengaluru 4279 | murders 4280 | envoy 4281 | jess 4282 | id 4283 | grown 4284 | jealous 4285 | kapil 4286 | settled 4287 | contestant 4288 | rasool 4289 | bold 4290 | meow 4291 | landing 4292 | lips 4293 | sushma 4294 | jadeja 4295 | handed 4296 | apology 4297 | fsl 4298 | gorilla 4299 | themed 4300 | laura 4301 | milk 4302 | defying 4303 | advised 4304 | adds 4305 | sweaters 4306 | bob 4307 | patriots 4308 | verge 4309 | ailing 4310 | everybody 4311 | fly 4312 | classrooms 4313 | pink 4314 | rays 4315 | skater 4316 | yorkshire 4317 | views 4318 | chandrababu 4319 | resignation 4320 | vogue 4321 | dutch 4322 | monster 4323 | speaking 4324 | broadcast 4325 | gathering 4326 | endangered 4327 | queens 4328 | hedgehog 4329 | mirza 4330 | killers 4331 | executes 4332 | wonder 4333 | nets 4334 | boundaries 4335 | jr 4336 | reddit 4337 | considering 4338 | sindhu 4339 | hijab 4340 | bags 4341 | nap 4342 | pile 4343 | christina 4344 | policemen 4345 | quietly 4346 | wildfire 4347 | abduct 4348 | departments 4349 | saudi 4350 | abc 4351 | campaigns 4352 | marijuana 4353 | whimsical 4354 | extinction 4355 | strategies 4356 | dec 4357 | breathing 4358 | numbers 4359 | biography 4360 | acts 4361 | brady 4362 | seizes 4363 | infant 4364 | industrial 4365 | walls 4366 | dysfunction 4367 | smaller 4368 | militant 4369 | paint 4370 | supposed 4371 | depths 4372 | unhappy 4373 | stance 4374 | yearbook 4375 | dropping 4376 | gap 4377 | replaces 4378 | holocaust 4379 | replaced 4380 | muscle 4381 | corridor 4382 | leopard 4383 | bio 4384 | matters 4385 | often 4386 | duck 4387 | examples 4388 | defamation 4389 | ufc 4390 | crap 4391 | tenants 4392 | neutrality 4393 | planes 4394 | curb 4395 | arsene 4396 | favourite 4397 | sudoku 4398 | rallies 4399 | robbery 4400 | populist 4401 | exercise 4402 | sink 4403 | remark 4404 | debbie 4405 | contempt 4406 | sit 4407 | byelection 4408 | agricultural 4409 | dam 4410 | pearson 4411 | reached 4412 | lions 4413 | cabin 4414 | sevilla 4415 | apparently 4416 | shillong 4417 | clive 4418 | coloring 4419 | knowledge 4420 | betsy 4421 | fixer 4422 | awaits 4423 | globalisation 4424 | instant 4425 | otherwise 4426 | denis 4427 | ag 4428 | virender 4429 | goni 4430 | bans 4431 | giuliani 4432 | interim 4433 | displaced 4434 | soft 4435 | corporator 4436 | introduced 4437 | conway 4438 | kinda 4439 | misspells 4440 | sparks 4441 | pit 4442 | chyna 4443 | encounter 4444 | weddings 4445 | streep 4446 | forum 4447 | mistake 4448 | julia 4449 | sehwag 4450 | casualties 4451 | shetty 4452 | ceremony 4453 | mess 4454 | salsa 4455 | upside 4456 | clapped 4457 | writing 4458 | glastonbury 4459 | wheel 4460 | goa 4461 | arizona 4462 | soda 4463 | roles 4464 | gabon 4465 | ran 4466 | nipples 4467 | detained 4468 | bsf 4469 | devastating 4470 | reputation 4471 | section 4472 | pops 4473 | solutions 4474 | queer 4475 | chipotle 4476 | allardyce 4477 | boring 4478 | finger 4479 | mum 4480 | discovery 4481 | southeast 4482 | contamination 4483 | legend 4484 | bees 4485 | complex 4486 | russians 4487 | spencer 4488 | actresses 4489 | mahabaleshwar 4490 | core 4491 | bats 4492 | lashes 4493 | pmqs 4494 | ruined 4495 | fury 4496 | rod 4497 | meryl 4498 | hammers 4499 | drinks 4500 | boats 4501 | lt 4502 | fest 4503 | minimum 4504 | dropped 4505 | swedish 4506 | secures 4507 | heartbreaking 4508 | ambedkar 4509 | profit 4510 | tensions 4511 | cancels 4512 | motion 4513 | revenue 4514 | briton 4515 | hub 4516 | published 4517 | wood 4518 | mistrial 4519 | jazz 4520 | blinks 4521 | clowns 4522 | predicted 4523 | slashing 4524 | sacked 4525 | jericho 4526 | direction 4527 | toughest 4528 | andrew 4529 | hughes 4530 | mount 4531 | buys 4532 | weed 4533 | pennsylvania 4534 | poised 4535 | ross 4536 | patrick 4537 | pacific 4538 | provided 4539 | stops 4540 | quitting 4541 | om 4542 | charts 4543 | gary 4544 | heather 4545 | trash 4546 | program 4547 | ten 4548 | invention 4549 | christian 4550 | leeds 4551 | naval 4552 | branded 4553 | unforgotten 4554 | lajong 4555 | glad 4556 | embarrassing 4557 | explains 4558 | islam 4559 | pray 4560 | units 4561 | fixture 4562 | wondered 4563 | upper 4564 | fancy 4565 | leading 4566 | gps 4567 | risky 4568 | cleaner 4569 | saracens 4570 | cropped 4571 | seasons 4572 | lying 4573 | beards 4574 | kylie 4575 | bare 4576 | arm 4577 | mcd 4578 | pv 4579 | duo 4580 | appears 4581 | theres 4582 | anna 4583 | raided 4584 | raising 4585 | abducted 4586 | pujara 4587 | vigil 4588 | standoff 4589 | winds 4590 | uphold 4591 | stable 4592 | chartered 4593 | businesses 4594 | claudio 4595 | traveling 4596 | folk 4597 | nazis 4598 | scrapped 4599 | egypt 4600 | impress 4601 | masks 4602 | psychedelic 4603 | wozniacki 4604 | celebrations 4605 | crowds 4606 | pending 4607 | material 4608 | articles 4609 | profound 4610 | privatisation 4611 | motorists 4612 | priority 4613 | chemotherapy 4614 | williamson 4615 | angle 4616 | = 4617 | chances 4618 | filmed 4619 | prosecute 4620 | closes 4621 | reindeer 4622 | tap 4623 | unity 4624 | inch 4625 | premiere 4626 | beast 4627 | whale 4628 | excessive 4629 | toilets 4630 | scared 4631 | murdered 4632 | ratnakar 4633 | surge 4634 | boom 4635 | diagnosis 4636 | ceos 4637 | cliff 4638 | yellow 4639 | thirst 4640 | crotch 4641 | najeeb 4642 | bacon 4643 | loathing 4644 | cult 4645 | confronts 4646 | substance 4647 | controversy 4648 | criticism 4649 | divide 4650 | magically 4651 | playboy 4652 | holy 4653 | relax 4654 | locker 4655 | example 4656 | caution 4657 | reimagined 4658 | hop 4659 | outcry 4660 | types 4661 | bubbles 4662 | slate 4663 | effects 4664 | addicted 4665 | snakes 4666 | woes 4667 | cathedral 4668 | rt 4669 | rr 4670 | adapt 4671 | engineer 4672 | strategist 4673 | ian 4674 | seinfeld 4675 | millers 4676 | crave 4677 | pigs 4678 | lethal 4679 | hug 4680 | responsible 4681 | causing 4682 | doors 4683 | orphaned 4684 | object 4685 | looming 4686 | preferences 4687 | scream 4688 | marvel 4689 | orleans 4690 | menu 4691 | rick 4692 | schooler 4693 | pocket 4694 | greens 4695 | rescues 4696 | henrik 4697 | triggers 4698 | erupted 4699 | hospitalized 4700 | haters 4701 | diverted 4702 | commerce 4703 | vulnerability 4704 | taped 4705 | craigslist 4706 | feuding 4707 | burgers 4708 | provocation 4709 | capitol 4710 | previous 4711 | survival 4712 | crown 4713 | santiago 4714 | bromwich 4715 | witty 4716 | rep 4717 | dental 4718 | o 4719 | raised 4720 | wrap 4721 | arunachal 4722 | knowing 4723 | jane 4724 | juvenile 4725 | elon 4726 | tooth 4727 | negotiations 4728 | dowling 4729 | curiae 4730 | ambitious 4731 | hole 4732 | ballet 4733 | bribes 4734 | unify 4735 | settle 4736 | unintentionally 4737 | modis 4738 | grandparents 4739 | designed 4740 | brazilian 4741 | odom 4742 | toppled 4743 | wondering 4744 | riders 4745 | values 4746 | webster 4747 | palantir 4748 | sectors 4749 | ss 4750 | unacceptable 4751 | hiring 4752 | troubles 4753 | instantly 4754 | awaited 4755 | frank 4756 | quartet 4757 | container 4758 | sheffield 4759 | complicated 4760 | sneaky 4761 | punk 4762 | gordon 4763 | uks 4764 | whos 4765 | draft 4766 | reclaims 4767 | fooled 4768 | depressed 4769 | glossy 4770 | wandering 4771 | buried 4772 | allen 4773 | warriors 4774 | average 4775 | phil 4776 | salt 4777 | investigators 4778 | robo 4779 | liberation 4780 | caroline 4781 | worries 4782 | buttler 4783 | impressions 4784 | harvey 4785 | abohar 4786 | endgame 4787 | mans 4788 | teddy 4789 | schmidt 4790 | bros 4791 | brom 4792 | blah 4793 | blac 4794 | homophobia 4795 | sickness 4796 | boosted 4797 | wired 4798 | joyful 4799 | dare 4800 | intel 4801 | tvs 4802 | searing 4803 | cannabis 4804 | scientific 4805 | origins 4806 | bond 4807 | myths 4808 | sealed 4809 | abused 4810 | unveils 4811 | johnny 4812 | certain 4813 | ak 4814 | cream 4815 | terry 4816 | chewing 4817 | returned 4818 | blockade 4819 | illustrated 4820 | ageing 4821 | goosebumps 4822 | prior 4823 | murdering 4824 | smuggle 4825 | followed 4826 | marriages 4827 | pearl 4828 | doom 4829 | allegri 4830 | lamar 4831 | wiley 4832 | geographic 4833 | fraser 4834 | attitude 4835 | ally 4836 | courses 4837 | experiencing 4838 | slowdown 4839 | advertisers 4840 | blues 4841 | signings 4842 | ministerial 4843 | offline 4844 | producers 4845 | cyanide 4846 | bernie 4847 | celeb 4848 | swipe 4849 | determined 4850 | fights 4851 | antarctica 4852 | graffiti 4853 | butterflies 4854 | brace 4855 | mugshots 4856 | river 4857 | rfl 4858 | sec 4859 | sen 4860 | soulmate 4861 | targeted 4862 | acted 4863 | belt 4864 | koeman 4865 | synth 4866 | yadda 4867 | resting 4868 | mlb 4869 | uncertain 4870 | dominic 4871 | tribe 4872 | skit 4873 | tomas 4874 | indonesian 4875 | suffering 4876 | imposed 4877 | spine 4878 | ivan 4879 | spring 4880 | defuse 4881 | laden 4882 | ba 4883 | reduced 4884 | deserves 4885 | recreate 4886 | servers 4887 | osama 4888 | middleton 4889 | jonny 4890 | crackdown 4891 | slump 4892 | posted 4893 | cic 4894 | oddity 4895 | defined 4896 | cowboys 4897 | influence 4898 | lane 4899 | fighter 4900 | resign 4901 | menace 4902 | haircuts 4903 | resources 4904 | abduction 4905 | wipe 4906 | timely 4907 | starmer 4908 | maharaj 4909 | obesity 4910 | rahane 4911 | mishap 4912 | punch 4913 | rohingya 4914 | midday 4915 | touched 4916 | prompts 4917 | weaken 4918 | blocks 4919 | boeing 4920 | counter 4921 | nancy 4922 | producer 4923 | freedland 4924 | ziva 4925 | snake 4926 | transparent 4927 | badou 4928 | fb 4929 | embassy 4930 | blown 4931 | roopa 4932 | sandakan 4933 | painful 4934 | badaun 4935 | ironic 4936 | zones 4937 | roberts 4938 | defending 4939 | clearly 4940 | worldwide 4941 | peek 4942 | doodles 4943 | podcast 4944 | jat 4945 | tape 4946 | smash 4947 | extremists 4948 | superhero 4949 | nationwide 4950 | massimiliano 4951 | meerut 4952 | staring 4953 | figured 4954 | drum 4955 | invited 4956 | rams 4957 | malcolm 4958 | challenged 4959 | atlanta 4960 | rigged 4961 | discoveries 4962 | archie 4963 | hardware 4964 | dusk 4965 | disrupted 4966 | patterns 4967 | command 4968 | geller 4969 | rooms 4970 | villagers 4971 | vain 4972 | increased 4973 | falters 4974 | malegaon 4975 | replacement 4976 | hipsters 4977 | imaginary 4978 | loans 4979 | iris 4980 | khandu 4981 | referendum 4982 | yrs 4983 | panesar 4984 | tina 4985 | deficiency 4986 | triumphant 4987 | convince 4988 | idol 4989 | irish 4990 | recognize 4991 | degale 4992 | variety 4993 | baffling 4994 | pension 4995 | magnetic 4996 | protestors 4997 | messenger 4998 | sellers 4999 | investigator 5000 | roadblock 5001 | messy 5002 | walkout 5003 | yahya 5004 | pursuit 5005 | anchor 5006 | secure 5007 | highly 5008 | achieve 5009 | allies 5010 | snchez 5011 | theories 5012 | initial 5013 | nuts 5014 | recovers 5015 | lal 5016 | customs 5017 | lgbti 5018 | interpol 5019 | vacationing 5020 | innovative 5021 | denver 5022 | slavery 5023 | lifted 5024 | diesel 5025 | barrier 5026 | standard 5027 | manslaughter 5028 | perkins 5029 | electronic 5030 | butter 5031 | yograj 5032 | rejected 5033 | cereal 5034 | guild 5035 | iron 5036 | apologizes 5037 | autopsy 5038 | felicitated 5039 | dj 5040 | irregularities 5041 | arun 5042 | captures 5043 | sketches 5044 | frontline 5045 | encounters 5046 | ww 5047 | cow 5048 | assassination 5049 | tone 5050 | sachs 5051 | jerry 5052 | raid 5053 | kyle 5054 | camps 5055 | mid 5056 | adding 5057 | poses 5058 | hills 5059 | josh 5060 | passive 5061 | maya 5062 | glitch 5063 | cooler 5064 | constables 5065 | hodge 5066 | beating 5067 | biopic 5068 | hotter 5069 | request 5070 | pilots 5071 | delays 5072 | anand 5073 | gigs 5074 | hannah 5075 | gut 5076 | sloths 5077 | discover 5078 | matrimonial 5079 | mckenna 5080 | angela 5081 | commissioner 5082 | cap 5083 | trans 5084 | breeds 5085 | hears 5086 | diva 5087 | islands 5088 | nomination 5089 | michel 5090 | serving 5091 | norway 5092 | surpasses 5093 | flint 5094 | beings 5095 | outrageously 5096 | opened 5097 | inevitable 5098 | fixed 5099 | tries 5100 | promotion 5101 | xx 5102 | gasp 5103 | breed 5104 | fm 5105 | transferred 5106 | recover 5107 | deniers 5108 | sledge 5109 | mrs 5110 | naxal 5111 | fletcher 5112 | mbbs 5113 | burst 5114 | physically 5115 | staffer 5116 | justified 5117 | comey 5118 | tropical 5119 | wounds 5120 | sarfraz 5121 | developing 5122 | steinberg 5123 | landslide 5124 | develop 5125 | coke 5126 | centuries 5127 | hunter 5128 | complained 5129 | severe 5130 | taxi 5131 | valuable 5132 | maternity 5133 | touch 5134 | tirade 5135 | improvement 5136 | momentum 5137 | offence 5138 | psg 5139 | listening 5140 | willie 5141 | rajnath 5142 | bazaar 5143 | paints 5144 | chop 5145 | outlook 5146 | crushing 5147 | smashes 5148 | rajkot 5149 | wrestlers 5150 | poop 5151 | peak 5152 | pool 5153 | overseas 5154 | cameron 5155 | religious 5156 | monty 5157 | hayden 5158 | foster 5159 | sustain 5160 | washroom 5161 | bombed 5162 | rogue 5163 | heaven 5164 | milo 5165 | tussle 5166 | labels 5167 | deborah 5168 | turmoil 5169 | khanna 5170 | inspires 5171 | conventional 5172 | rips 5173 | claimed 5174 | stayed 5175 | breitbart 5176 | denial 5177 | fi 5178 | keir 5179 | wickets 5180 | cyclists 5181 | committed 5182 | urdu 5183 | mahatma 5184 | evening 5185 | yo 5186 | intervene 5187 | neil 5188 | haley 5189 | ass 5190 | pug 5191 | hapless 5192 | creepiest 5193 | apocalypse 5194 | nigeria 5195 | readies 5196 | inducted 5197 | syrup 5198 | airstrike 5199 | lib 5200 | flaming 5201 | quote 5202 | approves 5203 | approved 5204 | usual 5205 | snowdon 5206 | surrey 5207 | albums 5208 | woakes 5209 | acceptance 5210 | pretending 5211 | basement 5212 | catches 5213 | glover 5214 | drafted 5215 | potential 5216 | woke 5217 | skips 5218 | deploys 5219 | threaten 5220 | sanders 5221 | socialist 5222 | pack 5223 | costly 5224 | shaq 5225 | blair 5226 | overweight 5227 | haunting 5228 | gst 5229 | consistency 5230 | cave 5231 | praying 5232 | nikki 5233 | envisioned 5234 | gandhis 5235 | chairs 5236 | weiner 5237 | saturdays 5238 | sousse 5239 | ariel 5240 | parvez 5241 | pains 5242 | classics 5243 | dude 5244 | pentagon 5245 | behaving 5246 | statistics 5247 | visas 5248 | heritage 5249 | skull 5250 | grinch 5251 | malik 5252 | rupert 5253 | psychopath 5254 | eerily 5255 | kansas 5256 | evan 5257 | practically 5258 | depth 5259 | mcilroy 5260 | nuns 5261 | salaries 5262 | kitty 5263 | enforce 5264 | titanic 5265 | soup 5266 | pristine 5267 | clark 5268 | cloud 5269 | ranieri 5270 | felicitate 5271 | testifies 5272 | palmyra 5273 | creature 5274 | wonderful 5275 | jails 5276 | poetry 5277 | software 5278 | bin 5279 | socks 5280 | illuminati 5281 | serbia 5282 | reboot 5283 | membership 5284 | austin 5285 | swapped 5286 | mocks 5287 | hiding 5288 | craziest 5289 | consequences 5290 | astonishing 5291 | encrypted 5292 | shield 5293 | hopeful 5294 | brighten 5295 | dreamers 5296 | employed 5297 | shaky 5298 | michigan 5299 | tbt 5300 | sassy 5301 | widow 5302 | pitch 5303 | desperate 5304 | outsiders 5305 | nominations 5306 | limits 5307 | minds 5308 | ajinkya 5309 | jersey 5310 | diplomats 5311 | kings 5312 | slowly 5313 | ishant 5314 | resident 5315 | musicals 5316 | began 5317 | canadians 5318 | transaction 5319 | sources 5320 | antarctic 5321 | definitive 5322 | utah 5323 | burden 5324 | crushes 5325 | prominent 5326 | shami 5327 | moderates 5328 | broad 5329 | journal 5330 | prohibited 5331 | photoshoot 5332 | taslima 5333 | couldnt 5334 | iraqs 5335 | francis 5336 | noticed 5337 | notices 5338 | inroad 5339 | hq 5340 | cells 5341 | urging 5342 | universal 5343 | finch 5344 | pardon 5345 | bear 5346 | nottingham 5347 | cavaliers 5348 | affect 5349 | gavrilova 5350 | facilities 5351 | cholesterol 5352 | omarosa 5353 | weirdly 5354 | dry 5355 | luther 5356 | economics 5357 | eyebrows 5358 | wary 5359 | frenzy 5360 | shelters 5361 | honey 5362 | maintain 5363 | operate 5364 | athletes 5365 | pothole 5366 | captions 5367 | therapy 5368 | meat 5369 | bone 5370 | aide 5371 | milan 5372 | trading 5373 | decree 5374 | bite 5375 | hook 5376 | ditch 5377 | twisted 5378 | mining 5379 | chess 5380 | rappers 5381 | poison 5382 | stepping 5383 | folks 5384 | monica 5385 | discs 5386 | bal 5387 | ethical 5388 | fascinating 5389 | cutting 5390 | scrap 5391 | sail 5392 | relatable 5393 | uncertainty 5394 | ascendancy 5395 | cricketing 5396 | initiative 5397 | aftermath 5398 | targeting 5399 | trigger 5400 | aviation 5401 | regretted 5402 | defeated 5403 | iv 5404 | seattle 5405 | bottles 5406 | sat 5407 | berdych 5408 | amicus 5409 | otters 5410 | rome 5411 | flops 5412 | fighters 5413 | culleton 5414 | opt 5415 | opp 5416 | background 5417 | signal 5418 | dean 5419 | somehow 5420 | dear 5421 | notification 5422 | youtuber 5423 | yelling 5424 | lied 5425 | sergio 5426 | attached 5427 | abusing 5428 | vacate 5429 | premises 5430 | technique 5431 | praised 5432 | string 5433 | item 5434 | refused 5435 | institute 5436 | shift 5437 | boo 5438 | dick 5439 | crayons 5440 | nicosia 5441 | flu 5442 | bites 5443 | deceased 5444 | designer 5445 | messaging 5446 | neck 5447 | stability 5448 | mail 5449 | sooner 5450 | attorneys 5451 | admins 5452 | ajay 5453 | loretta 5454 | butt 5455 | cracks 5456 | victorian 5457 | protected 5458 | knives 5459 | voices 5460 | dash 5461 | dips 5462 | jungle 5463 | sachin 5464 | injection 5465 | employers 5466 | mineral 5467 | lyft 5468 | satisfying 5469 | jfk 5470 | dates 5471 | rugby 5472 | remake 5473 | harbor 5474 | innovations 5475 | graveyard 5476 | bmw 5477 | sound 5478 | apologises 5479 | bathrooms 5480 | harsh 5481 | drain 5482 | iraqis 5483 | mortgages 5484 | tourism 5485 | swooning 5486 | grip 5487 | mod 5488 | sudan 5489 | knife 5490 | tumour 5491 | visits 5492 | nafta 5493 | lands 5494 | spreading 5495 | passports 5496 | gore 5497 | khloe 5498 | fruitless 5499 | casts 5500 | starting 5501 | commute 5502 | removing 5503 | ramen 5504 | flyover 5505 | neighborhood 5506 | dial 5507 | coroner 5508 | disastrous 5509 | threads 5510 | transit 5511 | damaged 5512 | leonard 5513 | purchases 5514 | flawless 5515 | questioning 5516 | pleasure 5517 | thrilling 5518 | edmund 5519 | pena 5520 | spectacles 5521 | socially 5522 | christ 5523 | robbie 5524 | tiffany 5525 | resurfacing 5526 | tailgating 5527 | extraordinary 5528 | beginning 5529 | harris 5530 | embraced 5531 | killin 5532 | revive 5533 | flaws 5534 | declare 5535 | showers 5536 | majority 5537 | godfather 5538 | charm 5539 | goodwill 5540 | humanitarian 5541 | ruia 5542 | weve 5543 | bet 5544 | steampunk 5545 | vine 5546 | feared 5547 | aircraft 5548 | baltimore 5549 | rae 5550 | trilogy 5551 | creativity 5552 | ukraine 5553 | vans 5554 | unnecessarily 5555 | patriarchy 5556 | politician 5557 | reign 5558 | semi 5559 | ptsd 5560 | extremism 5561 | martial 5562 | ornaments 5563 | jewelry 5564 | contacts 5565 | pankaj 5566 | pee 5567 | shinzo 5568 | jockey 5569 | underlines 5570 | byrne 5571 | motivational 5572 | verma 5573 | cafe 5574 | joan 5575 | excuses 5576 | kashmiris 5577 | gopro 5578 | hanson 5579 | depicting 5580 | adorably 5581 | unislamic 5582 | graves 5583 | peanut 5584 | literary 5585 | accuse 5586 | severely 5587 | falcons 5588 | toast 5589 | raccoons 5590 | packing 5591 | safer 5592 | climb 5593 | oval 5594 | cha 5595 | hrd 5596 | duped 5597 | ace 5598 | unreal 5599 | obvious 5600 | afc 5601 | leukemia 5602 | prostate 5603 | bombers 5604 | chasing 5605 | furious 5606 | creeped 5607 | revives 5608 | spell 5609 | mandate 5610 | february 5611 | warned 5612 | falsely 5613 | airbnb 5614 | stun 5615 | chiefs 5616 | marcelo 5617 | barriers 5618 | sack 5619 | himachal 5620 | monkey 5621 | hilary 5622 | strongman 5623 | grandchildren 5624 | throat 5625 | gravity 5626 | baird 5627 | selection 5628 | kite 5629 | satan 5630 | buying 5631 | coworker 5632 | mercedes 5633 | joanna 5634 | madam 5635 | desperately 5636 | madras 5637 | ralph 5638 | bruno 5639 | optional 5640 | legit 5641 | revoked 5642 | fukushima 5643 | mafia 5644 | darren 5645 | upbeat 5646 | proposal 5647 | seniormost 5648 | finished 5649 | bull 5650 | bye 5651 | dissent 5652 | blimp 5653 | arabia 5654 | superheroes 5655 | landmarks 5656 | defiant 5657 | casualty 5658 | moyes 5659 | novels 5660 | samantha 5661 | bullying 5662 | commenters 5663 | weapon 5664 | seth 5665 | creators 5666 | stores 5667 | lake 5668 | citizen 5669 | successor 5670 | admitted 5671 | hain 5672 | odisha 5673 | hurricane 5674 | shelter 5675 | guantnamo 5676 | rushed 5677 | hotspots 5678 | ivory 5679 | sequel 5680 | glory 5681 | flip 5682 | pip 5683 | detail 5684 | warners 5685 | featuring 5686 | carried 5687 | merchant 5688 | lure 5689 | direct 5690 | fidelio 5691 | hillsborough 5692 | spike 5693 | musk 5694 | cheapest 5695 | mr 5696 | addictive 5697 | estate 5698 | guarantee 5699 | widespread 5700 | danny 5701 | acknowledged 5702 | executed 5703 | expects 5704 | bishen 5705 | ftse 5706 | shadows 5707 | explode 5708 | congo 5709 | fonte 5710 | signing 5711 | hanger 5712 | ghosts 5713 | psychic 5714 | newly 5715 | jessop 5716 | sumit 5717 | adopted 5718 | sharpest 5719 | inmate 5720 | ceiling 5721 | dessert 5722 | wrapped 5723 | western 5724 | gabor 5725 | nominate 5726 | plenty 5727 | coin 5728 | menswear 5729 | inspire 5730 | colors 5731 | escalator 5732 | ocd 5733 | announce 5734 | angers 5735 | spokesperson 5736 | jose 5737 | weak 5738 | censorship 5739 | fault 5740 | behaviors 5741 | duping 5742 | expenses 5743 | nike 5744 | peaks 5745 | welsh 5746 | positives 5747 | tyson 5748 | savings 5749 | mathews 5750 | hearts 5751 | laptop 5752 | thumbs 5753 | deputy 5754 | cherry 5755 | cultural 5756 | melting 5757 | specific 5758 | offices 5759 | convict 5760 | deleted 5761 | newcomer 5762 | bangalore 5763 | misleading 5764 | destination 5765 | entrepreneur 5766 | transform 5767 | anderson 5768 | attempted 5769 | wireless 5770 | removed 5771 | na 5772 | fitzgerald 5773 | ashish 5774 | faster 5775 | trident 5776 | warburton 5777 | bake 5778 | ravindra 5779 | xander 5780 | witch 5781 | emmys 5782 | riot 5783 | employee 5784 | teaser 5785 | drown 5786 | laughter 5787 | coral 5788 | stream 5789 | liquid 5790 | devi 5791 | azhar 5792 | blocked 5793 | realistic 5794 | divisional 5795 | obsession 5796 | abdication 5797 | costas 5798 | swing 5799 | carney 5800 | sandeep 5801 | wwe 5802 | pokemon 5803 | cope 5804 | alan 5805 | armymen 5806 | wide 5807 | decoded 5808 | ann 5809 | sells 5810 | clearer 5811 | adopt 5812 | boyle 5813 | closure 5814 | ignores 5815 | abled 5816 | ability 5817 | mortgage 5818 | importance 5819 | contract 5820 | merry 5821 | howard 5822 | abdul 5823 | billionaires 5824 | confessions 5825 | arnold 5826 | prayer 5827 | harrison 5828 | announcement 5829 | disrupt 5830 | kingdom 5831 | harbhajan 5832 | kennedy 5833 | donations 5834 | attempting 5835 | eternity 5836 | jewellery 5837 | mood 5838 | highest 5839 | op 5840 | ladies 5841 | whales 5842 | bairstow 5843 | promote 5844 | sacks 5845 | witherspoon 5846 | castles 5847 | alarm 5848 | tasty 5849 | igi 5850 | strokes 5851 | symbol 5852 | perry 5853 | arsenals 5854 | invest 5855 | kutcher 5856 | apartment 5857 | grinds 5858 | liars 5859 | crush 5860 | tags 5861 | suddenly 5862 | widens 5863 | demo 5864 | grabbing 5865 | stick 5866 | sunscreen 5867 | allege 5868 | goat 5869 | brands 5870 | susan 5871 | marlon 5872 | shady 5873 | trevor 5874 | bindra 5875 | policeman 5876 | colder 5877 | jew 5878 | prejudice 5879 | fallen 5880 | feed 5881 | unhealthy 5882 | feet 5883 | grime 5884 | dana 5885 | suspicious 5886 | fiona 5887 | baijal 5888 | bacteria 5889 | donor 5890 | goldman 5891 | sandra 5892 | pennies 5893 | rti 5894 | rublev 5895 | represent 5896 | hip 5897 | shepherd 5898 | yamuna 5899 | bara 5900 | threats 5901 | managers 5902 | consecutive 5903 | succeed 5904 | betrayed 5905 | baseball 5906 | reduction 5907 | algeria 5908 | plants 5909 | stolen 5910 | homework 5911 | rip 5912 | headway 5913 | rid 5914 | viola 5915 | corinne 5916 | tables 5917 | illusions 5918 | mariah 5919 | skeptical 5920 | shaped 5921 | ignore 5922 | newsletter 5923 | significant 5924 | lawsuits 5925 | filed 5926 | z 5927 | kamat 5928 | nirupam 5929 | dale 5930 | meaning 5931 | allowing 5932 | clue 5933 | suffers 5934 | karma 5935 | buffalo 5936 | dissidents 5937 | graphic 5938 | universities 5939 | reaching 5940 | chose 5941 | fishermans 5942 | spicer 5943 | management 5944 | plinth 5945 | indulgence 5946 | raps 5947 | sir 5948 | brian 5949 | memoir 5950 | preparing 5951 | farming 5952 | flee 5953 | doubled 5954 | supports 5955 | disclose 5956 | rejoice 5957 | illicit 5958 | produce 5959 | echo 5960 | walter 5961 | destinations 5962 | ponzi 5963 | screw 5964 | unbelievably 5965 | cohen 5966 | ray 5967 | alarmed 5968 | fowler 5969 | refund 5970 | cole 5971 | closed 5972 | frustrated 5973 | takeover 5974 | tactical 5975 | grounds 5976 | withdraws 5977 | alys 5978 | ewan 5979 | exploding 5980 | medicinal 5981 | supply 5982 | snuck 5983 | thug 5984 | pema 5985 | sops 5986 | automation 5987 | approve 5988 | fishing 5989 | tch 5990 | guts 5991 | discuss 5992 | adoption 5993 | boon 5994 | myth 5995 | loser 5996 | starred 5997 | leak 5998 | lean 5999 | debuts 6000 | murderer 6001 | swear 6002 | heroics 6003 | tailgate 6004 | fundraiser 6005 | suburbs 6006 | busts 6007 | distract 6008 | pandyas 6009 | plaudits 6010 | deport 6011 | granting 6012 | hingis 6013 | sinking 6014 | hormone 6015 | disturb 6016 | andre 6017 | katara 6018 | pulse 6019 | errors 6020 | negates 6021 | rld 6022 | hulu 6023 | uplifting 6024 | crawford 6025 | electors 6026 | cocaine 6027 | agassi 6028 | cents 6029 | holi 6030 | jagannath 6031 | circumstances 6032 | decoration 6033 | intake 6034 | locked 6035 | household 6036 | artillery 6037 | unpaid 6038 | complaining 6039 | comedians 6040 | significance 6041 | retreating 6042 | eavis 6043 | oceans 6044 | summon 6045 | cigarettes 6046 | unlawfully 6047 | parli 6048 | corporators 6049 | dreamed 6050 | zac 6051 | sarita 6052 | arron 6053 | misspellings 6054 | strips 6055 | efron 6056 | ring 6057 | whip 6058 | assures 6059 | ate 6060 | tempting 6061 | chronic 6062 | juergen 6063 | trillion 6064 | kfc 6065 | clarity 6066 | deadliest 6067 | lustre 6068 | task 6069 | predictable 6070 | crawl 6071 | sheen 6072 | affairs 6073 | kidnap 6074 | doin 6075 | cummings 6076 | lpo 6077 | caper 6078 | copy 6079 | bust 6080 | textbooks 6081 | patch 6082 | sensitivity 6083 | bagan 6084 | ira 6085 | preserve 6086 | scudetto 6087 | kunal 6088 | chandler 6089 | defiance 6090 | irresponsible 6091 | dhan 6092 | cardboard 6093 | michele 6094 | deportations 6095 | obese 6096 | spit 6097 | chile 6098 | remembering 6099 | ditching 6100 | format 6101 | rebound 6102 | srinagar 6103 | lucas 6104 | lonelier 6105 | plaque 6106 | birmingham 6107 | falcon 6108 | alun 6109 | broncos 6110 | collections 6111 | manmohan 6112 | hat 6113 | possibly 6114 | fortis 6115 | sliced 6116 | bobby 6117 | remind 6118 | misled 6119 | macabre 6120 | polluted 6121 | pattern 6122 | hindu 6123 | stylish 6124 | pliers 6125 | manufacturing 6126 | filipino 6127 | dollars 6128 | maxwell 6129 | sow 6130 | shoots 6131 | probes 6132 | notifications 6133 | congratulations 6134 | peso 6135 | nicest 6136 | bidhannagar 6137 | textbook 6138 | lytton 6139 | hijabs 6140 | protested 6141 | protester 6142 | outage 6143 | stealing 6144 | kitson 6145 | rolling 6146 | troop 6147 | rockers 6148 | inaugurations 6149 | timm 6150 | activated 6151 | umbrage 6152 | nephew 6153 | malaysians 6154 | hindi 6155 | veg 6156 | mourn 6157 | rayner 6158 | maha 6159 | cameo 6160 | holliday 6161 | unaware 6162 | findings 6163 | hindered 6164 | telford 6165 | sheeran 6166 | anaconda 6167 | educate 6168 | psychotropic 6169 | cleanliness 6170 | realizing 6171 | funeral 6172 | funded 6173 | br 6174 | prefer 6175 | vodka 6176 | bloody 6177 | charming 6178 | forefront 6179 | opposed 6180 | syrians 6181 | prosecutor 6182 | introducing 6183 | oregon 6184 | printing 6185 | ramesh 6186 | unforgettable 6187 | latte 6188 | bluster 6189 | sl 6190 | tomlin 6191 | repair 6192 | overhaul 6193 | solace 6194 | ambala 6195 | councillor 6196 | abusive 6197 | limbo 6198 | arriving 6199 | reckoning 6200 | twilight 6201 | runners 6202 | jellyfish 6203 | square 6204 | mantra 6205 | trauma 6206 | formula 6207 | prostitutes 6208 | vegetarians 6209 | artistes 6210 | wanderers 6211 | mythic 6212 | info 6213 | spoken 6214 | tableaux 6215 | chubby 6216 | produnova 6217 | mannan 6218 | wrath 6219 | backpage 6220 | surges 6221 | meddling 6222 | rehab 6223 | shakeup 6224 | illness 6225 | supremacist 6226 | invite 6227 | zoe 6228 | fashionable 6229 | jefferson 6230 | imphal 6231 | constable 6232 | moose 6233 | scilly 6234 | beckham 6235 | congressional 6236 | pretended 6237 | krishna 6238 | priest 6239 | bombs 6240 | uncover 6241 | tyagi 6242 | appropriating 6243 | goers 6244 | prettiest 6245 | vinayak 6246 | jets 6247 | undermine 6248 | loudly 6249 | semitic 6250 | backpack 6251 | mann 6252 | rajaji 6253 | ghulam 6254 | extinct 6255 | math 6256 | locally 6257 | renewables 6258 | hashtag 6259 | skylines 6260 | juveniles 6261 | libya 6262 | rawnsley 6263 | consultant 6264 | center 6265 | spotlight 6266 | nevill 6267 | twists 6268 | blak 6269 | expenditures 6270 | clapping 6271 | sterling 6272 | cheers 6273 | caption 6274 | kranti 6275 | renewable 6276 | uproar 6277 | grumpy 6278 | ngos 6279 | coded 6280 | starving 6281 | snarl 6282 | sitcom 6283 | overhyped 6284 | tsunami 6285 | rachael 6286 | footfall 6287 | daman 6288 | lobster 6289 | brits 6290 | diving 6291 | nicola 6292 | altercation 6293 | riveting 6294 | memories 6295 | tube 6296 | amritraj 6297 | virginia 6298 | victories 6299 | juggernaut 6300 | ration 6301 | lucic 6302 | tripura 6303 | partied 6304 | berger 6305 | choppers 6306 | lively 6307 | garment 6308 | mourns 6309 | yaya 6310 | mick 6311 | handsome 6312 | pompeo 6313 | regimes 6314 | ac 6315 | watches 6316 | hypertension 6317 | midwife 6318 | vora 6319 | graduate 6320 | velvet 6321 | touts 6322 | mask 6323 | toure 6324 | thakurs 6325 | andrea 6326 | illustrates 6327 | ts 6328 | tb 6329 | norm 6330 | dsk 6331 | wavers 6332 | myself 6333 | documentaries 6334 | puzzles 6335 | webchat 6336 | cable 6337 | kharagpur 6338 | sand 6339 | tosses 6340 | humpback 6341 | poisonous 6342 | nurse 6343 | rajapaksa 6344 | hasn 6345 | muzaffarpur 6346 | fiorentina 6347 | harrelson 6348 | defectors 6349 | luck 6350 | vin 6351 | tricolour 6352 | kick 6353 | kuldeep 6354 | ouch 6355 | shelves 6356 | mcknight 6357 | mali 6358 | facelift 6359 | entertain 6360 | sikh 6361 | hugo 6362 | hugh 6363 | upto 6364 | sq 6365 | soundtrack 6366 | plank 6367 | refuse 6368 | broadcasting 6369 | solely 6370 | enhances 6371 | migrant 6372 | iniesta 6373 | poetic 6374 | individuals 6375 | ruining 6376 | sauce 6377 | balotelli 6378 | edinson 6379 | disappearing 6380 | manch 6381 | sturridge 6382 | eviction 6383 | bumper 6384 | traumatize 6385 | slipped 6386 | chembur 6387 | protectionism 6388 | jet 6389 | tata 6390 | mmmm 6391 | appreciation 6392 | clowes 6393 | aai 6394 | rupee 6395 | basically 6396 | organisations 6397 | andheri 6398 | ballerina 6399 | commotion 6400 | freakishly 6401 | treehouses 6402 | wolffe 6403 | departmental 6404 | agnihotri 6405 | darth 6406 | virus 6407 | funnier 6408 | understands 6409 | arson 6410 | gaby 6411 | tpp 6412 | cruises 6413 | vader 6414 | defender 6415 | distance 6416 | closely 6417 | progressive 6418 | creator 6419 | mcduff 6420 | regulator 6421 | deactivate 6422 | pickup 6423 | avoidance 6424 | naik 6425 | narnia 6426 | bhajan 6427 | feminist 6428 | improves 6429 | aggregator 6430 | lash 6431 | smashing 6432 | lapd 6433 | adaptation 6434 | faraday 6435 | publishing 6436 | hitting 6437 | devis 6438 | miers 6439 | wheeler 6440 | races 6441 | error 6442 | styles 6443 | sabha 6444 | ducks 6445 | triple 6446 | barney 6447 | brazilians 6448 | shorten 6449 | nabi 6450 | necessity 6451 | surrogate 6452 | alleging 6453 | stunt 6454 | wives 6455 | autumn 6456 | parliamentarians 6457 | tribes 6458 | privately 6459 | curious 6460 | biathlon 6461 | festivals 6462 | behave 6463 | cheered 6464 | marin 6465 | stuart 6466 | criticized 6467 | hometown 6468 | doubters 6469 | lebron 6470 | inspects 6471 | parvati 6472 | arcade 6473 | doj 6474 | tragedies 6475 | waterfalls 6476 | poster 6477 | relaxed 6478 | slums 6479 | verification 6480 | ub 6481 | aizawl 6482 | nationalism 6483 | invalid 6484 | holes 6485 | alary 6486 | astronauts 6487 | soften 6488 | description 6489 | citing 6490 | nuttall 6491 | llama 6492 | nieto 6493 | categories 6494 | hamon 6495 | odd 6496 | victor 6497 | ukip 6498 | cringing 6499 | len 6500 | bald --------------------------------------------------------------------------------