Deploy-app commited on
Commit
7c10128
·
verified ·
1 Parent(s): 1913a94

Upload 4 files

Browse files
dataset_tweet_sentiment_pilkada_DKI_2017.csv ADDED
The diff for this file is too large to render. See raw diff
 
main.py ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import pandas as pd
3
+ import numpy as np
4
+ import matplotlib.pyplot as plt
5
+ import seaborn as sns
6
+ import pickle
7
+ import nltk
8
+ import tensorflow as tf
9
+ import re
10
+ import nltk
11
+ from nltk.corpus import stopwords
12
+ from nltk.tokenize import word_tokenize, sent_tokenize
13
+ from sklearn.model_selection import train_test_split
14
+ from sklearn.metrics import classification_report, accuracy_score, confusion_matrix
15
+ import seaborn as sns
16
+ from transformers import BertTokenizer
17
+ from transformers import TFBertForSequenceClassification
18
+ nltk.download('punkt')
19
+ nltk.download('stopwords')
20
+
21
+ df = pd.read_csv("dataset_tweet_sentiment_pilkada_DKI_2017.csv")
22
+
23
+ df.rename(columns={
24
+ 'Sentiment': 'sentiment',
25
+ 'Pasangan Calon': 'calon',
26
+ 'Text Tweet': 'text'
27
+ }, inplace=True)
28
+
29
+ df.dropna(inplace=True)
30
+
31
+ #preprocessing
32
+ def clean_text(text):
33
+ text = re.sub(r"https?://\S+|www\.\S+", "", text) #hapus url
34
+ text = re.sub(r"@\S+", "", text) #hapus mention
35
+ text = re.sub(r"#\S+", "", text) #hapus hastag
36
+ text = re.sub(r"\d+", "", text) #hapus nomor
37
+ text = re.sub(r"[^\w\s]", "", text) #hapus tanda baca
38
+ text = re.sub(r"(.)\1{2,}", r"\1", text) #hapus double karakter
39
+ text = text.strip() #hapus spasi di depan dan di belakang
40
+ text = text.lower() #ubah menjadi huruf kecil
41
+ return text
42
+
43
+ stopword_pilkada = pd.read_csv("stopword_tweet_pilkada_DKI_2017.csv", header=None)
44
+ stopword_pilkada.columns = ['stopword']
45
+
46
+ stop_words = set(stopwords.words('indonesian'))
47
+ additional_sw = set(stopword_pilkada.stopword.values)
48
+ stop_words = stop_words.union(additional_sw)
49
+
50
+ def remove_stopwords(text):
51
+ word_tokens = word_tokenize(text)
52
+ filtered_sentence = [w for w in word_tokens if not w in stop_words]
53
+ return " ".join(filtered_sentence)
54
+
55
+ def preprocess_text(text):
56
+ text = clean_text(text)
57
+ text = remove_stopwords(text)
58
+ return(text)
59
+
60
+ text_to_process = "sangat gak bagus pak ahok"
61
+ processed_text = preprocess_text(text_to_process)
62
+ print(processed_text)
63
+
64
+ df_train, df_test = train_test_split(df, test_size=0.3, random_state=42)
65
+ df_val, df_test = train_test_split(df_test, test_size=0.5, random_state=42)
66
+
67
+ print("Train Data Size: ", len(df_train)) #70%
68
+ print("Validation Data Size: ", len(df_val)) #15%
69
+ print("Test Data Size: ", len(df_test)) #15%
70
+
71
+ PRETRAINED_MODEL = "indobenchmark/indobert-base-p2"
72
+ tokenizer = BertTokenizer.from_pretrained(PRETRAINED_MODEL)
73
+ vocab = tokenizer.get_vocab()
74
+
75
+ #mengecek distrubusi data untuk mengetahui panjang maksimal untuk token
76
+ token_lens = []
77
+
78
+ for txt in df["text"]:
79
+ tokens = tokenizer.encode(txt)
80
+ token_lens.append(len(tokens))
81
+
82
+ MAX_LEN = 60
83
+
84
+ df_train['sentiment'] = df_train['sentiment'].map({'positive': 1, 'negative': 0})
85
+ df_val['sentiment'] = df_val['sentiment'].map({'positive': 1, 'negative': 0})
86
+
87
+ def encode_sentence(sent):
88
+ return tokenizer.encode_plus(
89
+ sent,
90
+ add_special_tokens =True,
91
+ padding = 'max_length',
92
+ truncation = 'longest_first',
93
+ max_length = MAX_LEN,
94
+ return_attention_mask =True,
95
+ return_token_type_ids=True
96
+ )
97
+
98
+ def map_example_to_dict(input_ids, attention_masks, token_type_ids, label):
99
+ return{
100
+ "input_ids": input_ids,
101
+ "attention_mask": attention_masks,
102
+ "token_type_ids": token_type_ids,
103
+ }, label
104
+
105
+ def encode_dataset(ds, limit=-1):
106
+ input_ids_list = []
107
+ attention_mask_list = []
108
+ token_type_ids_list = []
109
+ label_list = []
110
+
111
+ for index, row in ds.iterrows():
112
+ if limit > 0 and index >= limit:
113
+ break
114
+
115
+ input_ids, attention_mask, token_type_ids =encode_sentence(row["text"])["input_ids"],\
116
+ encode_sentence(row["text"])["attention_mask"],\
117
+ encode_sentence(row["text"])["token_type_ids"]
118
+ label = row["sentiment"]
119
+
120
+ input_ids_list.append(input_ids)
121
+ attention_mask_list.append(attention_mask)
122
+ token_type_ids_list.append(token_type_ids)
123
+ label_list.append(label)
124
+
125
+ return tf.data.Dataset.from_tensor_slices((
126
+ input_ids_list,
127
+ attention_mask_list,
128
+ token_type_ids_list,
129
+ label_list
130
+ )).map(map_example_to_dict)
131
+
132
+ EPOCH = 1
133
+ BATCH_SIZE = 42
134
+ LEARNING_RATE = 1e-5
135
+
136
+ df_train_shuffled = df_train.sample(frac=1, random_state=42)
137
+ train_data = encode_dataset(df_train_shuffled).batch(BATCH_SIZE)
138
+ val_data = encode_dataset(df_val).batch(BATCH_SIZE)
139
+ test_data = encode_dataset(df_test).batch(BATCH_SIZE)
140
+
141
+ model = TFBertForSequenceClassification.from_pretrained(PRETRAINED_MODEL, num_labels=2)
142
+
143
+ model.summary()
144
+
145
+ optimizer = tf.keras.optimizers.Adam(learning_rate=LEARNING_RATE)
146
+ loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
147
+ metric = tf.keras.metrics.SparseCategoricalAccuracy('accuracy')
148
+
149
+ model.compile(optimizer, loss=loss, metrics=[metric])
150
+
151
+ history = model.fit(
152
+ train_data,
153
+ epochs=EPOCH,
154
+ batch_size=BATCH_SIZE,
155
+ validation_data=val_data
156
+ )
157
+
158
+
159
+ # Convert string labels to numeric format for the test dataset
160
+ df_test['sentiment'] = df_test['sentiment'].map({'positive': 1, 'negative': 0})
161
+
162
+ # Create the test_data with the updated DataFrame
163
+ test_data = encode_dataset(df_test).batch(BATCH_SIZE)
164
+
165
+ # Evaluate the model
166
+ model.evaluate(test_data)
167
+
168
+ y_pred = model.predict(test_data)
169
+ y_actual = np.concatenate([y for x, y in test_data], axis=0)
170
+
171
+ labels = ["negative", "positive"]
172
+
173
+ def predict(text):
174
+ input_ids, attention_mask, token_type_ids = encode_sentence(text)["input_ids"],\
175
+ encode_sentence(text)["attention_mask"],\
176
+ encode_sentence(text)["token_type_ids"]
177
+ input_ids = tf.expand_dims(input_ids, 0)
178
+ attention_mask = tf.expand_dims(attention_mask, 0)
179
+ token_type_ids = tf.expand_dims(token_type_ids, 0)
180
+
181
+ outputs = model([input_ids, attention_mask, token_type_ids])
182
+ return labels[np.argmax(tf.nn.softmax(outputs[0], axis=1).numpy()[0])]
requirements.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ matplotlib==3.8.3
2
+ nltk==3.8.1
3
+ numpy==1.26.4
4
+ pandas==2.2.2
5
+ scikit_learn==1.4.1.post1
6
+ seaborn==0.13.2
7
+ streamlit==1.31.1
8
+ tf-keras==2.16.0
9
+ tensorflow==2.16.1
10
+ transformers==4.41.2
stopword_tweet_pilkada_DKI_2017.csv ADDED
@@ -0,0 +1,784 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ada
2
+ adalah
3
+ adanya
4
+ adapun
5
+ agak
6
+ agaknya
7
+ agar
8
+ aja
9
+ akan
10
+ akankah
11
+ akhir
12
+ akhiri
13
+ akhirnya
14
+ aku
15
+ akulah
16
+ amat
17
+ amatlah
18
+ anda
19
+ andalah
20
+ antar
21
+ antara
22
+ antaranya
23
+ apa
24
+ apaan
25
+ apabila
26
+ apakah
27
+ apalagi
28
+ apatah
29
+ artinya
30
+ asal
31
+ asalkan
32
+ atas
33
+ atau
34
+ ataukah
35
+ ataupun
36
+ awal
37
+ awalnya
38
+ bagai
39
+ bagaikan
40
+ bagaimana
41
+ bagaimanakah
42
+ bagaimanapun
43
+ bagi
44
+ bagian
45
+ bahkan
46
+ bahwa
47
+ bahwasanya
48
+ baik
49
+ bakal
50
+ bakalan
51
+ balik
52
+ banyak
53
+ bapak
54
+ baru
55
+ bawah
56
+ bbrp
57
+ beberapa
58
+ begini
59
+ beginian
60
+ beginikah
61
+ beginilah
62
+ begitu
63
+ begitukah
64
+ begitulah
65
+ begitupun
66
+ bekerja
67
+ belakang
68
+ belakangan
69
+ belum
70
+ belumlah
71
+ benar
72
+ benarkah
73
+ benarlah
74
+ berada
75
+ berakhir
76
+ berakhirlah
77
+ berakhirnya
78
+ berapa
79
+ berapakah
80
+ berapalah
81
+ berapapun
82
+ berarti
83
+ berawal
84
+ berbagai
85
+ berdatangan
86
+ beri
87
+ berikan
88
+ berikut
89
+ berikutnya
90
+ berjumlah
91
+ berkali-kali
92
+ berkata
93
+ berkehendak
94
+ berkeinginan
95
+ berkenaan
96
+ berlainan
97
+ berlalu
98
+ berlangsung
99
+ berlebihan
100
+ bermacam
101
+ bermacam-macam
102
+ bermaksud
103
+ bermula
104
+ bersama
105
+ bersama-sama
106
+ bersiap
107
+ bersiap-siap
108
+ bertanya
109
+ bertanya-tanya
110
+ berturut
111
+ berturut-turut
112
+ bertutur
113
+ berujar
114
+ berupa
115
+ besar
116
+ betul
117
+ betulkah
118
+ bgt
119
+ biar
120
+ biasa
121
+ biasanya
122
+ bila
123
+ bilakah
124
+ bisa
125
+ bisakah
126
+ boleh
127
+ bolehkah
128
+ bolehlah
129
+ buat
130
+ bukan
131
+ bukankah
132
+ bukanlah
133
+ bukannya
134
+ bulan
135
+ bung
136
+ cara
137
+ caranya
138
+ cukup
139
+ cukupkah
140
+ cukuplah
141
+ cuma
142
+ dahulu
143
+ dalam
144
+ dan
145
+ dapat
146
+ dari
147
+ daripada
148
+ datang
149
+ dekat
150
+ demi
151
+ demikian
152
+ demikianlah
153
+ dengan
154
+ depan
155
+ dg
156
+ dgn
157
+ di
158
+ dia
159
+ diakhiri
160
+ diakhirinya
161
+ dialah
162
+ diantara
163
+ diantaranya
164
+ diberi
165
+ diberikan
166
+ diberikannya
167
+ dibuat
168
+ dibuatnya
169
+ didapat
170
+ didatangkan
171
+ digunakan
172
+ diibaratkan
173
+ diibaratkannya
174
+ diingat
175
+ diingatkan
176
+ diinginkan
177
+ dijawab
178
+ dijelaskan
179
+ dijelaskannya
180
+ dikarenakan
181
+ dikatakan
182
+ dikatakannya
183
+ dikerjakan
184
+ diketahui
185
+ diketahuinya
186
+ dikira
187
+ dilakukan
188
+ dilalui
189
+ dilihat
190
+ dimaksud
191
+ dimaksudkan
192
+ dimaksudkannya
193
+ dimaksudnya
194
+ diminta
195
+ dimintai
196
+ dimisalkan
197
+ dimulai
198
+ dimulailah
199
+ dimulainya
200
+ dimungkinkan
201
+ dini
202
+ dipastikan
203
+ diperbuat
204
+ diperbuatnya
205
+ dipergunakan
206
+ diperkirakan
207
+ diperlihatkan
208
+ diperlukan
209
+ diperlukannya
210
+ dipersoalkan
211
+ dipertanyakan
212
+ dipunyai
213
+ diri
214
+ dirinya
215
+ disampaikan
216
+ disebut
217
+ disebutkan
218
+ disebutkannya
219
+ disini
220
+ disinilah
221
+ ditambahkan
222
+ ditandaskan
223
+ ditanya
224
+ ditanyai
225
+ ditanyakan
226
+ ditegaskan
227
+ ditujukan
228
+ ditunjuk
229
+ ditunjuki
230
+ ditunjukkan
231
+ ditunjukkannya
232
+ ditunjuknya
233
+ dituturkan
234
+ dituturkannya
235
+ diucapkan
236
+ diucapkannya
237
+ diungkapkan
238
+ dong
239
+ dpt
240
+ dr
241
+ dua
242
+ dulu
243
+ empat
244
+ enggak
245
+ enggaknya
246
+ entah
247
+ entahlah
248
+ ga
249
+ gak
250
+ gini
251
+ guna
252
+ gunakan
253
+ hal
254
+ hampir
255
+ hanya
256
+ hanyalah
257
+ hari
258
+ harus
259
+ haruslah
260
+ harusnya
261
+ hendak
262
+ hendaklah
263
+ hendaknya
264
+ hingga
265
+ ia
266
+ ialah
267
+ ibarat
268
+ ibaratkan
269
+ ibaratnya
270
+ ibu
271
+ ikut
272
+ ingat
273
+ ingat-ingat
274
+ ingin
275
+ inginkah
276
+ inginkan
277
+ ini
278
+ inikah
279
+ inilah
280
+ itu
281
+ itukah
282
+ itulah
283
+ jadi
284
+ jadilah
285
+ jadinya
286
+ jangan
287
+ jangankan
288
+ janganlah
289
+ jauh
290
+ jawab
291
+ jawaban
292
+ jawabnya
293
+ jelas
294
+ jelaskan
295
+ jelaslah
296
+ jelasnya
297
+ jika
298
+ jikalau
299
+ juga
300
+ jumlah
301
+ jumlahnya
302
+ justru
303
+ kah
304
+ kala
305
+ kalau
306
+ kalaulah
307
+ kalaupun
308
+ kalian
309
+ kalo
310
+ kami
311
+ kamilah
312
+ kamu
313
+ kamulah
314
+ kan
315
+ kapan
316
+ kapankah
317
+ kapanpun
318
+ karena
319
+ karenanya
320
+ kasus
321
+ kata
322
+ katakan
323
+ katakanlah
324
+ katanya
325
+ ke
326
+ keadaan
327
+ kebetulan
328
+ kecil
329
+ kedua
330
+ keduanya
331
+ keinginan
332
+ kelamaan
333
+ kelihatan
334
+ kelihatannya
335
+ kelima
336
+ keluar
337
+ kembali
338
+ kemudian
339
+ kemungkinan
340
+ kemungkinannya
341
+ kenapa
342
+ kepada
343
+ kepadanya
344
+ kesampaian
345
+ keseluruhan
346
+ keseluruhannya
347
+ keterlaluan
348
+ ketika
349
+ khususnya
350
+ kini
351
+ kinilah
352
+ kira
353
+ kira-kira
354
+ kiranya
355
+ kita
356
+ kitalah
357
+ kok
358
+ kurang
359
+ lagi
360
+ lagian
361
+ lah
362
+ lain
363
+ lainnya
364
+ lalu
365
+ lama
366
+ lamanya
367
+ lanjut
368
+ lanjutnya
369
+ lebih
370
+ lewat
371
+ lima
372
+ luar
373
+ macam
374
+ maka
375
+ makanya
376
+ makin
377
+ malah
378
+ malahan
379
+ mampu
380
+ mampukah
381
+ mana
382
+ manakala
383
+ manalagi
384
+ mas
385
+ masa
386
+ masalah
387
+ masalahnya
388
+ masih
389
+ masihkah
390
+ masing
391
+ masing-masing
392
+ mau
393
+ maupun
394
+ melainkan
395
+ melakukan
396
+ melalui
397
+ melihat
398
+ melihatnya
399
+ memang
400
+ memastikan
401
+ memberi
402
+ memberikan
403
+ membuat
404
+ memerlukan
405
+ memihak
406
+ meminta
407
+ memintakan
408
+ memisalkan
409
+ memperbuat
410
+ mempergunakan
411
+ memperkirakan
412
+ memperlihatkan
413
+ mempersiapkan
414
+ mempersoalkan
415
+ mempertanyakan
416
+ mempunyai
417
+ memulai
418
+ memungkinkan
419
+ menaiki
420
+ menambahkan
421
+ menandaskan
422
+ menanti
423
+ menanti-nanti
424
+ menantikan
425
+ menanya
426
+ menanyai
427
+ menanyakan
428
+ mendapat
429
+ mendapatkan
430
+ mendatang
431
+ mendatangi
432
+ mendatangkan
433
+ menegaskan
434
+ mengakhiri
435
+ mengapa
436
+ mengatakan
437
+ mengatakannya
438
+ mengenai
439
+ mengerjakan
440
+ mengetahui
441
+ menggunakan
442
+ menghendaki
443
+ mengibaratkan
444
+ mengibaratkannya
445
+ mengingat
446
+ mengingatkan
447
+ menginginkan
448
+ mengira
449
+ mengucapkan
450
+ mengucapkannya
451
+ mengungkapkan
452
+ menjadi
453
+ menjawab
454
+ menjelaskan
455
+ menuju
456
+ menunjuk
457
+ menunjuki
458
+ menunjukkan
459
+ menunjuknya
460
+ menurut
461
+ menuturkan
462
+ menyampaikan
463
+ menyangkut
464
+ menyatakan
465
+ menyebutkan
466
+ menyeluruh
467
+ menyiapkan
468
+ merasa
469
+ mereka
470
+ merekalah
471
+ merupakan
472
+ meski
473
+ meskipun
474
+ meyakini
475
+ meyakinkan
476
+ minta
477
+ mirip
478
+ misal
479
+ misalkan
480
+ misalnya
481
+ mula
482
+ mulai
483
+ mulailah
484
+ mulanya
485
+ mungkin
486
+ mungkinkah
487
+ nah
488
+ naik
489
+ namun
490
+ nanti
491
+ nantinya
492
+ nih
493
+ nyaris
494
+ nyatanya
495
+ oleh
496
+ olehnya
497
+ opo
498
+ pada
499
+ padahal
500
+ padanya
501
+ pak
502
+ paling
503
+ panjang
504
+ pantas
505
+ para
506
+ pas
507
+ pasti
508
+ pastilah
509
+ penting
510
+ pentingnya
511
+ per
512
+ percuma
513
+ perlu
514
+ perlukah
515
+ perlunya
516
+ pernah
517
+ persoalan
518
+ pertama
519
+ pertama-tama
520
+ pertanyaan
521
+ pertanyakan
522
+ pihak
523
+ pihaknya
524
+ pukul
525
+ pula
526
+ pun
527
+ punya
528
+ rasa
529
+ rasanya
530
+ rata
531
+ rupanya
532
+ saat
533
+ saatnya
534
+ saja
535
+ sajalah
536
+ saling
537
+ sama
538
+ sama-sama
539
+ sambil
540
+ sampai
541
+ sampai-sampai
542
+ sampaikan
543
+ sana
544
+ sangat
545
+ sangatlah
546
+ satu
547
+ saya
548
+ sayalah
549
+ se
550
+ seandainya
551
+ sebab
552
+ sebabnya
553
+ sebagai
554
+ sebagaimana
555
+ sebagainya
556
+ sebagian
557
+ sebaik
558
+ sebaik-baiknya
559
+ sebaiknya
560
+ sebaliknya
561
+ sebanyak
562
+ sebegini
563
+ sebegitu
564
+ sebelum
565
+ sebelumnya
566
+ sebenarnya
567
+ seberapa
568
+ sebesar
569
+ sebetulnya
570
+ sebisanya
571
+ sebuah
572
+ sebut
573
+ sebutlah
574
+ sebutnya
575
+ secara
576
+ secukupnya
577
+ sedang
578
+ sedangkan
579
+ sedemikian
580
+ sedikit
581
+ sedikitnya
582
+ seenaknya
583
+ segala
584
+ segalanya
585
+ segera
586
+ seharusnya
587
+ sehingga
588
+ seingat
589
+ sejak
590
+ sejauh
591
+ sejenak
592
+ sejumlah
593
+ sekadar
594
+ sekadarnya
595
+ sekali
596
+ sekali-kali
597
+ sekalian
598
+ sekaligus
599
+ sekalipun
600
+ sekarang
601
+ sekecil
602
+ seketika
603
+ sekian
604
+ sekiranya
605
+ sekitar
606
+ sekitarnya
607
+ sekurang-kurangnya
608
+ sekurangnya
609
+ sela
610
+ selain
611
+ selaku
612
+ selalu
613
+ selama
614
+ selama-lamanya
615
+ selamanya
616
+ selanjutnya
617
+ seluruh
618
+ seluruhnya
619
+ semacam
620
+ semakin
621
+ semampu
622
+ semampunya
623
+ semasa
624
+ semasih
625
+ semata
626
+ semata-mata
627
+ semaunya
628
+ sementara
629
+ semisal
630
+ semisalnya
631
+ semoga
632
+ sempat
633
+ semua
634
+ semuanya
635
+ semula
636
+ sendiri
637
+ sendirian
638
+ sendirinya
639
+ seolah
640
+ seolah-olah
641
+ seorang
642
+ sepanjang
643
+ sepantasnya
644
+ sepantasnyalah
645
+ seperlunya
646
+ seperti
647
+ sepertinya
648
+ sepihak
649
+ sering
650
+ seringnya
651
+ serta
652
+ serupa
653
+ sesaat
654
+ sesama
655
+ sesampai
656
+ sesegera
657
+ sesekali
658
+ seseorang
659
+ sesuatu
660
+ sesuatunya
661
+ sesudah
662
+ sesudahnya
663
+ setelah
664
+ setempat
665
+ setengah
666
+ seterusnya
667
+ setiap
668
+ setiba
669
+ setibanya
670
+ setidak-tidaknya
671
+ setidaknya
672
+ setinggi
673
+ seusai
674
+ sewaktu
675
+ siap
676
+ siapa
677
+ siapakah
678
+ siapapun
679
+ sini
680
+ sinilah
681
+ skrg
682
+ soal
683
+ soalnya
684
+ suatu
685
+ sudah
686
+ sudahkah
687
+ sudahlah
688
+ supaya
689
+ tadi
690
+ tadinya
691
+ tahu
692
+ tahun
693
+ tak
694
+ tambah
695
+ tambahnya
696
+ tampak
697
+ tampaknya
698
+ tandas
699
+ tandasnya
700
+ tanpa
701
+ tanya
702
+ tanyakan
703
+ tanyanya
704
+ tapi
705
+ tdk
706
+ tegas
707
+ tegasnya
708
+ telah
709
+ tempat
710
+ tengah
711
+ tentang
712
+ tentu
713
+ tentulah
714
+ tentunya
715
+ tepat
716
+ terakhir
717
+ terasa
718
+ terbanyak
719
+ terdahulu
720
+ terdapat
721
+ terdiri
722
+ terhadap
723
+ terhadapnya
724
+ teringat
725
+ teringat-ingat
726
+ terjadi
727
+ terjadilah
728
+ terjadinya
729
+ terkira
730
+ terlalu
731
+ terlebih
732
+ terlihat
733
+ termasuk
734
+ ternyata
735
+ tersampaikan
736
+ tersebut
737
+ tersebutlah
738
+ tertentu
739
+ tertuju
740
+ terus
741
+ terutama
742
+ tetap
743
+ tetapi
744
+ tiap
745
+ tiba
746
+ tiba-tiba
747
+ tidak
748
+ tidakkah
749
+ tidaklah
750
+ tiga
751
+ tinggi
752
+ toh
753
+ tunjuk
754
+ turut
755
+ tutur
756
+ tuturnya
757
+ ucap
758
+ ucapnya
759
+ udah
760
+ udeh
761
+ ujar
762
+ ujarnya
763
+ umum
764
+ umumnya
765
+ ungkap
766
+ ungkapnya
767
+ untuk
768
+ usah
769
+ usai
770
+ via
771
+ waduh
772
+ wah
773
+ wahai
774
+ waktu
775
+ waktunya
776
+ walau
777
+ walaupun
778
+ wong
779
+ ya
780
+ yaitu
781
+ yakin
782
+ yakni
783
+ yang
784
+ yg