hungdungn47 commited on
Commit
f4c50c8
·
1 Parent(s): efcd37f

first commit

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ *mdl filter=lfs diff=lfs merge=lfs -text
LDA_models.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7fe550070538e5cf9f47f4f94dacb170662b607a69c1d294ef03c6c5400031d7
3
+ size 1983272
README copy.md ADDED
Binary file (64 Bytes). View file
 
app.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from io import StringIO
3
+ from chdg_inference import infer
4
+
5
+ st.title("Tóm tắt đa văn bản tiếng Việt")
6
+
7
+ # Initialize session state
8
+ if 'num_docs' not in st.session_state:
9
+ st.session_state.num_docs = 0
10
+ if 'docs' not in st.session_state:
11
+ st.session_state.docs = []
12
+
13
+ # Function to add a new text area
14
+ def add_text_area():
15
+ st.session_state.num_docs += 1
16
+
17
+
18
+ # Button to add a new text area
19
+ st.button("Thêm văn bản", on_click=add_text_area)
20
+
21
+ # Display text areas for document input
22
+ for i in range(st.session_state.num_docs):
23
+ doc = st.text_area(f"Văn bản {i+1}", key=f"doc_{i}", height=200)
24
+ doc.replace('\r', '\n')
25
+ if len(st.session_state.docs) <= i:
26
+ st.session_state.docs.append(doc)
27
+ else:
28
+ st.session_state.docs[i] = doc
29
+ # Display the documents for verification
30
+ # st.write("**Entered Documents:**")
31
+ # st.write(st.session_state.docs)
32
+ # uploaded_file = st.file_uploader(label="Chọn file văn bản")
33
+
34
+ category = st.selectbox("Chọn chủ để của văn bản: ", ['Giáo dục', 'Giải trí - Thể thao', 'Khoa học - Công nghệ', 'Kinh tế', 'Pháp luật', 'Thế giới', 'Văn hóa - Xã hội', 'Đời sống'])
35
+
36
+ def summarize():
37
+ # if uploaded_file is not None:
38
+ # stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))
39
+ # full_text = stringio.read()
40
+ # summ, docs = infer(full_text, category)
41
+ # st.subheader("Kết quả: ")
42
+ # st.write(summ)
43
+ # st.subheader("Docs: ")
44
+ # st.write(docs)
45
+ # else:
46
+ # st.error("Hãy tải file văn bản lên")
47
+ summ, docs = infer(st.session_state.docs, category)
48
+ st.subheader("Kết quả")
49
+ st.write(summ)
50
+ st.write(docs)
51
+
52
+ if st.button("Tóm tắt"):
53
+ summarize()
c_25_0.3071.mdl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a3064b88582b598217f7c9a1f1dd307fc9b3838c5df5f00f97ffa15261d17e19
3
+ size 41996419
chdg_inference.py ADDED
@@ -0,0 +1,421 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import torch.nn as nn
3
+ import torch.nn.functional as F
4
+ import pickle
5
+ import json
6
+ import numpy as np
7
+ import pandas as pd
8
+ from rouge import Rouge
9
+ import string
10
+ import copy
11
+ import re
12
+ from transformers import AutoModel, AutoTokenizer
13
+ from underthesea import sent_tokenize, word_tokenize
14
+ from sklearn.metrics.pairwise import cosine_similarity
15
+
16
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
17
+ phobert = AutoModel.from_pretrained("vinai/phobert-base-v2").to(device)
18
+ tokenizer = AutoTokenizer.from_pretrained("vinai/phobert-base-v2")
19
+
20
+ def getRouge2(ref, pred, kind): # tokenized input
21
+ try:
22
+ return round(Rouge().get_scores(pred.lower(), ref.lower())[0]['rouge-2'][kind], 4)
23
+ except ValueError:
24
+ return 0.0
25
+
26
+ class MLP(nn.Module):
27
+ def __init__(self, dims: list, layers=2, act=nn.LeakyReLU(), dropout_p=0.3, keep_last_layer=False):
28
+ super(MLP, self).__init__()
29
+ assert len(dims) == layers + 1
30
+ self.layers = layers
31
+ self.act = act
32
+ self.dropout = nn.Dropout(dropout_p)
33
+ self.keep_last = keep_last_layer
34
+
35
+ self.mlp_layers = nn.ModuleList([])
36
+ for i in range(self.layers):
37
+ self.mlp_layers.append(nn.Linear(dims[i], dims[i + 1]))
38
+
39
+ def forward(self, x):
40
+ for i in range(len(self.mlp_layers) - 1):
41
+ x = self.dropout(self.act(self.mlp_layers[i](x)))
42
+ if self.keep_last:
43
+ x = self.mlp_layers[-1](x)
44
+ else:
45
+ x = self.act(self.mlp_layers[-1](x))
46
+ return x
47
+
48
+ class GraphAttentionLayer(nn.Module):
49
+ def __init__(self, in_features: int, out_features: int, n_heads: int,
50
+ is_concat: bool = True,
51
+ dropout: float = 0.6,
52
+ leaky_relu_negative_slope: float = 0.2):
53
+ super().__init__()
54
+
55
+ self.is_concat = is_concat
56
+ self.n_heads = n_heads
57
+
58
+ # Calculate the number of dimensions per head
59
+ if is_concat:
60
+ assert out_features % n_heads == 0
61
+ self.n_hidden = out_features // n_heads
62
+ else:
63
+ self.n_hidden = out_features
64
+
65
+ self.linear = nn.Linear(in_features, self.n_hidden * n_heads, bias=False)
66
+ self.attn = nn.Linear(self.n_hidden * 2, 1, bias=False)
67
+ self.activation = nn.LeakyReLU(negative_slope=leaky_relu_negative_slope)
68
+ self.softmax = nn.Softmax(dim=1)
69
+ self.dropout = nn.Dropout(dropout)
70
+
71
+ def forward(self, h: torch.Tensor, adj_mat: torch.Tensor, docnum, secnum):
72
+ n_nodes = h.shape[0]
73
+ g = self.linear(h).view(n_nodes, self.n_heads, self.n_hidden)
74
+ g_repeat = g.repeat(n_nodes, 1, 1)
75
+ g_repeat_interleave = g.repeat_interleave(n_nodes, dim=0)
76
+ g_concat = torch.cat([g_repeat_interleave, g_repeat], dim=-1)
77
+ g_concat = g_concat.view(n_nodes, n_nodes, self.n_heads, 2 * self.n_hidden)
78
+ e = self.activation(self.attn(g_concat))
79
+
80
+ e = e.squeeze(-1)
81
+
82
+ # The adjacency matrix should have shape
83
+ # `[n_nodes, n_nodes, n_heads]` or`[n_nodes, n_nodes, 1]`
84
+ assert adj_mat.shape[0] == 1 or adj_mat.shape[0] == n_nodes
85
+ assert adj_mat.shape[1] == 1 or adj_mat.shape[1] == n_nodes
86
+ assert adj_mat.shape[2] == 1 or adj_mat.shape[2] == self.n_heads
87
+ # Mask $e_{ij}$ based on adjacency matrix.
88
+ # $e_{ij}$ is set to $- \infty$ if there is no edge from $i$ to $j$.
89
+ e = e.masked_fill(adj_mat == 0, float(-1e9))
90
+ a = self.softmax(e)
91
+ a = self.dropout(a)
92
+ attn_res = torch.einsum('ijh,jhf->ihf', a, g)
93
+
94
+ # Concatenate the heads
95
+ if self.is_concat:
96
+ return attn_res.reshape(n_nodes, self.n_heads * self.n_hidden)
97
+ # Take the mean of the heads
98
+ else:
99
+ return attn_res.mean(dim=1)
100
+
101
+
102
+ class GAT(nn.Module):
103
+ def __init__(self, in_features: int, n_hidden: int, n_classes: int, n_heads: int, dropout: float):
104
+ super().__init__()
105
+ self.layer1 = GraphAttentionLayer(in_features, n_hidden, n_heads, is_concat=True, dropout=dropout)
106
+ self.activation = nn.ELU()
107
+ self.output = GraphAttentionLayer(n_hidden, n_classes, 1, is_concat=False, dropout=dropout)
108
+ self.dropout = nn.Dropout(dropout)
109
+
110
+ def forward(self, x: torch.Tensor, adj_mat: torch.Tensor, docnum, secnum):
111
+ x = x.squeeze(0)
112
+ adj_mat = adj_mat.squeeze(0)
113
+ adj_x = adj_mat.clone().sum(dim=1, keepdim=True).repeat(1, x.shape[1]).bool()
114
+ adj_mat = adj_mat.unsqueeze(-1).bool()
115
+ x = self.dropout(x)
116
+ x = self.layer1(x, adj_mat, docnum, secnum)
117
+ x = self.activation(x)
118
+ x = self.dropout(x)
119
+ x = self.output(x, adj_mat, docnum, secnum).masked_fill(adj_x == 0, float(0))
120
+ return x.unsqueeze(0)
121
+
122
+
123
+ class StepWiseGraphConvLayer(nn.Module):
124
+ def __init__(self, in_dim, hid_dim, dropout_p=0.3, act=nn.LeakyReLU(), nheads=6, iter=1, final="att"):
125
+ super().__init__()
126
+ self.act = act
127
+ self.dropout = nn.Dropout(dropout_p)
128
+ self.iter = iter
129
+ self.in_dim = in_dim
130
+ self.gat = nn.ModuleList([GAT(in_features=in_dim, n_hidden=hid_dim, n_classes=in_dim,
131
+ dropout=dropout_p, n_heads=nheads) for _ in range(iter)])
132
+ self.gat2 = nn.ModuleList([GAT(in_features=in_dim, n_hidden=hid_dim, n_classes=in_dim,
133
+ dropout=dropout_p, n_heads=nheads) for _ in range(iter)])
134
+ self.gat3 = nn.ModuleList([GAT(in_features=in_dim, n_hidden=hid_dim, n_classes=in_dim,
135
+ dropout=dropout_p, n_heads=nheads) for _ in range(iter)])
136
+
137
+ self.out_ffn = MLP([in_dim * 3, hid_dim, hid_dim, in_dim], layers=3, dropout_p=dropout_p)
138
+
139
+ def forward(self, feature, adj, docnum, secnum):
140
+ sen_adj = adj.clone()
141
+ sen_adj[:, -docnum-secnum-1:, :] = sen_adj[:, :, -docnum-secnum-1:] = 0
142
+ sec_adj = adj.clone()
143
+ sec_adj[:, :-docnum-secnum-1, :] = sec_adj[:, -docnum-1:, :] = sec_adj[:, :, -docnum-1:] = 0
144
+ doc_adj = adj.clone()
145
+ doc_adj[:, :-docnum-1, :] = 0
146
+
147
+ feature_sen = feature.clone()
148
+ feature_resi = feature
149
+
150
+ feature_sen_re = feature_sen.clone()
151
+ for i in range(0, self.iter):
152
+ feature_sen = self.gat[i](feature_sen, sen_adj, docnum, secnum)
153
+ feature_sen = F.layer_norm(feature_sen + feature_sen_re, [self.in_dim])
154
+
155
+ feature_sec = feature_sen.clone()
156
+ feature_sec_re = feature_sec.clone()
157
+ for i in range(0, self.iter):
158
+ feature_sec = self.gat2[i](feature_sec, sec_adj, docnum, secnum)
159
+ feature_sec = F.layer_norm(feature_sec + feature_sec_re, [self.in_dim])
160
+
161
+ feature_doc = feature_sec.clone()
162
+ feature_doc_re = feature_doc.clone()
163
+ for i in range(0, self.iter):
164
+ feature_doc = self.gat3[i](feature_doc, doc_adj, docnum, secnum)
165
+ feature_doc = F.layer_norm(feature_doc + feature_doc_re, [self.in_dim])
166
+
167
+ feature_sec[:, :-docnum-secnum-1, :] = adj[:, :-docnum-secnum-1, -docnum-secnum-1:-docnum-1] @ feature_sec[:, -docnum-secnum-1:-docnum-1, :]
168
+ feature_doc[:, -docnum-secnum-1:-docnum-1, :] = adj[:, -docnum-secnum-1:-docnum-1, -docnum-1:] @ feature_doc[:, -docnum-1:, :]
169
+ feature_doc[:, :-docnum-secnum-1, :] = adj[:, :-docnum-secnum-1, -docnum-secnum-1:-docnum-1] @ feature_doc[:, -docnum-secnum-1:-docnum-1, :]
170
+ feature = torch.concat([feature_doc, feature_sec, feature_sen], dim=-1)
171
+ feature = F.layer_norm(self.out_ffn(feature) + feature_resi, [self.in_dim])
172
+ return feature
173
+
174
+ class Contrast_Encoder(nn.Module):
175
+ def __init__(self, input_dim, hidden_dim, heads, act=nn.LeakyReLU(0.1), dropout_p=0.3):
176
+ super(Contrast_Encoder, self).__init__()
177
+ self.graph_encoder = StepWiseGraphConvLayer(in_dim=input_dim, hid_dim=hidden_dim,
178
+ dropout_p=dropout_p, act=act, nheads=heads, iter=1)
179
+ self.common_proj_mlp = MLP([input_dim, hidden_dim, input_dim], layers=2, dropout_p=dropout_p, act=act, keep_last_layer=False)
180
+
181
+ def forward(self, p_gfeature, doc_lens, p_adj, docnum, secnum):
182
+ posVec = torch.cat([PositionVec[:l] for l in doc_lens] + [torch.zeros(secnum+docnum+1, 768).float().to(device)], dim=0)
183
+ p_gfeature = p_gfeature + posVec.unsqueeze(0)
184
+ pg = self.graph_encoder(p_gfeature, p_adj, docnum, secnum)
185
+ pg = self.common_proj_mlp(pg)
186
+ return pg
187
+
188
+
189
+ class End2End_Encoder(nn.Module):
190
+ def __init__(self, input_dim, hidden_dim, heads, act=nn.LeakyReLU(0.1), dropout_p=0.3):
191
+ super(End2End_Encoder, self).__init__()
192
+ self.graph_encoder = StepWiseGraphConvLayer(in_dim=input_dim, hid_dim=hidden_dim,
193
+ dropout_p=dropout_p, act=act, nheads=heads, iter=1)
194
+ self.dropout = nn.Dropout(dropout_p)
195
+ self.out_proj_layer_mlp = MLP([input_dim, hidden_dim, input_dim], layers=2, dropout_p=dropout_p, act=act, keep_last_layer=False)
196
+ self.linear = MLP([input_dim, 1], layers=1, dropout_p=dropout_p, act=act, keep_last_layer=True)
197
+
198
+ def forward(self, x, doc_lens, adj, docnum, secnum):
199
+ x = self.graph_encoder(x, adj, docnum, secnum)
200
+ x = x[:, :-docnum-secnum-1, :]
201
+ x = self.out_proj_layer_mlp(x)
202
+ x = self.linear(x)
203
+ return x
204
+
205
+ def _similarity(h1: torch.Tensor, h2: torch.Tensor):
206
+ h1 = F.normalize(h1)
207
+ h2 = F.normalize(h2)
208
+ return h1 @ h2.t()
209
+
210
+ class InfoNCE(nn.Module):
211
+ def __init__(self, tau):
212
+ super(InfoNCE, self).__init__()
213
+ self.tau = tau
214
+
215
+ def forward(self, anchor, sample, pos_mask, neg_mask, *args, **kwargs):
216
+ sim = _similarity(anchor, sample) / self.tau
217
+ if len(anchor) > 1:
218
+ sim, _ = torch.max(sim, dim=0)
219
+ exp_sim = torch.exp(sim)
220
+ loss = torch.log((exp_sim * pos_mask).sum(dim=1)) - torch.log((exp_sim * (pos_mask + neg_mask)).sum(dim=1))
221
+ return -loss.mean()
222
+
223
+ class Cluster:
224
+ def __init__(self, sent_texts, sent_vecs, doc_lens, doc_sec_mask, sec_sen_mask):
225
+ assert len(sent_vecs) == len(sent_texts)
226
+ self.docnum = len(doc_sec_mask)
227
+ self.secnum = len(sec_sen_mask)
228
+ self.feature = torch.cat((torch.stack(sent_vecs, dim=0), torch.zeros((self.secnum+self.docnum+1, sent_vecs[0].shape[0]))), dim=0).to(device)
229
+ self.adj = torch.from_numpy(self.mask_to_adj(doc_sec_mask, sec_sen_mask)).float().to(device)
230
+ self.sent_text = np.array(sent_texts)
231
+ self.doc_lens = doc_lens
232
+ self.init_node_vec()
233
+ self.feature = self.feature.float()
234
+
235
+ def init_node_vec(self):
236
+ docnum, secnum = self.docnum, self.secnum
237
+ for i in range(-secnum-docnum-1, -docnum-1):
238
+ mask = self.adj[i].clone()
239
+ mask[-secnum-docnum-1:] = 0
240
+ self.feature[i] = torch.mean(self.feature[mask.bool()], dim=0)
241
+ for i in range(-docnum-1, -1):
242
+ mask = self.adj[i].clone()
243
+ mask[-docnum-1:] = 0
244
+ self.feature[i] = torch.mean(self.feature[mask.bool()], dim=0)
245
+ self.feature[-1] = torch.mean(self.feature[-docnum-1:-1], dim=0)
246
+
247
+ def mask_to_adj(self, doc_sec_mask, sec_sen_mask):
248
+ sen_num = sec_sen_mask.shape[1]
249
+ sec_num = sec_sen_mask.shape[0]
250
+ doc_num = doc_sec_mask.shape[0]
251
+ adj = np.zeros((sen_num+sec_num+doc_num+1, sen_num+sec_num+doc_num+1))
252
+ # section connection
253
+ adj[-sec_num-doc_num-1:-doc_num-1, 0:-sec_num-doc_num-1] = sec_sen_mask
254
+ adj[0:-sec_num-doc_num-1, -sec_num-doc_num-1:-doc_num-1] = sec_sen_mask.T
255
+ for i in range(0, doc_num):
256
+ doc_mask = doc_sec_mask[i]
257
+ doc_mask = doc_mask.reshape((1, len(doc_mask)))
258
+ adj[sen_num:-doc_num-1, sen_num:-doc_num-1] += doc_mask * doc_mask.T
259
+ # doc connection
260
+ adj[-doc_num-1:-1, -sec_num-doc_num-1:-doc_num-1] = doc_sec_mask
261
+ adj[-sec_num-doc_num-1:-doc_num-1, -doc_num-1:-1] = doc_sec_mask.T
262
+ adj[-doc_num-1:, -doc_num-1:] = 1
263
+
264
+ #build sentence connection
265
+ for i in range(0, sec_num):
266
+ sec_mask = sec_sen_mask[i]
267
+ sec_mask = sec_mask.reshape((1, len(sec_mask)))
268
+ adj[:sen_num, :sen_num] += sec_mask * sec_mask.T
269
+ return adj
270
+
271
+ def meanTokenVecs(text):
272
+ sent = text.lower()
273
+ input_ids = torch.tensor([tokenizer.encode(sent)])
274
+ tokenized_text = tokenizer.tokenize(sent)
275
+ with torch.no_grad():
276
+ features = phobert(input_ids)
277
+ wordVecs, buffer, buffer_str = {}, [], ''
278
+ for token in zip(tokenized_text, features.last_hidden_state[0, 1:-1,:]):
279
+ if token[0][-2:] == '@@':
280
+ buffer.append(token[1])
281
+ buffer_str += token[0][:-2]
282
+ continue
283
+ if buffer:
284
+ buffer.append(token[1])
285
+ buffer_str += token[0]
286
+ wordVecs[buffer_str] = torch.mean(torch.stack(buffer), dim=0)
287
+ buffer, buffer_str = [], ''
288
+ else:
289
+ wordVecs[token[0]] = token[1]
290
+
291
+ return torch.mean(torch.stack([vec for w, vec in wordVecs.items() if w not in string.punctuation]), dim=0)
292
+
293
+ def getPositionEncoding(pos, d=768, n=10000):
294
+ P = np.zeros(d)
295
+ for i in np.arange(int(d/2)):
296
+ denominator = np.power(n, 2*i/d)
297
+ P[2*i] = np.sin(pos/denominator)
298
+ P[2*i+1] = np.cos(pos/denominator)
299
+ return P
300
+
301
+ PositionVec = torch.stack([torch.from_numpy(getPositionEncoding(i, d=768)) for i in range(200)], dim=0).float().to(device)
302
+
303
+ stop_w = ['...']
304
+ with open('./vietnamese-stopwords-dash.txt', 'r', encoding='utf-8') as f:
305
+ for w in f.readlines():
306
+ stop_w.append(w.strip())
307
+ stop_w.extend([c for c in '!"#$%&\'()*+,./:;<=>?@[\\]^`{|}~…“”’‘'])
308
+
309
+ with open('./LDA_models.pkl', mode='rb') as fp:
310
+ cate_models = pickle.load(fp)
311
+
312
+ def removeRedundant(text):
313
+ text = text.lower()
314
+ words = [w for w in text.split(' ') if w not in stop_w]
315
+ return ' '.join(words)
316
+
317
+ def divideSection(doc_text, category):
318
+ assert category in cate_models, 'invalid category'
319
+ sent_para, para_sec, sent_sec = {}, {}, {}
320
+
321
+ paras = [para for para in doc_text.split('\n') if para != '']
322
+ all_sents = []
323
+ # prepare sent_Para
324
+ sentcnt = 0
325
+ for i, para in enumerate(paras):
326
+ sents = [word_tokenize(sent, format="text") for sent in sent_tokenize(para) if sent != '']
327
+ all_sents.extend(sents)
328
+ for ii, sent in enumerate(sents):
329
+ sent_para[sentcnt + ii] = i
330
+ sent = removeRedundant(sent)
331
+ sentcnt += len(sents)
332
+
333
+ # prepare para_sec
334
+ paras = [removeRedundant(para) for para in paras]
335
+ tf, lda_model = cate_models[category]
336
+ X = tf.transform(paras)
337
+ lda_top = lda_model.transform(X)
338
+ for i, para_top in enumerate(lda_top):
339
+ para_sec[i] = para_top.argmax()
340
+
341
+ # output sent_sec
342
+ for k, v in sent_para.items():
343
+ sent_sec[k] = para_sec[v]
344
+ return sent_sec, all_sents
345
+
346
+ def loadClusterData(docs_org, category): # docs_org: list of text for each document
347
+ seclist, docs = {}, []
348
+ for d, doc in enumerate(docs_org):
349
+ seclist[d], sentTexts = divideSection(doc, category)
350
+ docs.append(sentTexts)
351
+
352
+ sents, sentVecs, secIDs, doc_lens = [], [], [], []
353
+ secnum = 4
354
+ sentnum = sum([len(doc.values()) for doc in seclist.values()])
355
+ doc_sec_mask = np.zeros((len(docs), secnum))
356
+ sec_sen_mask = np.zeros((secnum, sentnum))
357
+ cursec, cursent = 0, 0
358
+
359
+ for d, doc in enumerate(docs):
360
+ doc_lens.append(len(doc))
361
+ doc_endsec = max(seclist[d].values())
362
+ doc_sec_mask[d][cursec:doc_endsec + 1] = 1
363
+ cursec = doc_endsec + 1
364
+ for s, sent in enumerate(doc):
365
+ sents.append(sent)
366
+ sentVecs.append(meanTokenVecs(sent))
367
+ sec_sen_mask[seclist[d][s], cursent] = 1
368
+ cursent += 1
369
+
370
+ return Cluster(sents, sentVecs, doc_lens, doc_sec_mask, sec_sen_mask)
371
+
372
+ def val_e2e(data, model, max_word_num=200, c_model=None):
373
+ model.eval()
374
+ c_model.eval()
375
+
376
+ feature = data.feature.unsqueeze(0)
377
+ doc_lens = data.doc_lens
378
+ adj = data.adj.unsqueeze(0)
379
+ docnum = data.docnum
380
+ secnum = data.secnum
381
+
382
+ with torch.no_grad():
383
+ feature = c_model(feature, doc_lens, adj, docnum, secnum)
384
+ x = model(feature, doc_lens, adj, docnum, secnum)
385
+ scores = torch.sigmoid(x.squeeze(-1))
386
+
387
+ return get_summary(scores[0], data.sent_text, max_word_num)
388
+
389
+ def get_summary(scores, sents, max_word_num=200):
390
+ ranked_score_idxs = torch.argsort(scores, dim=0, descending=True)
391
+ wordCnt = 0
392
+ summSentIDList = []
393
+ for i in ranked_score_idxs:
394
+ if wordCnt >= max_word_num: break
395
+ s = sents[i]
396
+
397
+ replicated = False
398
+ for chosedID in summSentIDList:
399
+ if getRouge2(sents[chosedID], s, 'p') >= 0.45:
400
+ replicated = True
401
+ break
402
+ if replicated: continue
403
+
404
+ wordCnt += len(s.split(' '))
405
+ summSentIDList.append(i)
406
+ summSentIDList = sorted(summSentIDList)
407
+ return ' '.join([s for i, s in enumerate(sents) if i in summSentIDList])
408
+
409
+ c_model = Contrast_Encoder(768, 1024, 4, dropout_p=0.3).to(device)
410
+ model = End2End_Encoder(768, 1024, 4, dropout_p=0.3).to(device)
411
+ model.load_state_dict(torch.load('./e_25_0.3071.mdl', map_location=device), strict=False)
412
+ c_model.load_state_dict(torch.load('./c_25_0.3071.mdl', map_location=device), strict=False)
413
+
414
+ def infer(docs, category):
415
+ # docs = [text.strip() for text in full_text.split('<><><><><>')]
416
+ docs = [text.strip() for text in docs]
417
+ print(docs)
418
+ data_tree = loadClusterData(docs, category)
419
+ summ = val_e2e(data_tree, model, c_model=c_model, max_word_num=200)
420
+ summ = re.sub(r'\s+([.,;:"?()/!?])', r'\1', summ.replace('_', ' '))
421
+ return summ, docs
e_25_0.3071.mdl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3977998fae042e01c9b8d5c56303ace9cfa696cf016ea6fc924332f63cc85afc
3
+ size 42000261
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ torch
2
+ rouge
3
+ transformers
4
+ underthesea
5
+ numpy
6
+ pandas
7
+ scikit-learn
vietnamese-stopwords-dash.txt ADDED
@@ -0,0 +1,1942 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ a_lô
2
+ a_ha
3
+ ai
4
+ ai_ai
5
+ ai_nấy
6
+ ai_đó
7
+ alô
8
+ amen
9
+ anh
10
+ anh_ấy
11
+ ba
12
+ ba_ba
13
+ ba_bản
14
+ ba_cùng
15
+ ba_họ
16
+ ba_ngày
17
+ ba_ngôi
18
+ ba_tăng
19
+ bao_giờ
20
+ bao_lâu
21
+ bao_nhiêu
22
+ bao_nả
23
+ bay_biến
24
+ biết
25
+ biết_bao
26
+ biết_bao_nhiêu
27
+ biết_chắc
28
+ biết_chừng_nào
29
+ biết_mình
30
+ biết_mấy
31
+ biết_thế
32
+ biết_trước
33
+ biết_việc
34
+ biết_đâu
35
+ biết_đâu_chừng
36
+ biết_đâu_đấy
37
+ biết_được
38
+ buổi
39
+ buổi_làm
40
+ buổi_mới
41
+ buổi_ngày
42
+ buổi_sớm
43
+
44
+ bà_ấy
45
+ bài
46
+ bài_bác
47
+ bài_bỏ
48
+ bài_cái
49
+ bác
50
+ bán
51
+ bán_cấp
52
+ bán_dạ
53
+ bán_thế
54
+ bây_bẩy
55
+ bây_chừ
56
+ bây_giờ
57
+ bây_nhiêu
58
+ bèn
59
+ béng
60
+ bên
61
+ bên_bị
62
+ bên_có
63
+ bên_cạnh
64
+ bông
65
+ bước
66
+ bước_khỏi
67
+ bước_tới
68
+ bước_đi
69
+ bạn
70
+ bản
71
+ bản_bộ
72
+ bản_riêng
73
+ bản_thân
74
+ bản_ý
75
+ bất_chợt
76
+ bất_cứ
77
+ bất_giác
78
+ bất_kì
79
+ bất_kể
80
+ bất_kỳ
81
+ bất_luận
82
+ bất_ngờ
83
+ bất_nhược
84
+ bất_quá
85
+ bất_quá_chỉ
86
+ bất_thình_lình
87
+ bất_tử
88
+ bất_đồ
89
+ bấy
90
+ bấy_chầy
91
+ bấy_chừ
92
+ bấy_giờ
93
+ bấy_lâu
94
+ bấy_lâu_nay
95
+ bấy_nay
96
+ bấy_nhiêu
97
+ bập_bà_bập_bõm
98
+ bập_bõm
99
+ bắt_đầu
100
+ bắt_đầu_từ
101
+ bằng
102
+ bằng_cứ
103
+ bằng_không
104
+ bằng_người
105
+ bằng_nhau
106
+ bằng_như
107
+ bằng_nào
108
+ bằng_nấy
109
+ bằng_vào
110
+ bằng_được
111
+ bằng_ấy
112
+ bển
113
+ bệt
114
+ bị
115
+ bị_chú
116
+ bị_vì
117
+ bỏ
118
+ bỏ_bà
119
+ bỏ_cha
120
+ bỏ_cuộc
121
+ bỏ_không
122
+ bỏ_lại
123
+ bỏ_mình
124
+ bỏ_mất
125
+ bỏ_mẹ
126
+ bỏ_nhỏ
127
+ bỏ_quá
128
+ bỏ_ra
129
+ bỏ_riêng
130
+ bỏ_việc
131
+ bỏ_xa
132
+ bỗng
133
+ bỗng_chốc
134
+ bỗng_dưng
135
+ bỗng_không
136
+ bỗng_nhiên
137
+ bỗng_nhưng
138
+ bỗng_thấy
139
+ bỗng_đâu
140
+ bộ
141
+ bộ_thuộc
142
+ bộ_điều
143
+ bội_phần
144
+ bớ
145
+ bởi
146
+ bởi_ai
147
+ bởi_chưng
148
+ bởi_nhưng
149
+ bởi_sao
150
+ bởi_thế
151
+ bởi_thế_cho_nên
152
+ bởi_tại
153
+ bởi_vì
154
+ bởi_vậy
155
+ bởi_đâu
156
+ bức
157
+ cao
158
+ cao_lâu
159
+ cao_ráo
160
+ cao_răng
161
+ cao_sang
162
+ cao_số
163
+ cao_thấp
164
+ cao_thế
165
+ cao_xa
166
+ cha
167
+ cha_chả
168
+ chao_ôi
169
+ chia_sẻ
170
+ chiếc
171
+ cho
172
+ cho_biết
173
+ cho_chắc
174
+ cho_hay
175
+ cho_nhau
176
+ cho_nên
177
+ cho_rằng
178
+ cho_rồi
179
+ cho_thấy
180
+ cho_tin
181
+ cho_tới
182
+ cho_tới_khi
183
+ cho_về
184
+ cho_ăn
185
+ cho_đang
186
+ cho_được
187
+ cho_đến
188
+ cho_đến_khi
189
+ cho_đến_nỗi
190
+ choa
191
+ chu_cha
192
+ chui_cha
193
+ chung
194
+ chung_cho
195
+ chung_chung
196
+ chung_cuộc
197
+ chung_cục
198
+ chung_nhau
199
+ chung_qui
200
+ chung_quy
201
+ chung_quy_lại
202
+ chung_ái
203
+ chuyển
204
+ chuyển_tự
205
+ chuyển_đạt
206
+ chuyện
207
+ chuẩn_bị
208
+ chành_chạnh
209
+ chí_chết
210
+ chính
211
+ chính_bản
212
+ chính_giữa
213
+ chính_là
214
+ chính_thị
215
+ chính_điểm
216
+ chùn_chùn
217
+ chùn_chũn
218
+ chú
219
+ chú_dẫn
220
+ chú_khách
221
+ chú_mày
222
+ chú_mình
223
+ chúng
224
+ chúng_mình
225
+ chúng_ta
226
+ chúng_tôi
227
+ chúng_ông
228
+ chăn_chắn
229
+ chăng
230
+ chăng_chắc
231
+ chăng_nữa
232
+ chơi
233
+ chơi_họ
234
+ chưa
235
+ chưa_bao_giờ
236
+ chưa_chắc
237
+ chưa_có
238
+ chưa_cần
239
+ chưa_dùng
240
+ chưa_dễ
241
+ chưa_kể
242
+ chưa_tính
243
+ chưa_từng
244
+ chầm_chập
245
+ chậc
246
+ chắc
247
+ chắc_chắn
248
+ chắc_dạ
249
+ chắc_hẳn
250
+ chắc_lòng
251
+ chắc_người
252
+ chắc_vào
253
+ chắc_ăn
254
+ chẳng_lẽ
255
+ chẳng_những
256
+ chẳng_nữa
257
+ chẳng_phải
258
+ chết_nỗi
259
+ chết_thật
260
+ chết_tiệt
261
+ chỉ
262
+ chỉ_chính
263
+ chỉ_có
264
+ chỉ_là
265
+ chỉ_tên
266
+ chỉn
267
+ chị
268
+ chị_bộ
269
+ chị_ấy
270
+ chịu
271
+ chịu_chưa
272
+ chịu_lời
273
+ chịu_tốt
274
+ chịu_ăn
275
+ chọn
276
+ chọn_bên
277
+ chọn_ra
278
+ chốc_chốc
279
+ chớ
280
+ chớ_chi
281
+ chớ_gì
282
+ chớ_không
283
+ chớ_kể
284
+ chớ_như
285
+ chợt
286
+ chợt_nghe
287
+ chợt_nhìn
288
+ chủn
289
+ chứ
290
+ chứ_ai
291
+ chứ_còn
292
+ chứ_gì
293
+ chứ_không
294
+ chứ_không_phải
295
+ chứ_lại
296
+ chứ_lị
297
+ chứ_như
298
+ chứ_sao
299
+ coi_bộ
300
+ coi_mòi
301
+ con
302
+ con_con
303
+ con_dạ
304
+ con_nhà
305
+ con_tính
306
+ cu_cậu
307
+ cuối
308
+ cuối_cùng
309
+ cuối_điểm
310
+ cuốn
311
+ cuộc
312
+ càng
313
+ càng_càng
314
+ càng_hay
315
+ cá_nhân
316
+ các
317
+ các_cậu
318
+ cách
319
+ cách_bức
320
+ cách_không
321
+ cách_nhau
322
+ cách_đều
323
+ cái
324
+ cái_gì
325
+ cái_họ
326
+ cái_đã
327
+ cái_đó
328
+ cái_ấy
329
+ câu_hỏi
330
+ cây
331
+ cây_nước
332
+ còn
333
+ còn_như
334
+ còn_nữa
335
+ còn_thời_gian
336
+ còn_về
337
+
338
+ có_ai
339
+ có_chuyện
340
+ có_chăng
341
+ có_chăng_là
342
+ có_chứ
343
+ có_cơ
344
+ có_dễ
345
+ có_họ
346
+ có_khi
347
+ có_ngày
348
+ có_người
349
+ có_nhiều
350
+ có_nhà
351
+ có_phải
352
+ có_số
353
+ có_tháng
354
+ có_thế
355
+ có_thể
356
+ có_vẻ
357
+ có_ý
358
+ có_ăn
359
+ có_điều
360
+ có_điều_kiện
361
+ có_đáng
362
+ có_đâu
363
+ có_được
364
+ cóc_khô
365
+
366
+ cô_mình
367
+ cô_quả
368
+ cô_tăng
369
+ cô_ấy
370
+ công_nhiên
371
+ cùng
372
+ cùng_chung
373
+ cùng_cực
374
+ cùng_nhau
375
+ cùng_tuổi
376
+ cùng_tột
377
+ cùng_với
378
+ cùng_ăn
379
+ căn
380
+ căn_cái
381
+ căn_cắt
382
+ căn_tính
383
+ cũng
384
+ cũng_như
385
+ cũng_nên
386
+ cũng_thế
387
+ cũng_vậy
388
+ cũng_vậy_thôi
389
+ cũng_được
390
+
391
+ cơ_chỉ
392
+ cơ_chừng
393
+ cơ_cùng
394
+ cơ_dẫn
395
+ cơ_hồ
396
+ cơ_hội
397
+ cơ_mà
398
+ cơn
399
+ cả
400
+ cả_nghe
401
+ cả_nghĩ
402
+ cả_ngày
403
+ cả_người
404
+ cả_nhà
405
+ cả_năm
406
+ cả_thảy
407
+ cả_thể
408
+ cả_tin
409
+ cả_ăn
410
+ cả_đến
411
+ cảm_thấy
412
+ cảm_ơn
413
+ cấp
414
+ cấp_số
415
+ cấp_trực_tiếp
416
+ cần
417
+ cần_cấp
418
+ cần_gì
419
+ cần_số
420
+ cật_lực
421
+ cật_sức
422
+ cậu
423
+ cổ_lai
424
+ cụ_thể
425
+ cụ_thể_là
426
+ cụ_thể_như
427
+ của
428
+ của_ngọt
429
+ của_tin
430
+ cứ
431
+ cứ_như
432
+ cứ_việc
433
+ cứ_điểm
434
+ cực_lực
435
+ do
436
+ do_vì
437
+ do_vậy
438
+ do_đó
439
+ duy
440
+ duy_chỉ
441
+ duy_có
442
+ dài
443
+ dài_lời
444
+ dài_ra
445
+ dành
446
+ dành_dành
447
+ dào
448
+
449
+
450
+ dù_cho
451
+ dù_dì
452
+ dù_gì
453
+ dù_rằng
454
+ dù_sao
455
+ dùng
456
+ dùng_cho
457
+ dùng_hết
458
+ dùng_làm
459
+ dùng_đến
460
+ dưới
461
+ dưới_nước
462
+ dạ
463
+ dạ_bán
464
+ dạ_con
465
+ dạ_dài
466
+ dạ_dạ
467
+ dạ_khách
468
+ dần_dà
469
+ dần_dần
470
+ dầu_sao
471
+ dẫn
472
+ dẫu
473
+ dẫu_mà
474
+ dẫu_rằng
475
+ dẫu_sao
476
+ dễ
477
+ dễ_dùng
478
+ dễ_gì
479
+ dễ_khiến
480
+ dễ_nghe
481
+ dễ_ngươi
482
+ dễ_như_chơi
483
+ dễ_sợ
484
+ dễ_sử_dụng
485
+ dễ_thường
486
+ dễ_thấy
487
+ dễ_ăn
488
+ dễ_đâu
489
+ dở_chừng
490
+ dữ
491
+ dữ_cách
492
+ em
493
+ em_em
494
+ giá_trị
495
+ giá_trị_thực_tế
496
+ giảm
497
+ giảm_chính
498
+ giảm_thấp
499
+ giảm_thế
500
+ giống
501
+ giống_người
502
+ giống_nhau
503
+ giống_như
504
+ giờ
505
+ giờ_lâu
506
+ giờ_này
507
+ giờ_đi
508
+ giờ_đây
509
+ giờ_đến
510
+ giữ
511
+ giữ_lấy
512
+ giữ_ý
513
+ giữa
514
+ giữa_lúc
515
+ gây
516
+ gây_cho
517
+ gây_giống
518
+ gây_ra
519
+ gây_thêm
520
+
521
+ gì_gì
522
+ gì_đó
523
+ gần
524
+ gần_bên
525
+ gần_hết
526
+ gần_ngày
527
+ gần_như
528
+ gần_xa
529
+ gần_đây
530
+ gần_đến
531
+ gặp
532
+ gặp_khó_khăn
533
+ gặp_phải
534
+ gồm
535
+ hay
536
+ hay_biết
537
+ hay_hay
538
+ hay_không
539
+ hay_là
540
+ hay_làm
541
+ hay_nhỉ
542
+ hay_nói
543
+ hay_sao
544
+ hay_tin
545
+ hay_đâu
546
+ hiểu
547
+ hiện_nay
548
+ hiện_tại
549
+ hoàn_toàn
550
+ hoặc
551
+ hoặc_là
552
+ hãy
553
+ hãy_còn
554
+ hơn
555
+ hơn_cả
556
+ hơn_hết
557
+ hơn_là
558
+ hơn_nữa
559
+ hơn_trước
560
+ hầu_hết
561
+ hết
562
+ hết_chuyện
563
+ hết_cả
564
+ hết_của
565
+ hết_nói
566
+ hết_ráo
567
+ hết_rồi
568
+ hết_ý
569
+ họ
570
+ họ_gần
571
+ họ_xa
572
+ hỏi
573
+ hỏi_lại
574
+ hỏi_xem
575
+ hỏi_xin
576
+ hỗ_trợ
577
+ khi
578
+ khi_khác
579
+ khi_không
580
+ khi_nào
581
+ khi_nên
582
+ khi_trước
583
+ khiến
584
+ khoảng
585
+ khoảng_cách
586
+ khoảng_không
587
+ khá
588
+ khá_tốt
589
+ khác
590
+ khác_gì
591
+ khác_khác
592
+ khác_nhau
593
+ khác_nào
594
+ khác_thường
595
+ khác_xa
596
+ khách
597
+ khó
598
+ khó_biết
599
+ khó_chơi
600
+ khó_khăn
601
+ khó_làm
602
+ khó_mở
603
+ khó_nghe
604
+ khó_nghĩ
605
+ khó_nói
606
+ khó_thấy
607
+ khó_tránh
608
+ không
609
+ không_ai
610
+ không_bao_giờ
611
+ không_bao_lâu
612
+ không_biết
613
+ không_bán
614
+ không_chỉ
615
+ không_còn
616
+ không_có
617
+ không_có_gì
618
+ không_cùng
619
+ không_cần
620
+ không_cứ
621
+ không_dùng
622
+ không_gì
623
+ không_hay
624
+ không_khỏi
625
+ không_kể
626
+ không_ngoài
627
+ không_nhận
628
+ không_những
629
+ không_phải
630
+ không_phải_không
631
+ không_thể
632
+ không_tính
633
+ không_điều_kiện
634
+ không_được
635
+ không_đầy
636
+ không_để
637
+ khẳng_định
638
+ khỏi
639
+ khỏi_nói
640
+ kể
641
+ kể_cả
642
+ kể_như
643
+ kể_tới
644
+ kể_từ
645
+ liên_quan
646
+ loại
647
+ loại_từ
648
+ luôn
649
+ luôn_cả
650
+ luôn_luôn
651
+ luôn_tay
652
+
653
+ là_cùng
654
+ là_là
655
+ là_nhiều
656
+ là_phải
657
+ là_thế_nào
658
+ là_vì
659
+ là_ít
660
+ làm
661
+ làm_bằng
662
+ làm_cho
663
+ làm_dần_dần
664
+ làm_gì
665
+ làm_lòng
666
+ làm_lại
667
+ làm_lấy
668
+ làm_mất
669
+ làm_ngay
670
+ làm_như
671
+ làm_nên
672
+ làm_ra
673
+ làm_riêng
674
+ làm_sao
675
+ làm_theo
676
+ làm_thế_nào
677
+ làm_tin
678
+ làm_tôi
679
+ làm_tăng
680
+ làm_tại
681
+ làm_tắp_lự
682
+ làm_vì
683
+ làm_đúng
684
+ làm_được
685
+ lâu
686
+ lâu_các
687
+ lâu_lâu
688
+ lâu_nay
689
+ lâu_ngày
690
+ lên
691
+ lên_cao
692
+ lên_cơn
693
+ lên_mạnh
694
+ lên_ngôi
695
+ lên_nước
696
+ lên_số
697
+ lên_xuống
698
+ lên_đến
699
+ lòng
700
+ lòng_không
701
+ lúc
702
+ lúc_khác
703
+ lúc_lâu
704
+ lúc_nào
705
+ lúc_này
706
+ lúc_sáng
707
+ lúc_trước
708
+ lúc_đi
709
+ lúc_đó
710
+ lúc_đến
711
+ lúc_ấy
712
+ lý_do
713
+ lượng
714
+ lượng_cả
715
+ lượng_số
716
+ lượng_từ
717
+ lại
718
+ lại_bộ
719
+ lại_cái
720
+ lại_còn
721
+ lại_giống
722
+ lại_làm
723
+ lại_người
724
+ lại_nói
725
+ lại_nữa
726
+ lại_quả
727
+ lại_thôi
728
+ lại_ăn
729
+ lại_đây
730
+ lấy
731
+ lấy_có
732
+ lấy_cả
733
+ lấy_giống
734
+ lấy_làm
735
+ lấy_lý_do
736
+ lấy_lại
737
+ lấy_ra
738
+ lấy_ráo
739
+ lấy_sau
740
+ lấy_số
741
+ lấy_thêm
742
+ lấy_thế
743
+ lấy_vào
744
+ lấy_xuống
745
+ lấy_được
746
+ lấy_để
747
+ lần
748
+ lần_khác
749
+ lần_lần
750
+ lần_nào
751
+ lần_này
752
+ lần_sang
753
+ lần_sau
754
+ lần_theo
755
+ lần_trước
756
+ lần_tìm
757
+ lớn
758
+ lớn_lên
759
+ lớn_nhỏ
760
+ lời
761
+ lời_chú
762
+ lời_nói
763
+ mang
764
+ mang_lại
765
+ mang_mang
766
+ mang_nặng
767
+ mang_về
768
+ muốn
769
+
770
+ mà_cả
771
+ mà_không
772
+ mà_lại
773
+ mà_thôi
774
+ mà_vẫn
775
+ mình
776
+ mạnh
777
+ mất
778
+ mất_còn
779
+ mọi
780
+ mọi_giờ
781
+ mọi_khi
782
+ mọi_lúc
783
+ mọi_người
784
+ mọi_nơi
785
+ mọi_sự
786
+ mọi_thứ
787
+ mọi_việc
788
+ mối
789
+ mỗi
790
+ mỗi_lúc
791
+ mỗi_lần
792
+ mỗi_một
793
+ mỗi_ngày
794
+ mỗi_người
795
+ một
796
+ một_cách
797
+ một_cơn
798
+ một_khi
799
+ một_lúc
800
+ một_số
801
+ một_vài
802
+ một_ít
803
+ mới
804
+ mới_hay
805
+ mới_rồi
806
+ mới_đây
807
+ mở
808
+ mở_mang
809
+ mở_nước
810
+ mở_ra
811
+ mợ
812
+ mức
813
+ nay
814
+ ngay
815
+ ngay_bây_giờ
816
+ ngay_cả
817
+ ngay_khi
818
+ ngay_khi_đến
819
+ ngay_lúc
820
+ ngay_lúc_này
821
+ ngay_lập_tức
822
+ ngay_thật
823
+ ngay_tức_khắc
824
+ ngay_tức_thì
825
+ ngay_từ
826
+ nghe
827
+ nghe_chừng
828
+ nghe_hiểu
829
+ nghe_không
830
+ nghe_lại
831
+ nghe_nhìn
832
+ nghe_như
833
+ nghe_nói
834
+ nghe_ra
835
+ nghe_rõ
836
+ nghe_thấy
837
+ nghe_tin
838
+ nghe_trực_tiếp
839
+ nghe_đâu
840
+ nghe_đâu_như
841
+ nghe_được
842
+ nghen
843
+ nghiễm_nhiên
844
+ nghĩ
845
+ nghĩ_lại
846
+ nghĩ_ra
847
+ nghĩ_tới
848
+ nghĩ_xa
849
+ nghĩ_đến
850
+ nghỉm
851
+ ngoài
852
+ ngoài_này
853
+ ngoài_ra
854
+ ngoài_xa
855
+ ngoải
856
+ nguồn
857
+ ngày
858
+ ngày_càng
859
+ ngày_cấp
860
+ ngày_giờ
861
+ ngày_ngày
862
+ ngày_nào
863
+ ngày_này
864
+ ngày_nọ
865
+ ngày_qua
866
+ ngày_rày
867
+ ngày_tháng
868
+ ngày_xưa
869
+ ngày_xửa
870
+ ngày_đến
871
+ ngày_ấy
872
+ ngôi
873
+ ngôi_nhà
874
+ ngôi_thứ
875
+ ngõ_hầu
876
+ ngăn_ngắt
877
+ ngươi
878
+ người
879
+ người_hỏi
880
+ người_khác
881
+ người_khách
882
+ người_mình
883
+ người_nghe
884
+ người_người
885
+ người_nhận
886
+ ngọn
887
+ ngọn_nguồn
888
+ ngọt
889
+ ngồi
890
+ ngồi_bệt
891
+ ngồi_không
892
+ ngồi_sau
893
+ ngồi_trệt
894
+ ngộ_nhỡ
895
+ nhanh
896
+ nhanh_lên
897
+ nhanh_tay
898
+ nhau
899
+ nhiên_hậu
900
+ nhiều
901
+ nhiều_ít
902
+ nhiệt_liệt
903
+ nhung_nhăng
904
+ nhà
905
+ nhà_chung
906
+ nhà_khó
907
+ nhà_làm
908
+ nhà_ngoài
909
+ nhà_ngươi
910
+ nhà_tôi
911
+ nhà_việc
912
+ nhân_dịp
913
+ nhân_tiện
914
+ nhé
915
+ nhìn
916
+ nhìn_chung
917
+ nhìn_lại
918
+ nhìn_nhận
919
+ nhìn_theo
920
+ nhìn_thấy
921
+ nhìn_xuống
922
+ nhóm
923
+ nhón_nhén
924
+ như
925
+ như_ai
926
+ như_chơi
927
+ như_không
928
+ như_là
929
+ như_nhau
930
+ như_quả
931
+ như_sau
932
+ như_thường
933
+ như_thế
934
+ như_thế_nào
935
+ như_thể
936
+ như_trên
937
+ như_trước
938
+ như_tuồng
939
+ như_vậy
940
+ như_ý
941
+ nhưng
942
+ nhưng_mà
943
+ nhược_bằng
944
+ nhất
945
+ nhất_loạt
946
+ nhất_luật
947
+ nhất_là
948
+ nhất_mực
949
+ nhất_nhất
950
+ nhất_quyết
951
+ nhất_sinh
952
+ nhất_thiết
953
+ nhất_thì
954
+ nhất_tâm
955
+ nhất_tề
956
+ nhất_đán
957
+ nhất_định
958
+ nhận
959
+ nhận_biết
960
+ nhận_họ
961
+ nhận_làm
962
+ nhận_nhau
963
+ nhận_ra
964
+ nhận_thấy
965
+ nhận_việc
966
+ nhận_được
967
+ nhằm
968
+ nhằm_khi
969
+ nhằm_lúc
970
+ nhằm_vào
971
+ nhằm_để
972
+ nhỉ
973
+ nhỏ
974
+ nhỏ_người
975
+ nhớ
976
+ nhớ_bập_bõm
977
+ nhớ_lại
978
+ nhớ_lấy
979
+ nhớ_ra
980
+ nhờ
981
+ nhờ_chuyển
982
+ nhờ_có
983
+ nhờ_nhờ
984
+ nhờ_đó
985
+ nhỡ_ra
986
+ những
987
+ những_ai
988
+ những_khi
989
+ những_là
990
+ những_lúc
991
+ những_muốn
992
+ những_như
993
+ nào
994
+ nào_cũng
995
+ nào_hay
996
+ nào_là
997
+ nào_phải
998
+ nào_đâu
999
+ nào_đó
1000
+ này
1001
+ này_nọ
1002
+ nên
1003
+ nên_chi
1004
+ nên_chăng
1005
+ nên_làm
1006
+ nên_người
1007
+ nên_tránh
1008
+
1009
+ nóc
1010
+ nói
1011
+ nói_bông
1012
+ nói_chung
1013
+ nói_khó
1014
+ nói_là
1015
+ nói_lên
1016
+ nói_lại
1017
+ nói_nhỏ
1018
+ nói_phải
1019
+ nói_qua
1020
+ nói_ra
1021
+ nói_riêng
1022
+ nói_rõ
1023
+ nói_thêm
1024
+ nói_thật
1025
+ nói_toẹt
1026
+ nói_trước
1027
+ nói_tốt
1028
+ nói_với
1029
+ nói_xa
1030
+ nói_ý
1031
+ nói_đến
1032
+ nói_đủ
1033
+ năm
1034
+ năm_tháng
1035
+ nơi
1036
+ nơi_nơi
1037
+ nước
1038
+ nước_bài
1039
+ nước_cùng
1040
+ nước_lên
1041
+ nước_nặng
1042
+ nước_quả
1043
+ nước_xuống
1044
+ nước_ăn
1045
+ nước_đến
1046
+ nấy
1047
+ nặng
1048
+ nặng_căn
1049
+ nặng_mình
1050
+ nặng_về
1051
+ nếu
1052
+ nếu_có
1053
+ nếu_cần
1054
+ nếu_không
1055
+ nếu_mà
1056
+ nếu_như
1057
+ nếu_thế
1058
+ nếu_vậy
1059
+ nếu_được
1060
+ nền
1061
+ nọ
1062
+ nớ
1063
+ nức_nở
1064
+ nữa
1065
+ nữa_khi
1066
+ nữa_là
1067
+ nữa_rồi
1068
+ oai_oái
1069
+ oái
1070
+ pho
1071
+ phè
1072
+ phè_phè
1073
+ phía
1074
+ phía_bên
1075
+ phía_bạn
1076
+ phía_dưới
1077
+ phía_sau
1078
+ phía_trong
1079
+ phía_trên
1080
+ phía_trước
1081
+ phóc
1082
+ phót
1083
+ phù_hợp
1084
+ phăn_phắt
1085
+ phương_chi
1086
+ phải
1087
+ phải_biết
1088
+ phải_chi
1089
+ phải_chăng
1090
+ phải_cách
1091
+ phải_cái
1092
+ phải_giờ
1093
+ phải_khi
1094
+ phải_không
1095
+ phải_lại
1096
+ phải_lời
1097
+ phải_người
1098
+ phải_như
1099
+ phải_rồi
1100
+ phải_tay
1101
+ phần
1102
+ phần_lớn
1103
+ phần_nhiều
1104
+ phần_nào
1105
+ phần_sau
1106
+ phần_việc
1107
+ phắt
1108
+ phỉ_phui
1109
+ phỏng
1110
+ phỏng_như
1111
+ phỏng_nước
1112
+ phỏng_theo
1113
+ phỏng_tính
1114
+ phốc
1115
+ phụt
1116
+ phứt
1117
+ qua
1118
+ qua_chuyện
1119
+ qua_khỏi
1120
+ qua_lại
1121
+ qua_lần
1122
+ qua_ngày
1123
+ qua_tay
1124
+ qua_thì
1125
+ qua_đi
1126
+ quan_trọng
1127
+ quan_trọng_vấn_đề
1128
+ quan_tâm
1129
+ quay
1130
+ quay_bước
1131
+ quay_lại
1132
+ quay_số
1133
+ quay_đi
1134
+ quá
1135
+ quá_bán
1136
+ quá_bộ
1137
+ quá_giờ
1138
+ quá_lời
1139
+ quá_mức
1140
+ quá_nhiều
1141
+ quá_tay
1142
+ quá_thì
1143
+ quá_tin
1144
+ quá_trình
1145
+ quá_tuổi
1146
+ quá_đáng
1147
+ quá_ư
1148
+ quả
1149
+ quả_là
1150
+ quả_thật
1151
+ quả_thế
1152
+ quả_vậy
1153
+ quận
1154
+ ra
1155
+ ra_bài
1156
+ ra_bộ
1157
+ ra_chơi
1158
+ ra_gì
1159
+ ra_lại
1160
+ ra_lời
1161
+ ra_ngôi
1162
+ ra_người
1163
+ ra_sao
1164
+ ra_tay
1165
+ ra_vào
1166
+ ra_ý
1167
+ ra_điều
1168
+ ra_đây
1169
+ ren_rén
1170
+ riu_ríu
1171
+ riêng
1172
+ riêng_từng
1173
+ riệt
1174
+ rày
1175
+ ráo
1176
+ ráo_cả
1177
+ ráo_nước
1178
+ ráo_trọi
1179
+ rén
1180
+ rén_bước
1181
+ rích
1182
+ rón_rén
1183
+
1184
+ rõ_là
1185
+ rõ_thật
1186
+ rút_cục
1187
+ răng
1188
+ răng_răng
1189
+ rất
1190
+ rất_lâu
1191
+ rằng
1192
+ rằng_là
1193
+ rốt_cuộc
1194
+ rốt_cục
1195
+ rồi
1196
+ rồi_nữa
1197
+ rồi_ra
1198
+ rồi_sao
1199
+ rồi_sau
1200
+ rồi_tay
1201
+ rồi_thì
1202
+ rồi_xem
1203
+ rồi_đây
1204
+ rứa
1205
+ sa_sả
1206
+ sang
1207
+ sang_năm
1208
+ sang_sáng
1209
+ sang_tay
1210
+ sao
1211
+ sao_bản
1212
+ sao_bằng
1213
+ sao_cho
1214
+ sao_vậy
1215
+ sao_đang
1216
+ sau
1217
+ sau_chót
1218
+ sau_cuối
1219
+ sau_cùng
1220
+ sau_hết
1221
+ sau_này
1222
+ sau_nữa
1223
+ sau_sau
1224
+ sau_đây
1225
+ sau_đó
1226
+ so
1227
+ so_với
1228
+ song_le
1229
+ suýt
1230
+ suýt_nữa
1231
+ sáng
1232
+ sáng_ngày
1233
+ sáng_rõ
1234
+ sáng_thế
1235
+ sáng_ý
1236
+
1237
+ sì_sì
1238
+ sất
1239
+ sắp
1240
+ sắp_đặt
1241
+ sẽ
1242
+ sẽ_biết
1243
+ sẽ_hay
1244
+ số
1245
+ số_cho_biết
1246
+ số_cụ_thể
1247
+ số_loại
1248
+ số_là
1249
+ số_người
1250
+ số_phần
1251
+ số_thiếu
1252
+ sốt_sột
1253
+ sớm
1254
+ sớm_ngày
1255
+ sở_dĩ
1256
+ sử_dụng
1257
+ sự
1258
+ sự_thế
1259
+ sự_việc
1260
+ tanh
1261
+ tanh_tanh
1262
+ tay
1263
+ tay_quay
1264
+ tha_hồ
1265
+ tha_hồ_chơi
1266
+ tha_hồ_ăn
1267
+ than_ôi
1268
+ thanh
1269
+ thanh_ba
1270
+ thanh_chuyển
1271
+ thanh_không
1272
+ thanh_thanh
1273
+ thanh_tính
1274
+ thanh_điều_kiện
1275
+ thanh_điểm
1276
+ thay_đổi
1277
+ thay_đổi_tình_trạng
1278
+ theo
1279
+ theo_bước
1280
+ theo_như
1281
+ theo_tin
1282
+ thi_thoảng
1283
+ thiếu
1284
+ thiếu_gì
1285
+ thiếu_điểm
1286
+ thoạt
1287
+ thoạt_nghe
1288
+ thoạt_nhiên
1289
+ thoắt
1290
+ thuần
1291
+ thuần_ái
1292
+ thuộc
1293
+ thuộc_bài
1294
+ thuộc_cách
1295
+ thuộc_lại
1296
+ thuộc_từ
1297
+ thà
1298
+ thà_là
1299
+ thà_rằng
1300
+ thành_ra
1301
+ thành_thử
1302
+ thái_quá
1303
+ tháng
1304
+ tháng_ngày
1305
+ tháng_năm
1306
+ tháng_tháng
1307
+ thêm
1308
+ thêm_chuyện
1309
+ thêm_giờ
1310
+ thêm_vào
1311
+ thì
1312
+ thì_giờ
1313
+ thì_là
1314
+ thì_phải
1315
+ thì_ra
1316
+ thì_thôi
1317
+ thình_lình
1318
+ thích
1319
+ thích_cứ
1320
+ thích_thuộc
1321
+ thích_tự
1322
+ thích_ý
1323
+ thím
1324
+ thôi
1325
+ thôi_việc
1326
+ thúng_thắng
1327
+ thương_ôi
1328
+ thường
1329
+ thường_bị
1330
+ thường_hay
1331
+ thường_khi
1332
+ thường_số
1333
+ thường_sự
1334
+ thường_thôi
1335
+ thường_thường
1336
+ thường_tính
1337
+ thường_tại
1338
+ thường_xuất_hiện
1339
+ thường_đến
1340
+ thảo_hèn
1341
+ thảo_nào
1342
+ thấp
1343
+ thấp_cơ
1344
+ thấp_thỏm
1345
+ thấp_xuống
1346
+ thấy
1347
+ thấy_tháng
1348
+ thẩy
1349
+ thậm
1350
+ thậm_chí
1351
+ thậm_cấp
1352
+ thậm_từ
1353
+ thật
1354
+ thật_chắc
1355
+ thật_là
1356
+ thật_lực
1357
+ thật_quả
1358
+ thật_ra
1359
+ thật_sự
1360
+ thật_thà
1361
+ thật_tốt
1362
+ thật_vậy
1363
+ thế
1364
+ thế_chuẩn_bị
1365
+ thế_là
1366
+ thế_lại
1367
+ thế_mà
1368
+ thế_nào
1369
+ thế_nên
1370
+ thế_ra
1371
+ thế_sự
1372
+ thế_thì
1373
+ thế_thôi
1374
+ thế_thường
1375
+ thế_thế
1376
+ thế_à
1377
+ thế_đó
1378
+ thếch
1379
+ thỉnh_thoảng
1380
+ thỏm
1381
+ thốc
1382
+ thốc_tháo
1383
+ thốt
1384
+ thốt_nhiên
1385
+ thốt_nói
1386
+ thốt_thôi
1387
+ thộc
1388
+ thời_gian
1389
+ thời_gian_sử_dụng
1390
+ thời_gian_tính
1391
+ thời_điểm
1392
+ thục_mạng
1393
+ thứ
1394
+ thứ_bản
1395
+ thứ_đến
1396
+ thửa
1397
+ thực_hiện
1398
+ thực_hiện_đúng
1399
+ thực_ra
1400
+ thực_sự
1401
+ thực_tế
1402
+ thực_vậy
1403
+ tin
1404
+ tin_thêm
1405
+ tin_vào
1406
+ tiếp_theo
1407
+ tiếp_tục
1408
+ tiếp_đó
1409
+ tiện_thể
1410
+ toà
1411
+ toé_khói
1412
+ toẹt
1413
+ trong
1414
+ trong_khi
1415
+ trong_lúc
1416
+ trong_mình
1417
+ trong_ngoài
1418
+ trong_này
1419
+ trong_số
1420
+ trong_vùng
1421
+ trong_đó
1422
+ trong_ấy
1423
+ tránh
1424
+ tránh_khỏi
1425
+ tránh_ra
1426
+ tránh_tình_trạng
1427
+ tránh_xa
1428
+ trên
1429
+ trên_bộ
1430
+ trên_dưới
1431
+ trước
1432
+ trước_hết
1433
+ trước_khi
1434
+ trước_kia
1435
+ trước_nay
1436
+ trước_ngày
1437
+ trước_nhất
1438
+ trước_sau
1439
+ trước_tiên
1440
+ trước_tuổi
1441
+ trước_đây
1442
+ trước_đó
1443
+ trả
1444
+ trả_của
1445
+ trả_lại
1446
+ trả_ngay
1447
+ trả_trước
1448
+ trếu_tráo
1449
+ trển
1450
+ trệt
1451
+ trệu_trạo
1452
+ trỏng
1453
+ trời_đất_ơi
1454
+ trở_thành
1455
+ trừ_phi
1456
+ trực_tiếp
1457
+ trực_tiếp_làm
1458
+ tuy
1459
+ tuy_có
1460
+ tuy_là
1461
+ tuy_nhiên
1462
+ tuy_rằng
1463
+ tuy_thế
1464
+ tuy_vậy
1465
+ tuy_đã
1466
+ tuyệt_nhiên
1467
+ tuần_tự
1468
+ tuốt_luốt
1469
+ tuốt_tuồn_tuột
1470
+ tuốt_tuột
1471
+ tuổi
1472
+ tuổi_cả
1473
+ tuổi_tôi
1474
+ tà_tà
1475
+ tên
1476
+ tên_chính
1477
+ tên_cái
1478
+ tên_họ
1479
+ tên_tự
1480
+ tênh
1481
+ tênh_tênh
1482
+ tìm
1483
+ tìm_bạn
1484
+ tìm_cách
1485
+ tìm_hiểu
1486
+ tìm_ra
1487
+ tìm_việc
1488
+ tình_trạng
1489
+ tính
1490
+ tính_cách
1491
+ tính_căn
1492
+ tính_người
1493
+ tính_phỏng
1494
+ tính_từ
1495
+ tít_mù
1496
+ tò_te
1497
+ tôi
1498
+ tôi_con
1499
+ tông_tốc
1500
+ tù_tì
1501
+ tăm_tắp
1502
+ tăng
1503
+ tăng_chúng
1504
+ tăng_cấp
1505
+ tăng_giảm
1506
+ tăng_thêm
1507
+ tăng_thế
1508
+ tại
1509
+ tại_lòng
1510
+ tại_nơi
1511
+ tại_sao
1512
+ tại_tôi
1513
+ tại_vì
1514
+ tại_đâu
1515
+ tại_đây
1516
+ tại_đó
1517
+ tạo
1518
+ tạo_cơ_hội
1519
+ tạo_nên
1520
+ tạo_ra
1521
+ tạo_ý
1522
+ tạo_điều_kiện
1523
+ tấm
1524
+ tấm_bản
1525
+ tấm_các
1526
+ tấn
1527
+ tấn_tới
1528
+ tất_cả
1529
+ tất_cả_bao_nhiêu
1530
+ tất_thảy
1531
+ tất_tần_tật
1532
+ tất_tật
1533
+ tập_trung
1534
+ tắp
1535
+ tắp_lự
1536
+ tắp_tắp
1537
+ tọt
1538
+ tỏ_ra
1539
+ tỏ_vẻ
1540
+ tốc_tả
1541
+ tối_ư
1542
+ tốt
1543
+ tốt_bạn
1544
+ tốt_bộ
1545
+ tốt_hơn
1546
+ tốt_mối
1547
+ tốt_ngày
1548
+ tột
1549
+ tột_cùng
1550
+ tớ
1551
+ tới
1552
+ tới_gần
1553
+ tới_mức
1554
+ tới_nơi
1555
+ tới_thì
1556
+ tức_thì
1557
+ tức_tốc
1558
+ từ
1559
+ từ_căn
1560
+ từ_giờ
1561
+ từ_khi
1562
+ từ_loại
1563
+ từ_nay
1564
+ từ_thế
1565
+ từ_tính
1566
+ từ_tại
1567
+ từ_từ
1568
+ từ_ái
1569
+ từ_điều
1570
+ từ_đó
1571
+ từ_ấy
1572
+ từng
1573
+ từng_cái
1574
+ từng_giờ
1575
+ từng_nhà
1576
+ từng_phần
1577
+ từng_thời_gian
1578
+ từng_đơn_vị
1579
+ từng_ấy
1580
+ tự
1581
+ tự_cao
1582
+ tự_khi
1583
+ tự_lượng
1584
+ tự_tính
1585
+ tự_tạo
1586
+ tự_vì
1587
+ tự_ý
1588
+ tự_ăn
1589
+ tựu_trung
1590
+ veo
1591
+ veo_veo
1592
+ việc
1593
+ việc_gì
1594
+ vung_thiên_địa
1595
+ vung_tàn_tán
1596
+ vung_tán_tàn
1597
+
1598
+ vài
1599
+ vài_ba
1600
+ vài_người
1601
+ vài_nhà
1602
+ vài_nơi
1603
+ vài_tên
1604
+ vài_điều
1605
+ vào
1606
+ vào_gặp
1607
+ vào_khoảng
1608
+ vào_lúc
1609
+ vào_vùng
1610
+ vào_đến
1611
+ vâng
1612
+ vâng_chịu
1613
+ vâng_dạ
1614
+ vâng_vâng
1615
+ vâng_ý
1616
+ vèo
1617
+ vèo_vèo
1618
+
1619
+ vì_chưng
1620
+ vì_rằng
1621
+ vì_sao
1622
+ vì_thế
1623
+ vì_vậy
1624
+ ví_bằng
1625
+ ví_dù
1626
+ ví_phỏng
1627
+ ví_thử
1628
+ vô_hình_trung
1629
+ vô_kể
1630
+ vô_luận
1631
+ vô_vàn
1632
+ vùng
1633
+ vùng_lên
1634
+ vùng_nước
1635
+ văng_tê
1636
+ vượt
1637
+ vượt_khỏi
1638
+ vượt_quá
1639
+ vạn_nhất
1640
+ vả_chăng
1641
+ vả_lại
1642
+ vấn_đề
1643
+ vấn_đề_quan_trọng
1644
+ vẫn
1645
+ vẫn_thế
1646
+ vậy
1647
+ vậy_là
1648
+ vậy_mà
1649
+ vậy_nên
1650
+ vậy_ra
1651
+ vậy_thì
1652
+ vậy_ư
1653
+ về
1654
+ về_không
1655
+ về_nước
1656
+ về_phần
1657
+ về_sau
1658
+ về_tay
1659
+ vị_trí
1660
+ vị_tất
1661
+ vốn_dĩ
1662
+ với
1663
+ với_lại
1664
+ với_nhau
1665
+ vở
1666
+ vụt
1667
+ vừa
1668
+ vừa_khi
1669
+ vừa_lúc
1670
+ vừa_mới
1671
+ vừa_qua
1672
+ vừa_rồi
1673
+ vừa_vừa
1674
+ xa
1675
+ xa_cách
1676
+ xa_gần
1677
+ xa_nhà
1678
+ xa_tanh
1679
+ xa_tắp
1680
+ xa_xa
1681
+ xa_xả
1682
+ xem
1683
+ xem_lại
1684
+ xem_ra
1685
+ xem_số
1686
+ xin
1687
+ xin_gặp
1688
+ xin_vâng
1689
+ xiết_bao
1690
+ xon_xón
1691
+ xoành_xoạch
1692
+ xoét
1693
+ xoẳn
1694
+ xoẹt
1695
+ xuất_hiện
1696
+ xuất_kì_bất_ý
1697
+ xuất_kỳ_bất_ý
1698
+ xuể
1699
+ xuống
1700
+ xăm_xúi
1701
+ xăm_xăm
1702
+ xăm_xắm
1703
+ xảy_ra
1704
+ xềnh_xệch
1705
+ xệp
1706
+ xử_lý
1707
+ yêu_cầu
1708
+ à
1709
+ à_này
1710
+ à_ơi
1711
+ ào
1712
+ ào_vào
1713
+ ào_ào
1714
+ á
1715
+ á_à
1716
+ ái
1717
+ ái_chà
1718
+ ái_dà
1719
+ áng
1720
+ áng_như
1721
+ âu_là
1722
+ ít
1723
+ ít_biết
1724
+ ít_có
1725
+ ít_hơn
1726
+ ít_khi
1727
+ ít_lâu
1728
+ ít_nhiều
1729
+ ít_nhất
1730
+ ít_nữa
1731
+ ít_quá
1732
+ ít_ra
1733
+ ít_thôi
1734
+ ít_thấy
1735
+ ô_hay
1736
+ ô_hô
1737
+ ô_kê
1738
+ ô_kìa
1739
+ ôi_chao
1740
+ ôi_thôi
1741
+ ông
1742
+ ông_nhỏ
1743
+ ông_tạo
1744
+ ông_từ
1745
+ ông_ấy
1746
+ ông_ổng
1747
+ úi
1748
+ úi_chà
1749
+ úi_dào
1750
+ ý
1751
+ ý_chừng
1752
+ ý_da
1753
+ ý_hoặc
1754
+ ăn
1755
+ ăn_chung
1756
+ ăn_chắc
1757
+ ăn_chịu
1758
+ ăn_cuộc
1759
+ ăn_hết
1760
+ ăn_hỏi
1761
+ ăn_làm
1762
+ ăn_người
1763
+ ăn_ngồi
1764
+ ăn_quá
1765
+ ăn_riêng
1766
+ ăn_sáng
1767
+ ăn_tay
1768
+ ăn_trên
1769
+ ăn_về
1770
+ đang
1771
+ đang_tay
1772
+ đang_thì
1773
+ điều
1774
+ điều_gì
1775
+ điều_kiện
1776
+ điểm
1777
+ điểm_chính
1778
+ điểm_gặp
1779
+ điểm_đầu_tiên
1780
+ đành_đạch
1781
+ đáng
1782
+ đáng_kể
1783
+ đáng_lí
1784
+ đáng_lý
1785
+ đáng_lẽ
1786
+ đáng_số
1787
+ đánh_giá
1788
+ đánh_đùng
1789
+ đáo_để
1790
+ đâu
1791
+ đâu_có
1792
+ đâu_cũng
1793
+ đâu_như
1794
+ đâu_nào
1795
+ đâu_phải
1796
+ đâu_đâu
1797
+ đâu_đây
1798
+ đâu_đó
1799
+ đây
1800
+ đây_này
1801
+ đây_rồi
1802
+ đây_đó
1803
+ đã
1804
+ đã_hay
1805
+ đã_không
1806
+ đã_là
1807
+ đã_lâu
1808
+ đã_thế
1809
+ đã_vậy
1810
+ đã_đủ
1811
+ đó
1812
+ đó_đây
1813
+ đúng
1814
+ đúng_ngày
1815
+ đúng_ra
1816
+ đúng_tuổi
1817
+ đúng_với
1818
+ đơn_vị
1819
+ đưa
1820
+ đưa_cho
1821
+ đưa_chuyện
1822
+ đưa_em
1823
+ đưa_ra
1824
+ đưa_tay
1825
+ đưa_tin
1826
+ đưa_tới
1827
+ đưa_vào
1828
+ đưa_về
1829
+ đưa_xuống
1830
+ đưa_đến
1831
+ được
1832
+ được_cái
1833
+ được_lời
1834
+ được_nước
1835
+ được_tin
1836
+ đại_loại
1837
+ đại_nhân
1838
+ đại_phàm
1839
+ đại_để
1840
+ đạt
1841
+ đảm_bảo
1842
+ đầu_tiên
1843
+ đầy
1844
+ đầy_năm
1845
+ đầy_phè
1846
+ đầy_tuổi
1847
+ đặc_biệt
1848
+ đặt
1849
+ đặt_làm
1850
+ đặt_mình
1851
+ đặt_mức
1852
+ đặt_ra
1853
+ đặt_trước
1854
+ đặt_để
1855
+ đến
1856
+ đến_bao_giờ
1857
+ đến_cùng
1858
+ đến_cùng_cực
1859
+ đến_cả
1860
+ đến_giờ
1861
+ đến_gần
1862
+ đến_hay
1863
+ đến_khi
1864
+ đến_lúc
1865
+ đến_lời
1866
+ đến_nay
1867
+ đến_ngày
1868
+ đến_nơi
1869
+ đến_nỗi
1870
+ đến_thì
1871
+ đến_thế
1872
+ đến_tuổi
1873
+ đến_xem
1874
+ đến_điều
1875
+ đến_đâu
1876
+ đều
1877
+ đều_bước
1878
+ đều_nhau
1879
+ đều_đều
1880
+ để
1881
+ để_cho
1882
+ để_giống
1883
+ để_không
1884
+ để_lòng
1885
+ để_lại
1886
+ để_mà
1887
+ để_phần
1888
+ để_được
1889
+ để_đến_nỗi
1890
+ đối_với
1891
+ đồng_thời
1892
+ đủ
1893
+ đủ_dùng
1894
+ đủ_nơi
1895
+ đủ_số
1896
+ đủ_điều
1897
+ đủ_điểm
1898
+ ơ
1899
+ ơ_hay
1900
+ ơ_kìa
1901
+ ơi
1902
+ ơi_là
1903
+ ư
1904
+
1905
+ ạ_ơi
1906
+ ấy
1907
+ ấy_là
1908
+ ầu_ơ
1909
+ ắt
1910
+ ắt_hẳn
1911
+ ắt_là
1912
+ ắt_phải
1913
+ ắt_thật
1914
+ ối_dào
1915
+ ối_giời
1916
+ ối_giời_ơi
1917
+
1918
+ ồ_ồ
1919
+ ổng
1920
+
1921
+ ớ_này
1922
+
1923
+ ờ_ờ
1924
+
1925
+ ở_lại
1926
+ ở_như
1927
+ ở_nhờ
1928
+ ở_năm
1929
+ ở_trên
1930
+ ở_vào
1931
+ ở_đây
1932
+ ở_đó
1933
+ ở_được
1934
+ ủa
1935
+ ứ_hự
1936
+ ứ_ừ
1937
+
1938
+ ừ_nhé
1939
+ ừ_thì
1940
+ ừ_ào
1941
+ ừ_ừ
1942
+