gruhit-patel commited on
Commit
c7210e6
1 Parent(s): f69bc09

Initial Commit

Browse files
Files changed (7) hide show
  1. Dockerfile +9 -0
  2. backend_requirements.txt +11 -0
  3. finetune_model1.keras +0 -0
  4. main.py +51 -0
  5. model.py +265 -0
  6. utils.py +61 -0
  7. vectorizer/vocabulary.txt +2000 -0
Dockerfile ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.11
2
+
3
+ COPY . .
4
+
5
+ WORKDIR /
6
+
7
+ RUN pip install --no-cache-dir --upgrade -r backend_requirements.txt
8
+
9
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
backend_requirements.txt ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ nltk
2
+ regex
3
+ emoji
4
+ fastapi
5
+ uvicorn
6
+ numpy
7
+ matplotlib
8
+ seaborn
9
+ scikit-learn
10
+ tensorflow==2.15.0
11
+ keras==3.4.1
finetune_model1.keras ADDED
Binary file (962 kB). View file
 
main.py ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
3
+
4
+ import warnings
5
+ warnings.filterwarnings("ignore")
6
+
7
+ import numpy as np
8
+ from fastapi import FastAPI
9
+ from pydantic import BaseModel
10
+ from utils import preprocess_text
11
+ from model import get_model
12
+ import json
13
+
14
+ MODEL_PATH = "finetune_model1.keras"
15
+ model = get_model(MODEL_PATH)
16
+
17
+ class ReqBody(BaseModel):
18
+ text: str
19
+
20
+ INDEX_TO_CLASS = {
21
+ 0: 'Positive',
22
+ 1: 'Neutral',
23
+ 2: 'Negative'
24
+ }
25
+
26
+ def predict_sentiment(tokens):
27
+ oup = model.predict(tokens, verbose=0)
28
+ label = int(np.argmax(oup, axis=-1)[0])
29
+ return {
30
+ 'sentiment': INDEX_TO_CLASS[label],
31
+ 'probs': oup[0].tolist()
32
+ }
33
+
34
+ app = FastAPI()
35
+
36
+ @app.get("/")
37
+ def foo():
38
+ return {
39
+ "status": "Sentiment Classifier"
40
+ }
41
+
42
+ @app.post("/predict")
43
+ def predict(req: ReqBody):
44
+ text = req.text
45
+ tokens = preprocess_text(text)
46
+
47
+ result = predict_sentiment(tokens)
48
+
49
+ return {
50
+ 'result': json.dumps(result)
51
+ }
model.py ADDED
@@ -0,0 +1,265 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import tensorflow as tf
2
+ import keras
3
+ from keras import layers
4
+
5
+ import numpy as np
6
+ import matplotlib.pyplot as plt
7
+ import seaborn as sns
8
+ from sklearn.metrics import auc, roc_curve
9
+
10
+ def positional_encoding(length, depth):
11
+ depth = depth/2
12
+
13
+ positions = np.arange(length)[:, np.newaxis]
14
+ depths = np.arange(depth)[np.newaxis, :]/depth
15
+
16
+ angle_rates = 1/(10000**depths)
17
+ angle_rads = positions * angle_rates
18
+
19
+ pos_encoding = np.concatenate(
20
+ [np.sin(angle_rads), np.cos(angle_rads)],
21
+ axis=-1
22
+ )
23
+
24
+ return tf.cast(pos_encoding, dtype=tf.float32)
25
+
26
+ # Token Emebdding Layer and Positional Encoding
27
+ class TokenEmbedding(layers.Layer):
28
+ def __init__(self, vocab_size, emb_dim, max_len, dropout = None, regularizer = None):
29
+ super(TokenEmbedding, self).__init__()
30
+ self.vocab_size = vocab_size
31
+ self.emb_dim = emb_dim
32
+ self.max_len = max_len
33
+ self.token_emb = layers.Embedding(
34
+ self.vocab_size, self.emb_dim, mask_zero=True, embeddings_regularizer = regularizer
35
+ )
36
+ self.pos_enc = positional_encoding(self.max_len, self.emb_dim)
37
+
38
+ self.dropout = dropout
39
+ if self.dropout is not None:
40
+ self.dropout_layer = layers.Dropout(self.dropout)
41
+
42
+ def compute_mask(self, *args, **kwargs):
43
+ return self.token_emb.compute_mask(*args, **kwargs)
44
+
45
+ def call(self, x):
46
+ length = tf.shape(x)[1]
47
+ token_emb = self.token_emb(x)
48
+ token_emb *= tf.math.sqrt(tf.cast(self.emb_dim, tf.float32))
49
+ token_emb = token_emb + self.pos_enc[tf.newaxis, :length, :]
50
+
51
+ if self.dropout is not None:
52
+ return self.dropout_layer(token_emb)
53
+ else:
54
+ return token_emb
55
+
56
+ class Encoder(layers.Layer):
57
+ def __init__(
58
+ self,
59
+ vocab_size,
60
+ maxlen,
61
+ emb_dim,
62
+ num_heads,
63
+ ffn_dim,
64
+ dropout=0.1,
65
+ regularizer = None
66
+ ):
67
+ super(Encoder, self).__init__()
68
+ self.vocab_size = vocab_size
69
+ self.maxlen = maxlen
70
+ self.emb_dim = emb_dim
71
+ self.num_heads = num_heads
72
+ self.ffn_dim = ffn_dim
73
+ self.dropout = dropout
74
+ self.attention = None
75
+ self.regularizer = regularizer
76
+
77
+ # In most of the Attention implementation the query, key and value layer do not have biased added
78
+ # even in formula we just multipy with the weights and do not add bias.
79
+ self.attn = layers.MultiHeadAttention(self.num_heads, self.emb_dim, use_bias=False, kernel_regularizer=self.regularizer)
80
+ self.ffn_layer = keras.Sequential([
81
+ layers.Dense(self.ffn_dim, activation='relu', kernel_regularizer=self.regularizer),
82
+ layers.Dropout(self.dropout),
83
+ layers.Dense(self.emb_dim, kernel_regularizer=self.regularizer)
84
+ ])
85
+ self.layernorm1 = layers.LayerNormalization(epsilon=1e-6)
86
+ self.layernorm2 = layers.LayerNormalization(epsilon=1e-6)
87
+ self.dropout1 = layers.Dropout(self.dropout)
88
+ self.dropout2 = layers.Dropout(self.dropout)
89
+
90
+
91
+ def call(self, x):
92
+ attn_output = self.attn(query=x, key=x, value=x, use_causal_mask = True)
93
+ x = self.layernorm1(x + self.dropout1(attn_output))
94
+
95
+ ffn_output = self.ffn_layer(x)
96
+ x = self.layernorm2(x + self.dropout2(ffn_output))
97
+
98
+ return x
99
+
100
+ @keras.saving.register_keras_serializable()
101
+ class Transformer(keras.Model):
102
+ def __init__(
103
+ self,
104
+ vocab_size,
105
+ maxlen,
106
+ emb_dim,
107
+ num_heads,
108
+ ffn_dim,
109
+ num_classes,
110
+ num_layers = 1,
111
+ dropout = 0.1,
112
+ regularizer = None
113
+ ):
114
+ super(Transformer, self).__init__()
115
+ self.vocab_size = vocab_size
116
+ self.maxlen = maxlen
117
+ self.emb_dim = emb_dim
118
+ self.maxlen = maxlen
119
+ self.emb_dim = emb_dim
120
+ self.num_heads = num_heads
121
+ self.ffn_dim = ffn_dim
122
+ self.num_classes = num_classes
123
+ self.num_layers = num_layers
124
+ self.dropout = dropout
125
+ self.regularizer = regularizer
126
+
127
+ self.token_emb = TokenEmbedding(self.vocab_size, self.emb_dim, self.maxlen, self.dropout, self.regularizer)
128
+
129
+ self.encoder_stack = keras.Sequential([
130
+ Encoder(self.vocab_size, self.maxlen, self.emb_dim, self.num_heads, self.ffn_dim, self.dropout, self.regularizer)
131
+ for _ in range(self.num_layers)
132
+ ])
133
+
134
+ self.average_pool = layers.GlobalAveragePooling1D()
135
+ self.dropout_layer = layers.Dropout(self.dropout)
136
+ self.clf_head = layers.Dense(self.num_classes, activation='softmax', kernel_regularizer=self.regularizer)
137
+
138
+ def call(self, x):
139
+ x = self.token_emb(x)
140
+
141
+ x = self.encoder_stack(x)
142
+ x = self.average_pool(x)
143
+ x = self.dropout_layer(x)
144
+ probs = self.clf_head(x)
145
+
146
+ return probs
147
+
148
+ # Tooked reference my Deep learning Week-5 Assignment
149
+ def visualize_model(self, history):
150
+ plt.figure(figsize=(14, 6))
151
+ # Extract the metrics to visulalize
152
+ metrics = []
153
+
154
+ # Getting all the metrics we have while model training
155
+ hist_metrics = history.history.keys()
156
+ for item in hist_metrics:
157
+ if item.startswith("val"):
158
+ continue
159
+
160
+ metrics.append(item)
161
+
162
+ for indx, metric in enumerate(metrics):
163
+ title = f'{metric}'
164
+ legends = [metric]
165
+ plt.subplot(1, 2, indx+1)
166
+ plt.plot(history.history[metric], label=metric, marker='o')
167
+
168
+ val_metric = 'val_' + metric
169
+ if val_metric in hist_metrics:
170
+ title += f" vs {val_metric}"
171
+ plt.plot(history.history[val_metric], label=val_metric, marker='^')
172
+ legends.append(val_metric)
173
+
174
+ plt.legend(legends)
175
+ plt.title(title)
176
+
177
+ plt.show()
178
+
179
+ def preds(self, dataset: tf.data.Dataset):
180
+ y_true = []
181
+ y_pred = []
182
+
183
+ dataset_len = len(dataset)
184
+ for inp, label in dataset.take(dataset_len):
185
+ pred = self.call(inp).numpy()
186
+ y_true.extend(label.numpy())
187
+ y_pred.extend(pred)
188
+
189
+ y_true = np.array(y_true)
190
+ y_pred = np.array(y_pred)
191
+
192
+ y_true_label = np.argmax(y_true, axis=-1)
193
+ y_pred_label = np.argmax(y_pred, axis=-1)
194
+
195
+ return y_true, y_true_label, y_pred, y_pred_label
196
+
197
+ def plot_confusion_matrix(self, conf_matrix, labels):
198
+ plt.figure(figsize=(8, 6))
199
+ plt.title("Confusion Matrix", {'size': 14})
200
+ sns.heatmap(conf_matrix, annot=True, fmt='d', xticklabels=labels, yticklabels=labels)
201
+ plt.xlabel("Predicted", {'size': 12})
202
+ plt.ylabel("Actual", {'size': 12})
203
+ plt.show()
204
+
205
+ def plot_roc_curve(self, y_true, y_pred, labels):
206
+ fpr = dict()
207
+ tpr = dict()
208
+ roc_auc = dict()
209
+
210
+ for i, label in enumerate(labels):
211
+ fpr[label], tpr[label], _ = roc_curve(y_true[:, i], y_pred[:, i])
212
+ roc_auc[label] = auc(fpr[label], tpr[label])
213
+
214
+ fpr["micro"], tpr["micro"], _ = roc_curve(y_true.ravel(), y_pred.ravel())
215
+ roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])
216
+
217
+ plt.figure(figsize=(6, 6))
218
+ plt.title("ROC Curve", {'size': 14})
219
+ plt.plot(fpr["micro"], tpr["micro"], label=f"ROC micro-avg area({roc_auc['micro']*100:.1f}%)")
220
+
221
+ for label in labels:
222
+ plt.plot(fpr[label], tpr[label], label=f"ROC {label} area({roc_auc[label]*100:.1f})%")
223
+
224
+ plt.plot([0, 1], [0, 1], 'k--', label='No Skill')
225
+ plt.xlim([-0.05, 1.05])
226
+ plt.ylim([-0.05, 1.05])
227
+ plt.xlabel("False Positive Rate")
228
+ plt.ylabel("True Positive Rate")
229
+ plt.grid()
230
+ plt.legend(loc="lower right")
231
+ plt.show()
232
+
233
+ def get_config(self):
234
+ base_config = super().get_config()
235
+ config = {
236
+ "vocab_size": self.vocab_size,
237
+ "maxlen": self.maxlen,
238
+ "emb_dim": self.emb_dim,
239
+ "num_heads": self.num_heads,
240
+ "ffn_dim": self.ffn_dim,
241
+ "num_classes": self.num_classes,
242
+ "num_layers": self.num_layers,
243
+ "dropout": self.dropout,
244
+ "regularizer": self.regularizer
245
+ }
246
+
247
+ return {**base_config, **config}
248
+
249
+ @classmethod
250
+ def from_config(cls, config):
251
+ vocab_size = config.pop("vocab_size")
252
+ maxlen = config.pop("maxlen")
253
+ emb_dim = config.pop("emb_dim")
254
+ num_heads = config.pop("num_heads")
255
+ ffn_dim = config.pop("ffn_dim")
256
+ num_classes = config.pop("num_classes")
257
+ num_layers = config.pop("num_layers")
258
+ dropout = config.pop("dropout")
259
+ regularizer = config.pop("regularizer")
260
+
261
+ return cls(vocab_size, maxlen, emb_dim, num_heads, ffn_dim, num_classes,
262
+ num_layers, dropout, regularizer)
263
+
264
+ def get_model(filepath):
265
+ return keras.models.load_model(filepath)
utils.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
3
+
4
+ import re
5
+ import emoji
6
+ import nltk
7
+ from nltk.corpus import stopwords
8
+ from nltk.stem import WordNetLemmatizer
9
+
10
+ import tensorflow as tf
11
+ import keras
12
+
13
+ vectorizer = keras.layers.TextVectorization(
14
+ max_tokens = 2000,
15
+ output_sequence_length = 32
16
+ )
17
+ vectorizer.load_assets('./vectorizer')
18
+
19
+ nltk.download('punkt')
20
+ nltk.download('wordnet')
21
+ nltk.download('stopwords')
22
+
23
+ # Get english stopwords
24
+ en_stopwords = set(stopwords.words('english'))
25
+
26
+ # Get the lemmatizer
27
+ lemmatizer = WordNetLemmatizer()
28
+
29
+ def preprocess_text(text):
30
+ # Conver the text to lowercase
31
+ text = text.lower()
32
+
33
+ # Replace '#' tags
34
+ text = text.replace('#', '')
35
+
36
+ # Remove the nametags/mentions
37
+ text = re.sub(r'@[^\s]+', '', text)
38
+
39
+ # Remove the hyperlinks
40
+ text = re.sub(r'https:\/\/\S+', '', text)
41
+
42
+ # Remove the leading and trailing spaces
43
+ text = text.strip()
44
+
45
+ # Remove the emojis
46
+ text = emoji.demojize(text)
47
+
48
+ # Tokenize the word to lematize it
49
+ tokens = nltk.word_tokenize(text)
50
+ lemma_tokens = [lemmatizer.lemmatize(token) for token in tokens]
51
+ lemma_tokens = [w for w in lemma_tokens if w not in en_stopwords]
52
+
53
+ text = ' '.join(lemma_tokens)
54
+
55
+ tokens = vectorizer(text)
56
+ tokens = tf.expand_dims(tokens, axis=0)
57
+
58
+ return tokens
59
+
60
+ if __name__ == "__main__":
61
+ print(preprocess_text("I am running today"))
vectorizer/vocabulary.txt ADDED
@@ -0,0 +1,2000 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ [UNK]
3
+ freedom
4
+ convoy
5
+ freedomconvoy
6
+ ottawa
7
+ wa
8
+ canada
9
+ s
10
+ trucker
11
+ canadian
12
+ people
13
+ protest
14
+ trudeau
15
+ nt
16
+ amp
17
+ via
18
+ ha
19
+ like
20
+ police
21
+ 2022
22
+ right
23
+ support
24
+ one
25
+ government
26
+ u
27
+ copyright
28
+ mandate
29
+ get
30
+ say
31
+ would
32
+ protester
33
+ go
34
+ want
35
+ freedomconvoy2022
36
+ live
37
+ know
38
+ day
39
+ emergency
40
+ de
41
+ news
42
+ truck
43
+ time
44
+ think
45
+ see
46
+ medium
47
+ need
48
+ cdnpoli
49
+ act
50
+ going
51
+ organizer
52
+ peaceful
53
+ world
54
+ registered
55
+ its
56
+ make
57
+ many
58
+ back
59
+ le
60
+ country
61
+ take
62
+ flag
63
+ vaccine
64
+ look
65
+ way
66
+ even
67
+ re
68
+ thing
69
+ never
70
+ doe
71
+ gofundme
72
+ liberal
73
+ good
74
+ dont
75
+ still
76
+ also
77
+ stop
78
+ covid
79
+ leader
80
+ called
81
+ group
82
+ end
83
+ new
84
+ movement
85
+ supporter
86
+ account
87
+ la
88
+ said
89
+ justin
90
+ really
91
+ could
92
+ show
93
+ money
94
+ year
95
+ well
96
+ nothing
97
+ much
98
+ stand
99
+ 2
100
+ real
101
+ let
102
+ american
103
+ video
104
+ million
105
+ city
106
+ today
107
+ part
108
+ free
109
+ m
110
+ week
111
+ call
112
+ bank
113
+ come
114
+ freedomconvoycanada2022
115
+ conservative
116
+ love
117
+ white
118
+ truckersforfreedom2022
119
+ life
120
+ got
121
+ border
122
+ state
123
+ use
124
+ donation
125
+ dc
126
+ last
127
+ anyone
128
+ ukraine
129
+ party
130
+ made
131
+ socalled
132
+ tamara
133
+ please
134
+ protesting
135
+ lich
136
+ every
137
+ keep
138
+ watch
139
+ ontario
140
+ law
141
+ everyone
142
+ hate
143
+ im
144
+ thank
145
+ truckersforfreedom
146
+ citizen
147
+ trying
148
+ around
149
+ usa
150
+ give
151
+ work
152
+ supported
153
+ guy
154
+ another
155
+ fund
156
+ first
157
+ lie
158
+ hope
159
+ public
160
+ parliament
161
+ pm
162
+ cbc
163
+ racist
164
+ political
165
+ nazi
166
+ supporting
167
+ away
168
+ fighting
169
+ power
170
+ actually
171
+ believe
172
+ must
173
+ great
174
+ 1
175
+ far
176
+ lot
177
+ mean
178
+ protestors
179
+ tell
180
+ sure
181
+ help
182
+ democracy
183
+ minister
184
+ mask
185
+ threat
186
+ left
187
+ fight
188
+ truth
189
+ terrorist
190
+ action
191
+ donated
192
+ covid19
193
+ ca
194
+ trudeaumustgo
195
+ violence
196
+ donor
197
+ coming
198
+ trump
199
+ arrested
200
+ join
201
+ fact
202
+ ever
203
+ business
204
+ en
205
+ something
206
+ big
207
+ honkhonk
208
+ blockade
209
+ arrest
210
+ member
211
+ used
212
+ home
213
+ govt
214
+ point
215
+ true
216
+ feb
217
+ rally
218
+ occupation
219
+ maybe
220
+ story
221
+ anything
222
+ put
223
+ getting
224
+ war
225
+ read
226
+ calling
227
+ yet
228
+ yes
229
+ report
230
+ post
231
+ long
232
+ start
233
+ bad
234
+ two
235
+ street
236
+ honk
237
+ thought
238
+ ve
239
+ national
240
+ name
241
+ since
242
+ thats
243
+ inquiry
244
+ 3
245
+ remember
246
+ givesendgo
247
+ job
248
+ care
249
+ saying
250
+ oh
251
+ freedomconvoycanada
252
+ may
253
+ using
254
+ man
255
+ word
256
+ downtown
257
+ force
258
+ side
259
+ done
260
+ feel
261
+ canadas
262
+ federal
263
+ order
264
+ cause
265
+ someone
266
+ truckersconvoy2022
267
+ next
268
+ wrong
269
+ shut
270
+ politician
271
+ child
272
+ court
273
+ without
274
+ e
275
+ capital
276
+ toronto
277
+ restriction
278
+ king
279
+ blm
280
+ across
281
+ tyranny
282
+ talk
283
+ prime
284
+ lost
285
+ illegal
286
+ face
287
+ taking
288
+ find
289
+ bail
290
+ officer
291
+ d
292
+ god
293
+ already
294
+ fighter
295
+ enough
296
+ seen
297
+ try
298
+ lawyer
299
+ claim
300
+ vehicle
301
+ others
302
+ twitter
303
+ better
304
+ lol
305
+ speech
306
+ working
307
+ february
308
+ breaking
309
+ full
310
+ plan
311
+ choice
312
+ folk
313
+ alberta
314
+ majority
315
+ line
316
+ fringe
317
+ told
318
+ issue
319
+ behind
320
+ biden
321
+ pat
322
+ didnt
323
+ started
324
+ making
325
+ charge
326
+ cant
327
+ attack
328
+ place
329
+ bitcoin
330
+ agree
331
+ happened
332
+ clear
333
+ person
334
+ mp
335
+ russia
336
+ reason
337
+ que
338
+ little
339
+ freeze
340
+ update
341
+ saw
342
+ hill
343
+ message
344
+ bridge
345
+ happening
346
+ always
347
+ question
348
+ us
349
+ health
350
+ america
351
+ woman
352
+ 10
353
+ event
354
+ went
355
+ family
356
+ washington
357
+ official
358
+ vaccinated
359
+ thousand
360
+ talking
361
+ ll
362
+ minority
363
+ driver
364
+ whole
365
+ hey
366
+ understand
367
+ history
368
+ friend
369
+ msm
370
+ fascist
371
+ move
372
+ stay
373
+ youre
374
+ gas
375
+ head
376
+ took
377
+ resident
378
+ nation
379
+ seems
380
+ heard
381
+ paris
382
+ hold
383
+ small
384
+ set
385
+ view
386
+ legal
387
+ everything
388
+ standing
389
+ share
390
+ rcmp
391
+ the
392
+ violent
393
+ problem
394
+ fake
395
+ chief
396
+ kid
397
+ response
398
+ 4
399
+ watching
400
+ 20
401
+ leave
402
+ vote
403
+ security
404
+ shit
405
+ poilievre
406
+ cop
407
+ et
408
+ footage
409
+ un
410
+ russian
411
+ wanted
412
+ weekend
413
+ press
414
+ thanks
415
+ guess
416
+ social
417
+ instead
418
+ best
419
+ 6
420
+ freedomconvoy22
421
+ human
422
+ anti
423
+ pierre
424
+ youtube
425
+ bc
426
+ month
427
+ bunch
428
+ ford
429
+ frozen
430
+ control
431
+ proud
432
+ opinion
433
+ came
434
+ matter
435
+ exactly
436
+ change
437
+ block
438
+ criminal
439
+ check
440
+ might
441
+ extremist
442
+ b
443
+ wo
444
+ hear
445
+ military
446
+ theyre
447
+ na
448
+ run
449
+ sound
450
+ fuel
451
+ else
452
+ sign
453
+ participant
454
+ involved
455
+ taken
456
+ cpc
457
+ measure
458
+ coverage
459
+ road
460
+ jail
461
+ w
462
+ etc
463
+ idea
464
+ du
465
+ wonder
466
+ pandemic
467
+ worker
468
+ narrative
469
+ car
470
+ pay
471
+ together
472
+ follow
473
+ idiot
474
+ hard
475
+ campaign
476
+ 100
477
+ doesnt
478
+ freedumbconvoy
479
+ jan
480
+ tweet
481
+ raised
482
+ judge
483
+ il
484
+ ctv
485
+ stupid
486
+ demand
487
+ facebook
488
+ service
489
+ comment
490
+ send
491
+ mayor
492
+ charter
493
+ patriot
494
+ ask
495
+ rule
496
+ fuck
497
+ canadatruckers
498
+ crypto
499
+ case
500
+ funding
501
+ isnt
502
+ page
503
+ crowd
504
+ demonstration
505
+ hearing
506
+ ago
507
+ kind
508
+ continue
509
+ honking
510
+ following
511
+ supremacist
512
+ fundraiser
513
+ fear
514
+ speak
515
+ cost
516
+ trudeaus
517
+ gave
518
+ putin
519
+ listen
520
+ least
521
+ 5
522
+ wait
523
+ election
524
+ food
525
+ united
526
+ absolutely
527
+ meet
528
+ actual
529
+ due
530
+ bring
531
+ hero
532
+ march
533
+ dictator
534
+ france
535
+ statement
536
+ politics
537
+ night
538
+ fox
539
+ different
540
+ respect
541
+ foreign
542
+ global
543
+ forget
544
+ ppl
545
+ article
546
+ including
547
+ spread
548
+ propaganda
549
+ china
550
+ class
551
+ horn
552
+ though
553
+ looking
554
+ crime
555
+ open
556
+ along
557
+ turn
558
+ probably
559
+ win
560
+ justice
561
+ traffic
562
+ onpoli
563
+ important
564
+ blocking
565
+ false
566
+ farmer
567
+ roll
568
+ massive
569
+ drive
570
+ number
571
+ insurrection
572
+ pretty
573
+ hit
574
+ ok
575
+ evidence
576
+ die
577
+ emergenciesact
578
+ vax
579
+ mind
580
+ http
581
+ con
582
+ happen
583
+ r
584
+ list
585
+ address
586
+ hand
587
+ overthrow
588
+ raw
589
+ given
590
+ lockdown
591
+ morning
592
+ found
593
+ poec
594
+ literally
595
+ peace
596
+ seeing
597
+ conspiracy
598
+ north
599
+ communist
600
+ wow
601
+ tried
602
+ unity
603
+ freedumb
604
+ site
605
+ company
606
+ become
607
+ donate
608
+ asked
609
+ local
610
+ hour
611
+ journalist
612
+ f
613
+ convoyforfreedom2022
614
+ brought
615
+ liberty
616
+ blocked
617
+ tyrant
618
+ wing
619
+ trudeaumustresign
620
+ ea
621
+ driving
622
+ fire
623
+ elected
624
+ house
625
+ january
626
+ supply
627
+ allowed
628
+ yeah
629
+ el
630
+ attempt
631
+ protect
632
+ amazing
633
+ deal
634
+ pour
635
+ almost
636
+ hes
637
+ community
638
+ ottawaoccupation
639
+ book
640
+ single
641
+ emergenciesactinquiry
642
+ leadership
643
+ saturday
644
+ huge
645
+ crossing
646
+ heading
647
+ truckers
648
+ old
649
+ soon
650
+ front
651
+ outside
652
+ former
653
+ imagine
654
+ attention
655
+ se
656
+ interesting
657
+ funded
658
+ fed
659
+ rest
660
+ course
661
+ sorry
662
+ top
663
+ dollar
664
+ information
665
+ shame
666
+ funny
667
+ civil
668
+ past
669
+ gun
670
+ policy
671
+ despite
672
+ three
673
+ link
674
+ remove
675
+ lying
676
+ giving
677
+ interview
678
+ held
679
+ living
680
+ safety
681
+ quebec
682
+ lets
683
+ gov
684
+ trudeautyranny
685
+ either
686
+ ground
687
+ v
688
+ strong
689
+ happy
690
+ coutts
691
+ fucking
692
+ example
693
+ showed
694
+ reporting
695
+ indigenous
696
+ sad
697
+ french
698
+ whats
699
+ showing
700
+ wont
701
+ misinformation
702
+ entire
703
+ antifa
704
+ del
705
+ flutruxklan
706
+ province
707
+ close
708
+ area
709
+ premier
710
+ hell
711
+ second
712
+ seem
713
+ needed
714
+ di
715
+ eye
716
+ asking
717
+ black
718
+ hiding
719
+ bless
720
+ photo
721
+ voice
722
+ rolling
723
+ break
724
+ wef
725
+ dangerous
726
+ able
727
+ platform
728
+ donating
729
+ clearly
730
+ mainstream
731
+ paid
732
+ justintrudeau
733
+ gone
734
+ realize
735
+ safe
736
+ corrupt
737
+ rt
738
+ continues
739
+ truckersconvoy
740
+ major
741
+ joke
742
+ bill
743
+ thinking
744
+ men
745
+ economy
746
+ personal
747
+ finally
748
+ nice
749
+ trucking
750
+ terrorism
751
+ horse
752
+ moment
753
+ individual
754
+ gt
755
+ lead
756
+ system
757
+ maga
758
+ met
759
+ al
760
+ daily
761
+ republican
762
+ hundred
763
+ inspired
764
+ farright
765
+ disgusting
766
+ confederate
767
+ doug
768
+ decision
769
+ ambassador
770
+ freezing
771
+ 12
772
+ peoples
773
+ organized
774
+ type
775
+ yesterday
776
+ wear
777
+ truckerconvoy2022
778
+ chris
779
+ authority
780
+ trudeaudictatorshipmustgo
781
+ freedomtruckers
782
+ conference
783
+ antivax
784
+ trudeaufortreason
785
+ racism
786
+ longer
787
+ gon
788
+ answer
789
+ sent
790
+ medical
791
+ school
792
+ online
793
+ loving
794
+ knew
795
+ forced
796
+ death
797
+ completely
798
+ telling
799
+ theres
800
+ fine
801
+ zero
802
+ society
803
+ peacefully
804
+ n
805
+ charged
806
+ agenda
807
+ step
808
+ whatever
809
+ data
810
+ speaking
811
+ source
812
+ per
813
+ welcome
814
+ sense
815
+ leftist
816
+ stream
817
+ crackdown
818
+ au
819
+ holding
820
+ cover
821
+ wish
822
+ trudeaunationaldisgrace
823
+ situation
824
+ los
825
+ poll
826
+ trust
827
+ cry
828
+ choose
829
+ army
830
+ according
831
+ riot
832
+ especially
833
+ several
834
+ apparently
835
+ highway
836
+ concern
837
+ turned
838
+ running
839
+ friday
840
+ freeland
841
+ ive
842
+ veteran
843
+ large
844
+ australia
845
+ ukrainian
846
+ invoked
847
+ intelligence
848
+ angry
849
+ science
850
+ stood
851
+ organization
852
+ based
853
+ wasnt
854
+ dictatorship
855
+ windsor
856
+ fellow
857
+ common
858
+ a
859
+ clown
860
+ begin
861
+ ban
862
+ tax
863
+ vaccination
864
+ evil
865
+ were
866
+ pa
867
+ starting
868
+ truly
869
+ anniversary
870
+ denied
871
+ winnipeg
872
+ opp
873
+ commission
874
+ wake
875
+ beautiful
876
+ near
877
+ 7
878
+ wearing
879
+ route
880
+ seriously
881
+ csis
882
+ boy
883
+ town
884
+ release
885
+ term
886
+ unvaccinated
887
+ est
888
+ tear
889
+ blame
890
+ related
891
+ ready
892
+ high
893
+ goal
894
+ arent
895
+ domestic
896
+ picture
897
+ level
898
+ info
899
+ sick
900
+ coward
901
+ note
902
+ future
903
+ towards
904
+ released
905
+ joined
906
+ record
907
+ caused
908
+ canadiantruckers
909
+ union
910
+ reporter
911
+ c
912
+ 8
913
+ building
914
+ ndp
915
+ refund
916
+ possible
917
+ dr
918
+ removed
919
+ lose
920
+ return
921
+ feed
922
+ rightwing
923
+ endthemandates
924
+ pro
925
+ vancouver
926
+ financial
927
+ walk
928
+ price
929
+ exposed
930
+ difference
931
+ condition
932
+ afraid
933
+ holdtheline
934
+ provincial
935
+ effort
936
+ worse
937
+ qui
938
+ christian
939
+ latest
940
+ shot
941
+ anymore
942
+ bullshit
943
+ dumb
944
+ damage
945
+ lack
946
+ bit
947
+ stopped
948
+ non
949
+ canberra
950
+ belief
951
+ general
952
+ swastika
953
+ biggest
954
+ lied
955
+ demonstrator
956
+ crazy
957
+ authoritarian
958
+ park
959
+ tyrannical
960
+ likely
961
+ i
962
+ star
963
+ push
964
+ fully
965
+ key
966
+ posted
967
+ alone
968
+ libert
969
+ spreading
970
+ rather
971
+ reality
972
+ investigation
973
+ serious
974
+ winter
975
+ minute
976
+ 9
977
+ whether
978
+ fundraising
979
+ international
980
+ totally
981
+ woke
982
+ tactic
983
+ planned
984
+ democratic
985
+ tonight
986
+ mr
987
+ heart
988
+ unacceptable
989
+ meeting
990
+ learn
991
+ except
992
+ known
993
+ proof
994
+ refuse
995
+ represent
996
+ plus
997
+ nobody
998
+ we
999
+ raise
1000
+ felt
1001
+ quite
1002
+ elite
1003
+ thread
1004
+ travel
1005
+ office
1006
+ play
1007
+ arrived
1008
+ rebel
1009
+ president
1010
+ headed
1011
+ expect
1012
+ crowdfunding
1013
+ ridiculous
1014
+ form
1015
+ feeling
1016
+ joe
1017
+ stuff
1018
+ regime
1019
+ jt
1020
+ van
1021
+ bringing
1022
+ weapon
1023
+ failed
1024
+ pathetic
1025
+ access
1026
+ happens
1027
+ 90
1028
+ ahead
1029
+ disinformation
1030
+ body
1031
+ attacked
1032
+ none
1033
+ tomorrow
1034
+ l
1035
+ counter
1036
+ waiting
1037
+ sur
1038
+ james
1039
+ worldwide
1040
+ p
1041
+ owner
1042
+ however
1043
+ legacy
1044
+ european
1045
+ disagree
1046
+ pp
1047
+ notice
1048
+ sunday
1049
+ reported
1050
+ regarding
1051
+ main
1052
+ billion
1053
+ pas
1054
+ fascism
1055
+ explain
1056
+ charity
1057
+ invoking
1058
+ opposition
1059
+ hypocrite
1060
+ request
1061
+ da
1062
+ speaks
1063
+ loss
1064
+ brussels
1065
+ tank
1066
+ strike
1067
+ th
1068
+ hypocrisy
1069
+ uk
1070
+ id
1071
+ fun
1072
+ overreach
1073
+ scared
1074
+ passport
1075
+ 15
1076
+ soldier
1077
+ seize
1078
+ brother
1079
+ supremacy
1080
+ mass
1081
+ crisis
1082
+ convoys
1083
+ antivaxxers
1084
+ barber
1085
+ symbol
1086
+ similar
1087
+ race
1088
+ created
1089
+ viva
1090
+ super
1091
+ leaked
1092
+ credit
1093
+ hacked
1094
+ beginning
1095
+ perhaps
1096
+ losing
1097
+ fall
1098
+ current
1099
+ document
1100
+ tow
1101
+ planning
1102
+ mention
1103
+ among
1104
+ ya
1105
+ simply
1106
+ rhetoric
1107
+ 22
1108
+ resign
1109
+ 50
1110
+ hurt
1111
+ hostage
1112
+ light
1113
+ moving
1114
+ chain
1115
+ supposed
1116
+ discus
1117
+ church
1118
+ value
1119
+ within
1120
+ mile
1121
+ brave
1122
+ trudeaudictatorship
1123
+ 2020
1124
+ convoyforfreedom
1125
+ threatening
1126
+ threatened
1127
+ consequence
1128
+ total
1129
+ amid
1130
+ western
1131
+ solidarity
1132
+ hacker
1133
+ enforcement
1134
+ bouncy
1135
+ it
1136
+ ce
1137
+ seized
1138
+ canad
1139
+ piece
1140
+ lawsuit
1141
+ cross
1142
+ 11
1143
+ west
1144
+ song
1145
+ 14
1146
+ expected
1147
+ activist
1148
+ worth
1149
+ mostly
1150
+ europe
1151
+ result
1152
+ land
1153
+ hot
1154
+ castle
1155
+ zealand
1156
+ cnn
1157
+ buy
1158
+ reach
1159
+ 30
1160
+ led
1161
+ theory
1162
+ si
1163
+ remain
1164
+ bet
1165
+ trudeaucorruption
1166
+ spent
1167
+ smear
1168
+ straight
1169
+ definitely
1170
+ multiple
1171
+ earlier
1172
+ covering
1173
+ homeless
1174
+ california
1175
+ 19
1176
+ convoi
1177
+ activity
1178
+ accused
1179
+ doubt
1180
+ son
1181
+ mark
1182
+ hospital
1183
+ nearly
1184
+ team
1185
+ listening
1186
+ der
1187
+ loser
1188
+ email
1189
+ couple
1190
+ tiktok
1191
+ economic
1192
+ currently
1193
+ watched
1194
+ trudeauhasgottogo
1195
+ heres
1196
+ game
1197
+ division
1198
+ save
1199
+ meanwhile
1200
+ hide
1201
+ allow
1202
+ everywhere
1203
+ vaxxed
1204
+ surprised
1205
+ claiming
1206
+ 6th
1207
+ unless
1208
+ risk
1209
+ declares
1210
+ ended
1211
+ concerned
1212
+ voted
1213
+ je
1214
+ obviously
1215
+ red
1216
+ aka
1217
+ selfish
1218
+ tom
1219
+ thug
1220
+ tamaralich
1221
+ figure
1222
+ extreme
1223
+ defend
1224
+ assault
1225
+ private
1226
+ inflation
1227
+ democrat
1228
+ declared
1229
+ board
1230
+ ill
1231
+ associated
1232
+ nonsense
1233
+ playing
1234
+ joining
1235
+ invoke
1236
+ website
1237
+ store
1238
+ liar
1239
+ decided
1240
+ 16
1241
+ trampled
1242
+ chance
1243
+ awesome
1244
+ waving
1245
+ leaving
1246
+ whose
1247
+ testimony
1248
+ okay
1249
+ killed
1250
+ fb
1251
+ baby
1252
+ israel
1253
+ caught
1254
+ calgary
1255
+ unlawful
1256
+ nationalist
1257
+ hateful
1258
+ closed
1259
+ special
1260
+ wouldnt
1261
+ kill
1262
+ het
1263
+ chaos
1264
+ abuse
1265
+ early
1266
+ capitol
1267
+ lifted
1268
+ impact
1269
+ worst
1270
+ warning
1271
+ virus
1272
+ ottnews
1273
+ received
1274
+ centre
1275
+ banned
1276
+ syria
1277
+ elon
1278
+ occupied
1279
+ dear
1280
+ inside
1281
+ beyond
1282
+ throw
1283
+ putting
1284
+ facing
1285
+ channel
1286
+ version
1287
+ opposed
1288
+ normal
1289
+ fired
1290
+ drop
1291
+ 1st
1292
+ truckerconvoy
1293
+ froze
1294
+ fool
1295
+ willing
1296
+ certainly
1297
+ this
1298
+ amount
1299
+ une
1300
+ steal
1301
+ oppose
1302
+ monday
1303
+ core
1304
+ changed
1305
+ queen
1306
+ ending
1307
+ detail
1308
+ later
1309
+ damn
1310
+ chinese
1311
+ musk
1312
+ pushing
1313
+ self
1314
+ experience
1315
+ simple
1316
+ ongoing
1317
+ corruption
1318
+ enjoy
1319
+ purpose
1320
+ ppc
1321
+ half
1322
+ gop
1323
+ trudeauresign
1324
+ cult
1325
+ 23
1326
+ reading
1327
+ op
1328
+ 18
1329
+ 13
1330
+ responsible
1331
+ deserve
1332
+ treated
1333
+ aid
1334
+ spoke
1335
+ create
1336
+ cut
1337
+ revolution
1338
+ review
1339
+ canadahasfallen
1340
+ stated
1341
+ participating
1342
+ follower
1343
+ expert
1344
+ paying
1345
+ poor
1346
+ 2023
1347
+ cabinet
1348
+ aware
1349
+ image
1350
+ complete
1351
+ insurrectionist
1352
+ foxnews
1353
+ treatment
1354
+ plant
1355
+ healthcare
1356
+ causing
1357
+ appears
1358
+ yall
1359
+ por
1360
+ harm
1361
+ destroy
1362
+ ne
1363
+ singh
1364
+ drove
1365
+ wide
1366
+ moron
1367
+ independent
1368
+ worried
1369
+ trade
1370
+ display
1371
+ organizing
1372
+ podcast
1373
+ powerful
1374
+ population
1375
+ operation
1376
+ honest
1377
+ late
1378
+ helping
1379
+ door
1380
+ demanding
1381
+ target
1382
+ staff
1383
+ doctor
1384
+ direct
1385
+ necessary
1386
+ leading
1387
+ lady
1388
+ headline
1389
+ btw
1390
+ brian
1391
+ responsibility
1392
+ recent
1393
+ ran
1394
+ debate
1395
+ arrive
1396
+ 50000
1397
+ position
1398
+ ordered
1399
+ flying
1400
+ fr
1401
+ crap
1402
+ south
1403
+ enemy
1404
+ forward
1405
+ double
1406
+ camp
1407
+ absolute
1408
+ glad
1409
+ directly
1410
+ correct
1411
+ arresting
1412
+ parent
1413
+ interest
1414
+ handling
1415
+ helped
1416
+ hat
1417
+ excuse
1418
+ ignore
1419
+ candidate
1420
+ memorial
1421
+ industry
1422
+ faith
1423
+ canpoli
1424
+ water
1425
+ tucker
1426
+ sit
1427
+ location
1428
+ eu
1429
+ tv
1430
+ censorship
1431
+ began
1432
+ air
1433
+ trial
1434
+ peoplesconvoy
1435
+ compare
1436
+ pick
1437
+ dead
1438
+ award
1439
+ standard
1440
+ noise
1441
+ armed
1442
+ occupying
1443
+ dutch
1444
+ expression
1445
+ saving
1446
+ dude
1447
+ bigger
1448
+ asset
1449
+ wallet
1450
+ tired
1451
+ rig
1452
+ immediately
1453
+ humanity
1454
+ tantrum
1455
+ cest
1456
+ beltway
1457
+ you
1458
+ worked
1459
+ paul
1460
+ add
1461
+ actor
1462
+ effect
1463
+ cancel
1464
+ victim
1465
+ property
1466
+ wanting
1467
+ obvious
1468
+ definition
1469
+ para
1470
+ cdnpolitics
1471
+ uscanada
1472
+ trending
1473
+ sending
1474
+ rise
1475
+ livestream
1476
+ threaten
1477
+ fan
1478
+ easy
1479
+ behaviour
1480
+ resist
1481
+ ops
1482
+ mad
1483
+ harassment
1484
+ shirt
1485
+ blue
1486
+ st
1487
+ surprise
1488
+ card
1489
+ role
1490
+ referring
1491
+ irnieracingnews
1492
+ endthemandatesnow
1493
+ emergencyact
1494
+ room
1495
+ digital
1496
+ arrives
1497
+ positive
1498
+ ont
1499
+ fair
1500
+ che
1501
+ arm
1502
+ privilege
1503
+ ignorant
1504
+ deep
1505
+ eh
1506
+ basically
1507
+ mom
1508
+ middle
1509
+ growing
1510
+ forever
1511
+ claimed
1512
+ provide
1513
+ music
1514
+ 1000
1515
+ texas
1516
+ short
1517
+ radical
1518
+ agreed
1519
+ reaction
1520
+ convoidelaliberte
1521
+ conversation
1522
+ consider
1523
+ connection
1524
+ antimandate
1525
+ siege
1526
+ antivaccine
1527
+ truckersforfreedom2020
1528
+ guard
1529
+ broke
1530
+ research
1531
+ ottawapolice
1532
+ acting
1533
+ ottawaoccupied
1534
+ chose
1535
+ upset
1536
+ reminder
1537
+ backed
1538
+ avec
1539
+ announced
1540
+ slam
1541
+ silent
1542
+ publicly
1543
+ hatred
1544
+ abpoli
1545
+ wtf
1546
+ space
1547
+ hitler
1548
+ fought
1549
+ secret
1550
+ prevent
1551
+ invasion
1552
+ gathering
1553
+ cryptocurrency
1554
+ asshole
1555
+ 25
1556
+ testify
1557
+ sloly
1558
+ jab
1559
+ jim
1560
+ violation
1561
+ so
1562
+ intimidation
1563
+ george
1564
+ crack
1565
+ bias
1566
+ dans
1567
+ victoria
1568
+ edmonton
1569
+ 24
1570
+ voter
1571
+ shown
1572
+ proven
1573
+ linked
1574
+ civilian
1575
+ watson
1576
+ fit
1577
+ wellington
1578
+ otherwise
1579
+ netherlands
1580
+ legitimate
1581
+ cash
1582
+ witness
1583
+ upon
1584
+ energy
1585
+ coup
1586
+ anger
1587
+ radio
1588
+ miss
1589
+ letter
1590
+ havent
1591
+ freedomrally
1592
+ dichter
1593
+ david
1594
+ posting
1595
+ btc
1596
+ thursday
1597
+ loud
1598
+ crown
1599
+ brain
1600
+ irony
1601
+ freedumbers
1602
+ episode
1603
+ original
1604
+ pray
1605
+ moved
1606
+ unfortunately
1607
+ trudeaudestroyingcanada
1608
+ thunder
1609
+ t
1610
+ low
1611
+ embarrassing
1612
+ attacking
1613
+ ride
1614
+ pull
1615
+ disrupt
1616
+ beat
1617
+ argument
1618
+ h
1619
+ employee
1620
+ dog
1621
+ stealing
1622
+ bully
1623
+ mob
1624
+ focus
1625
+ committee
1626
+ mistake
1627
+ co
1628
+ became
1629
+ worry
1630
+ vous
1631
+ promoting
1632
+ defending
1633
+ andrew
1634
+ young
1635
+ quote
1636
+ network
1637
+ attempted
1638
+ prison
1639
+ visit
1640
+ sell
1641
+ crush
1642
+ winning
1643
+ refused
1644
+ couldnt
1645
+ traitor
1646
+ outlet
1647
+ journalism
1648
+ investigate
1649
+ trouble
1650
+ tie
1651
+ revealed
1652
+ insane
1653
+ destroyed
1654
+ constitutional
1655
+ compared
1656
+ potential
1657
+ occupy
1658
+ google
1659
+ coast
1660
+ ableg
1661
+ ottawaconvoy
1662
+ disruption
1663
+ avoid
1664
+ troll
1665
+ stage
1666
+ qanon
1667
+ education
1668
+ burning
1669
+ pr
1670
+ kept
1671
+ keeping
1672
+ cdns
1673
+ unlike
1674
+ par
1675
+ saskatchewan
1676
+ missed
1677
+ learned
1678
+ regret
1679
+ recently
1680
+ overpass
1681
+ dark
1682
+ carrying
1683
+ window
1684
+ wave
1685
+ ta
1686
+ disgrace
1687
+ clean
1688
+ becoming
1689
+ pressure
1690
+ passed
1691
+ no
1692
+ illegally
1693
+ died
1694
+ 21
1695
+ perfect
1696
+ gather
1697
+ flutrucksklan
1698
+ blackfacehitler
1699
+ mail
1700
+ trudeauisdestroyingcanada
1701
+ parking
1702
+ garbage
1703
+ pissed
1704
+ fraud
1705
+ wondering
1706
+ oppression
1707
+ clip
1708
+ blast
1709
+ host
1710
+ test
1711
+ mou
1712
+ failure
1713
+ perspective
1714
+ sort
1715
+ prove
1716
+ arson
1717
+ anyway
1718
+ teacher
1719
+ stolen
1720
+ quick
1721
+ excellent
1722
+ em
1723
+ dropped
1724
+ cdn
1725
+ broken
1726
+ attended
1727
+ courage
1728
+ base
1729
+ 2021
1730
+ participated
1731
+ followed
1732
+ considered
1733
+ connected
1734
+ climate
1735
+ looked
1736
+ reveals
1737
+ murder
1738
+ mischief
1739
+ represents
1740
+ five
1741
+ er
1742
+ sharing
1743
+ pride
1744
+ oil
1745
+ und
1746
+ turning
1747
+ negative
1748
+ hack
1749
+ innocent
1750
+ antifreedom
1751
+ ottawasiege
1752
+ opportunity
1753
+ meant
1754
+ department
1755
+ cheering
1756
+ throwing
1757
+ granted
1758
+ director
1759
+ considering
1760
+ parade
1761
+ freedomofspeech
1762
+ missing
1763
+ east
1764
+ slow
1765
+ scene
1766
+ pushed
1767
+ leak
1768
+ express
1769
+ dozen
1770
+ una
1771
+ process
1772
+ otoole
1773
+ nut
1774
+ largest
1775
+ john
1776
+ element
1777
+ allegedly
1778
+ admit
1779
+ fly
1780
+ finance
1781
+ entering
1782
+ communism
1783
+ certain
1784
+ breach
1785
+ vast
1786
+ trudeauthetyrant
1787
+ truckersforfreedomconvoy2022
1788
+ openly
1789
+ deputy
1790
+ manitoba
1791
+ ashamed
1792
+ organize
1793
+ harassed
1794
+ marazzo
1795
+ lifesite
1796
+ hopefully
1797
+ endallmandates
1798
+ patriotic
1799
+ honestly
1800
+ empty
1801
+ den
1802
+ understanding
1803
+ shared
1804
+ j
1805
+ decide
1806
+ cheer
1807
+ agency
1808
+ throughout
1809
+ te
1810
+ named
1811
+ mental
1812
+ locked
1813
+ governments
1814
+ critical
1815
+ cold
1816
+ wall
1817
+ germany
1818
+ cleared
1819
+ basic
1820
+ tied
1821
+ code
1822
+ busy
1823
+ 40
1824
+ ur
1825
+ resistance
1826
+ removing
1827
+ divide
1828
+ coffee
1829
+ bought
1830
+ 17
1831
+ weird
1832
+ jagmeet
1833
+ cool
1834
+ wrote
1835
+ discussion
1836
+ warned
1837
+ globe
1838
+ anywhere
1839
+ phone
1840
+ mike
1841
+ date
1842
+ unite
1843
+ tuesday
1844
+ petition
1845
+ libs
1846
+ buddy
1847
+ ten
1848
+ taxpayer
1849
+ shutting
1850
+ rid
1851
+ kanada
1852
+ appear
1853
+ troop
1854
+ summer
1855
+ silence
1856
+ popular
1857
+ peter
1858
+ embarrassment
1859
+ autonomy
1860
+ ted
1861
+ suggest
1862
+ solution
1863
+ battle
1864
+ somehow
1865
+ personally
1866
+ entitled
1867
+ canadafreedomconvoy
1868
+ burn
1869
+ td
1870
+ lmao
1871
+ incident
1872
+ accept
1873
+ guilty
1874
+ grow
1875
+ cruz
1876
+ third
1877
+ spirit
1878
+ gain
1879
+ comparing
1880
+ tub
1881
+ mendicino
1882
+ ignorance
1883
+ hilarious
1884
+ everyday
1885
+ convoytoottawa2022
1886
+ tech
1887
+ seek
1888
+ pic
1889
+ culture
1890
+ complaining
1891
+ bell
1892
+ stuck
1893
+ in
1894
+ suck
1895
+ misogynist
1896
+ florida
1897
+ apology
1898
+ presence
1899
+ martial
1900
+ include
1901
+ council
1902
+ bot
1903
+ accountable
1904
+ interested
1905
+ fast
1906
+ bowl
1907
+ statue
1908
+ justify
1909
+ gaza
1910
+ carlson
1911
+ constitution
1912
+ chat
1913
+ ceo
1914
+ trudeauisacoward
1915
+ struggle
1916
+ required
1917
+ quickly
1918
+ mess
1919
+ leaf
1920
+ flutrucksclan
1921
+ canadaconvoy
1922
+ bbc
1923
+ regardless
1924
+ prof
1925
+ prisoner
1926
+ expose
1927
+ suspended
1928
+ sont
1929
+ arriving
1930
+ 28
1931
+ sedition
1932
+ neither
1933
+ meaning
1934
+ karen
1935
+ girl
1936
+ blackface
1937
+ arrival
1938
+ terry
1939
+ karenconvoy
1940
+ yellow
1941
+ ideology
1942
+ wan
1943
+ trash
1944
+ sadly
1945
+ covered
1946
+ confused
1947
+ condemn
1948
+ interference
1949
+ association
1950
+ telegram
1951
+ stick
1952
+ dare
1953
+ wage
1954
+ suit
1955
+ rolled
1956
+ opposing
1957
+ internet
1958
+ intention
1959
+ hoping
1960
+ bauder
1961
+ werent
1962
+ walking
1963
+ involvement
1964
+ effective
1965
+ tool
1966
+ nz
1967
+ lesson
1968
+ foot
1969
+ charest
1970
+ challenge
1971
+ unknown
1972
+ stopping
1973
+ present
1974
+ period
1975
+ loved
1976
+ kinda
1977
+ 70
1978
+ representing
1979
+ protecting
1980
+ opposite
1981
+ bergen
1982
+ socialist
1983
+ nope
1984
+ enter
1985
+ bcpoli
1986
+ 29
1987
+ policing
1988
+ attorney
1989
+ alleged
1990
+ q
1991
+ offer
1992
+ heavy
1993
+ exist
1994
+ despicable
1995
+ vow
1996
+ retweet
1997
+ respond
1998
+ played
1999
+ outrage
2000
+ nurse