humanizer-lint 0.2.4 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -23
- package/SKILL.md +134 -116
- package/package.json +26 -4
- package/rules/de-slop.json +190 -0
- package/rules/en-slop.json +50 -49
- package/rules/es-slop.json +190 -0
- package/rules/fr-slop.json +190 -0
- package/rules/id-slop.json +58 -57
- package/rules/ms-slop.json +190 -0
- package/rules/pt-slop.json +190 -0
- package/rules/zh-slop.json +190 -0
- package/scripts/analyze.mjs +9 -3
- package/scripts/core/analyzer-core.mjs +51 -24
- package/scripts/utils/tokenizer.mjs +149 -82
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "fr",
|
|
3
|
+
"stopwords": [
|
|
4
|
+
"de",
|
|
5
|
+
"la",
|
|
6
|
+
"le",
|
|
7
|
+
"et",
|
|
8
|
+
"les",
|
|
9
|
+
"des",
|
|
10
|
+
"en",
|
|
11
|
+
"un",
|
|
12
|
+
"du",
|
|
13
|
+
"une",
|
|
14
|
+
"que",
|
|
15
|
+
"est",
|
|
16
|
+
"pour",
|
|
17
|
+
"qui",
|
|
18
|
+
"dans",
|
|
19
|
+
"par",
|
|
20
|
+
"sur",
|
|
21
|
+
"pas",
|
|
22
|
+
"plus",
|
|
23
|
+
"avec"
|
|
24
|
+
],
|
|
25
|
+
"patterns": [
|
|
26
|
+
{
|
|
27
|
+
"id": "FR001",
|
|
28
|
+
"type": "SLOP_PHRASE",
|
|
29
|
+
"pattern": "dans\\s+le\\s+monde\\s+trépidant\\s+d'aujourd'hui",
|
|
30
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "FR002",
|
|
34
|
+
"type": "SLOP_PHRASE",
|
|
35
|
+
"pattern": "il\\s+est\\s+important\\s+de\\s+noter\\s+que",
|
|
36
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "FR003",
|
|
40
|
+
"type": "SLOP_PHRASE",
|
|
41
|
+
"pattern": "force\\s+est\\s+de\\s+constater\\s+que",
|
|
42
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "FR004",
|
|
46
|
+
"type": "SLOP_PHRASE",
|
|
47
|
+
"pattern": "en\\s+conclusion",
|
|
48
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "FR005",
|
|
52
|
+
"type": "SLOP_PHRASE",
|
|
53
|
+
"pattern": "en\\s+résumé",
|
|
54
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "FR006",
|
|
58
|
+
"type": "SLOP_PHRASE",
|
|
59
|
+
"pattern": "de\\s+plus",
|
|
60
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "FR007",
|
|
64
|
+
"type": "SLOP_PHRASE",
|
|
65
|
+
"pattern": "en\\s+outre",
|
|
66
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "FR008",
|
|
70
|
+
"type": "SLOP_PHRASE",
|
|
71
|
+
"pattern": "joue\\s+un\\s+rôle\\s+crucial",
|
|
72
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "FR009",
|
|
76
|
+
"type": "SLOP_PHRASE",
|
|
77
|
+
"pattern": "une\\s+tapisserie\\s+de",
|
|
78
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "FR010",
|
|
82
|
+
"type": "SLOP_PHRASE",
|
|
83
|
+
"pattern": "un\\s+témoignage\\s+de",
|
|
84
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "FR011",
|
|
88
|
+
"type": "SLOP_PHRASE",
|
|
89
|
+
"pattern": "plonger\\s+dans",
|
|
90
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "FR012",
|
|
94
|
+
"type": "SLOP_PHRASE",
|
|
95
|
+
"pattern": "non\\s+seulement",
|
|
96
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "FR013",
|
|
100
|
+
"type": "SLOP_PHRASE",
|
|
101
|
+
"pattern": "mais\\s+aussi",
|
|
102
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "FR014",
|
|
106
|
+
"type": "SLOP_PHRASE",
|
|
107
|
+
"pattern": "à\\s+l'ère\\s+du\\s+numérique",
|
|
108
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "FR015",
|
|
112
|
+
"type": "SLOP_PHRASE",
|
|
113
|
+
"pattern": "il\\s+convient\\s+de\\s+souligner",
|
|
114
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "FR016",
|
|
118
|
+
"type": "SLOP_PHRASE",
|
|
119
|
+
"pattern": "sans\\s+aucun\\s+doute",
|
|
120
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "FR017",
|
|
124
|
+
"type": "SLOP_PHRASE",
|
|
125
|
+
"pattern": "dans\\s+le\\s+paysage\\s+actuel",
|
|
126
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"id": "FR018",
|
|
130
|
+
"type": "SLOP_PHRASE",
|
|
131
|
+
"pattern": "au\\s+fil\\s+du\\s+temps",
|
|
132
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"id": "FR019",
|
|
136
|
+
"type": "SLOP_PHRASE",
|
|
137
|
+
"pattern": "en\\s+fin\\s+de\\s+compte",
|
|
138
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"id": "FR020",
|
|
142
|
+
"type": "SLOP_PHRASE",
|
|
143
|
+
"pattern": "ouvrir\\s+la\\s+voie\\s+à",
|
|
144
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "FR021",
|
|
148
|
+
"type": "SLOP_PHRASE",
|
|
149
|
+
"pattern": "changer\\s+la\\s+donne",
|
|
150
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"id": "FR022",
|
|
154
|
+
"type": "SLOP_PHRASE",
|
|
155
|
+
"pattern": "dans\\s+un\\s+monde\\s+en\\s+constante\\s+évolution",
|
|
156
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"id": "FR023",
|
|
160
|
+
"type": "SLOP_PHRASE",
|
|
161
|
+
"pattern": "une\\s+approche\\s+holistique",
|
|
162
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"id": "FR024",
|
|
166
|
+
"type": "SLOP_PHRASE",
|
|
167
|
+
"pattern": "des\\s+informations\\s+précieuses",
|
|
168
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"id": "FR025",
|
|
172
|
+
"type": "SLOP_PHRASE",
|
|
173
|
+
"pattern": "il\\s+est\\s+essentiel\\s+de",
|
|
174
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "FR026",
|
|
178
|
+
"type": "DEFINITIONAL_OPENING",
|
|
179
|
+
"pattern": "^(?:Dans le contexte de|Dans le domaine de|Dans le monde de) [\\w\\s]+,",
|
|
180
|
+
"scope": "paragraph-start",
|
|
181
|
+
"fixInstruction": "Start with the specific subject or event instead of a generic framing clause."
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"id": "FR027",
|
|
185
|
+
"type": "STRUCTURAL_CLICHE",
|
|
186
|
+
"pattern": "\\bnon\\s+seulement\\b[\\s\\S]{0,100}?\\bmais\\s+aussi\\b",
|
|
187
|
+
"fixInstruction": "State both claims directly without the stock paired construction."
|
|
188
|
+
}
|
|
189
|
+
]
|
|
190
|
+
}
|
package/rules/id-slop.json
CHANGED
|
@@ -1,57 +1,58 @@
|
|
|
1
|
-
{
|
|
2
|
-
"language": "id",
|
|
3
|
-
"
|
|
4
|
-
|
|
5
|
-
{"id":"
|
|
6
|
-
{"id":"
|
|
7
|
-
{"id":"
|
|
8
|
-
{"id":"
|
|
9
|
-
{"id":"
|
|
10
|
-
{"id":"
|
|
11
|
-
{"id":"
|
|
12
|
-
{"id":"
|
|
13
|
-
{"id":"
|
|
14
|
-
{"id":"
|
|
15
|
-
{"id":"
|
|
16
|
-
{"id":"
|
|
17
|
-
{"id":"
|
|
18
|
-
{"id":"
|
|
19
|
-
{"id":"
|
|
20
|
-
{"id":"
|
|
21
|
-
{"id":"
|
|
22
|
-
{"id":"
|
|
23
|
-
{"id":"
|
|
24
|
-
{"id":"
|
|
25
|
-
{"id":"
|
|
26
|
-
{"id":"
|
|
27
|
-
{"id":"
|
|
28
|
-
{"id":"
|
|
29
|
-
{"id":"
|
|
30
|
-
{"id":"
|
|
31
|
-
{"id":"
|
|
32
|
-
{"id":"
|
|
33
|
-
{"id":"
|
|
34
|
-
{"id":"
|
|
35
|
-
{"id":"
|
|
36
|
-
{"id":"
|
|
37
|
-
{"id":"
|
|
38
|
-
{"id":"
|
|
39
|
-
{"id":"
|
|
40
|
-
{"id":"
|
|
41
|
-
{"id":"
|
|
42
|
-
{"id":"
|
|
43
|
-
{"id":"
|
|
44
|
-
{"id":"
|
|
45
|
-
{"id":"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
|
|
57
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"language": "id",
|
|
3
|
+
"stopwords": ["yang", "dan", "di", "ini", "untuk", "dengan", "dari", "pada", "dalam", "tidak", "akan", "atau", "juga", "oleh", "adalah", "sebagai", "bahwa", "dapat", "karena", "tersebut"],
|
|
4
|
+
"patterns": [
|
|
5
|
+
{"id":"ID001","type":"SLOP_PHRASE","pattern":"\\bdi era digital\\b","fixInstruction":"Mulai langsung dari subjek atau fakta konkret."},
|
|
6
|
+
{"id":"ID002","type":"SLOP_PHRASE","pattern":"\\bdi tengah pesatnya\\b","fixInstruction":"Hapus pembuka umum dan sebutkan perubahan yang dimaksud."},
|
|
7
|
+
{"id":"ID003","type":"SLOP_PHRASE","pattern":"\\btidak dapat dipungkiri\\b","fixInstruction":"Nyatakan klaim secara langsung tanpa pembuka klise."},
|
|
8
|
+
{"id":"ID004","type":"SLOP_PHRASE","pattern":"\\btak dapat dipungkiri\\b","fixInstruction":"Nyatakan klaim secara langsung tanpa pembuka klise."},
|
|
9
|
+
{"id":"ID005","type":"SLOP_PHRASE","pattern":"\\bpenting untuk diingat\\b","fixInstruction":"Hapus penanda kepentingan dan tulis fakta yang perlu diingat."},
|
|
10
|
+
{"id":"ID006","type":"SLOP_PHRASE","pattern":"\\bperlu dicatat bahwa\\b","fixInstruction":"Hapus pengantar dan mulai dari informasi intinya."},
|
|
11
|
+
{"id":"ID007","type":"SLOP_PHRASE","pattern":"\\bsebagai kesimpulan\\b","fixInstruction":"Hapus kesimpulan generik atau tutup dengan fakta terakhir."},
|
|
12
|
+
{"id":"ID008","type":"SLOP_PHRASE","pattern":"\\bsecara keseluruhan\\b","fixInstruction":"Ganti rangkuman umum dengan kesimpulan yang spesifik."},
|
|
13
|
+
{"id":"ID009","type":"SLOP_PHRASE","pattern":"\\blebih lanjut\\s*,","fixInstruction":"Hubungkan kalimat berdasarkan maknanya, bukan transisi otomatis."},
|
|
14
|
+
{"id":"ID010","type":"SLOP_PHRASE","pattern":"\\bnamun demikian\\s*,","fixInstruction":"Gunakan kontras langsung jika memang ada pertentangan."},
|
|
15
|
+
{"id":"ID011","type":"SLOP_PHRASE","pattern":"\\bselain itu\\s*,","maxOccurrences":1,"perWords":300,"fixInstruction":"Pertahankan paling banyak satu kali atau gunakan hubungan yang lebih spesifik."},
|
|
16
|
+
{"id":"ID012","type":"SLOP_PHRASE","pattern":"\\bmari kita bahas\\b","fixInstruction":"Mulai pembahasan tanpa mengumumkannya."},
|
|
17
|
+
{"id":"ID013","type":"SLOP_PHRASE","pattern":"\\bmenyelami lebih dalam\\b","fixInstruction":"Sebutkan aspek yang dianalisis secara langsung."},
|
|
18
|
+
{"id":"ID014","type":"SLOP_PHRASE","pattern":"\\bbukan sekadar\\b","fixInstruction":"Nyatakan fungsi atau manfaat utama secara langsung."},
|
|
19
|
+
{"id":"ID015","type":"SLOP_PHRASE","pattern":"\\btidak hanya[\\s\\S]{0,80}?tetapi juga\\b","maxOccurrences":1,"perWords":300,"fixInstruction":"Pisahkan kedua klaim atau nyatakan hubungan tanpa formula biner."},
|
|
20
|
+
{"id":"ID016","type":"SLOP_PHRASE","pattern":"\\bhal ini menunjukkan bahwa\\b","fixInstruction":"Sebutkan bukti dan kesimpulannya secara langsung."},
|
|
21
|
+
{"id":"ID017","type":"SLOP_PHRASE","pattern":"\\bdapat disimpulkan bahwa\\b","fixInstruction":"Tulis kesimpulan tanpa frasa pengantar."},
|
|
22
|
+
{"id":"ID018","type":"SLOP_PHRASE","pattern":"\\bseiring dengan perkembangan zaman\\b","fixInstruction":"Sebutkan periode atau perubahan yang konkret."},
|
|
23
|
+
{"id":"ID019","type":"SLOP_PHRASE","pattern":"\\bdi zaman yang serba\\b","fixInstruction":"Ganti generalisasi dengan konteks yang nyata."},
|
|
24
|
+
{"id":"ID020","type":"SLOP_PHRASE","pattern":"\\bdi dunia yang semakin\\b","fixInstruction":"Sebutkan kondisi yang benar-benar berubah."},
|
|
25
|
+
{"id":"ID021","type":"SLOP_PHRASE","pattern":"\\bdalam lanskap yang\\b","fixInstruction":"Sebutkan bidang atau keadaan secara langsung."},
|
|
26
|
+
{"id":"ID022","type":"SLOP_PHRASE","pattern":"\\bmemainkan peran penting\\b","fixInstruction":"Jelaskan tindakan atau dampak konkretnya."},
|
|
27
|
+
{"id":"ID023","type":"SLOP_PHRASE","pattern":"\\bmenjadi kunci utama\\b","fixInstruction":"Jelaskan syarat atau mekanisme yang sebenarnya."},
|
|
28
|
+
{"id":"ID024","type":"SLOP_PHRASE","pattern":"\\blangkah yang tepat\\b","fixInstruction":"Sebutkan langkah yang dimaksud."},
|
|
29
|
+
{"id":"ID025","type":"SLOP_PHRASE","pattern":"\\blangkah strategis\\b","fixInstruction":"Sebutkan tindakan dan hasil yang dituju."},
|
|
30
|
+
{"id":"ID026","type":"SLOP_PHRASE","pattern":"\\bsolusi inovatif\\b","fixInstruction":"Jelaskan cara kerja solusi tanpa label promosi."},
|
|
31
|
+
{"id":"ID027","type":"SLOP_PHRASE","pattern":"\\bpendekatan holistik\\b","fixInstruction":"Sebutkan bagian yang digabungkan oleh pendekatan tersebut."},
|
|
32
|
+
{"id":"ID028","type":"SLOP_PHRASE","pattern":"\\bberbagai aspek\\b","fixInstruction":"Sebutkan aspek yang relevan."},
|
|
33
|
+
{"id":"ID029","type":"SLOP_PHRASE","pattern":"\\bdampak yang signifikan\\b","fixInstruction":"Jelaskan dampak dan ukurannya jika tersedia."},
|
|
34
|
+
{"id":"ID030","type":"SLOP_PHRASE","pattern":"\\bhasil yang optimal\\b","fixInstruction":"Nyatakan hasil yang dapat diamati atau diukur."},
|
|
35
|
+
{"id":"ID031","type":"SLOP_PHRASE","pattern":"\\bsecara efektif dan efisien\\b","fixInstruction":"Jelaskan perbaikan waktu, biaya, atau mutu secara spesifik."},
|
|
36
|
+
{"id":"ID032","type":"SLOP_PHRASE","pattern":"\\bpada akhirnya\\s*,","fixInstruction":"Tutup langsung dengan akibat atau keputusan akhir."},
|
|
37
|
+
{"id":"ID033","type":"SLOP_PHRASE","pattern":"\\bdengan demikian\\s*,","fixInstruction":"Nyatakan akibatnya tanpa transisi otomatis."},
|
|
38
|
+
{"id":"ID034","type":"SLOP_PHRASE","pattern":"\\boleh karena itu\\s*,","fixInstruction":"Hubungkan sebab dan akibat secara langsung."},
|
|
39
|
+
{"id":"ID035","type":"SLOP_PHRASE","pattern":"\\bpada dasarnya\\s*,","fixInstruction":"Hapus pengantar dan nyatakan pokoknya."},
|
|
40
|
+
{"id":"ID036","type":"SLOP_PHRASE","pattern":"\\bperlu dipahami bahwa\\b","fixInstruction":"Mulai dari informasi yang perlu dipahami."},
|
|
41
|
+
{"id":"ID037","type":"SLOP_PHRASE","pattern":"\\btentu saja\\s*,","fixInstruction":"Hapus penegasan otomatis jika tidak menambah makna."},
|
|
42
|
+
{"id":"ID038","type":"SLOP_PHRASE","pattern":"\\btanpa diragukan lagi\\b","fixInstruction":"Ganti kepastian retoris dengan bukti atau klaim langsung."},
|
|
43
|
+
{"id":"ID039","type":"SLOP_PHRASE","pattern":"\\bmembuka peluang baru\\b","fixInstruction":"Sebutkan peluang yang benar-benar tersedia."},
|
|
44
|
+
{"id":"ID040","type":"SLOP_PHRASE","pattern":"\\bmendorong pertumbuhan berkelanjutan\\b","fixInstruction":"Sebutkan mekanisme dan indikator pertumbuhannya."},
|
|
45
|
+
{"id":"ID041","type":"DEFINITIONAL_OPENING","scope":"paragraph-start","pattern":"^[A-ZÀ-ÖØ-Þ][\\p{L}\\p{N}_\\s'\"-]{2,80}\\s+adalah\\s+(?:sebuah|suatu|proses|metode|sistem|cara|langkah|pendekatan)\\b","fixInstruction":"Ganti definisi kaku dengan fungsi, contoh, atau fakta konkret."},
|
|
46
|
+
{"id":"ID042","type":"DEFINITIONAL_OPENING","scope":"paragraph-start","pattern":"^Dalam (?:konteks|dunia|ranah) [\\p{L}\\p{N}\\s-]+,","fixInstruction":"Mulai langsung dari subjek yang dibahas."}
|
|
47
|
+
],
|
|
48
|
+
"morphology": {
|
|
49
|
+
"nominalizationPattern": "^(?:peng|pen|pem|peny|pe|ke)[a-z]{5,}an$",
|
|
50
|
+
"nominalizationWhitelist": ["perusahaan","pekerjaan","pertanyaan","pernyataan","perjalanan","permainan","peralatan","peraturan","perubahan","perbedaan","persamaan","pertemuan","pernikahan","pendidikan","pemerintahan","pembangunan","pengalaman","pengetahuan","pendapatan","pengeluaran","kegiatan","kesehatan","kebutuhan","keputusan","keamanan","kecepatan","kekuatan","kesempatan","kesalahan","ketentuan","keuangan","kebijakan","kehidupan","kemampuan","kenyataan","kepercayaan","keterangan","kewajiban","kerusakan","keuntungan","kerugian","kemajuan","kehadiran","kebiasaan"],
|
|
51
|
+
"nominalizationMaxRatio": 0.045,
|
|
52
|
+
"passivePattern": "^di[a-z]{4,}(?:kan|i)$",
|
|
53
|
+
"loanwordExclusionPattern": "^(?:diskusi|dinamika|dimensi|direktori|distribusi|divisi|disiplin|digital|diagnosa|diagram|dialek|dialog|diameter|dilema|dinamis|diplomasi|direktur|disertasi|diskon|divergensi|diversifikasi|dedikasi|definisi|delegasi|demokrasi|depresi|deskripsi|destinasi|deteksi|deviasi|dominasi|donasi|durasi)$",
|
|
54
|
+
"loanwordSuffixExclusionPattern": "(?:asi|isi|ensi|uksi|logi|nomi|grafi|metri|krasi|fobi|pati|terapi|stasi|nasti)$",
|
|
55
|
+
"passiveMaxRatio": 0.035,
|
|
56
|
+
"subordinateOpeningPattern": "^(?:Dengan menggunakan|Untuk mencapai|Dalam rangka|Melalui pendekatan|Guna memastikan|Dengan memanfaatkan)\\b"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "ms",
|
|
3
|
+
"stopwords": [
|
|
4
|
+
"yang",
|
|
5
|
+
"dan",
|
|
6
|
+
"di",
|
|
7
|
+
"ini",
|
|
8
|
+
"untuk",
|
|
9
|
+
"dengan",
|
|
10
|
+
"tidak",
|
|
11
|
+
"dalam",
|
|
12
|
+
"daripada",
|
|
13
|
+
"pada",
|
|
14
|
+
"adalah",
|
|
15
|
+
"kerana",
|
|
16
|
+
"boleh",
|
|
17
|
+
"bagi",
|
|
18
|
+
"bahawa",
|
|
19
|
+
"oleh",
|
|
20
|
+
"juga",
|
|
21
|
+
"akan",
|
|
22
|
+
"kepada",
|
|
23
|
+
"mereka"
|
|
24
|
+
],
|
|
25
|
+
"patterns": [
|
|
26
|
+
{
|
|
27
|
+
"id": "MS001",
|
|
28
|
+
"type": "SLOP_PHRASE",
|
|
29
|
+
"pattern": "dalam\\s+era\\s+digital\\s+kini",
|
|
30
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "MS002",
|
|
34
|
+
"type": "SLOP_PHRASE",
|
|
35
|
+
"pattern": "tidak\\s+dapat\\s+dinafikan\\s+bahawa",
|
|
36
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "MS003",
|
|
40
|
+
"type": "SLOP_PHRASE",
|
|
41
|
+
"pattern": "penting\\s+untuk\\s+diingat",
|
|
42
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "MS004",
|
|
46
|
+
"type": "SLOP_PHRASE",
|
|
47
|
+
"pattern": "perlu\\s+dinyatakan\\s+bahawa",
|
|
48
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "MS005",
|
|
52
|
+
"type": "SLOP_PHRASE",
|
|
53
|
+
"pattern": "secara\\s+keseluruhannya",
|
|
54
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "MS006",
|
|
58
|
+
"type": "SLOP_PHRASE",
|
|
59
|
+
"pattern": "kesimpulannya",
|
|
60
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "MS007",
|
|
64
|
+
"type": "SLOP_PHRASE",
|
|
65
|
+
"pattern": "tambahan\\s+pula",
|
|
66
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "MS008",
|
|
70
|
+
"type": "SLOP_PHRASE",
|
|
71
|
+
"pattern": "selain\\s+itu",
|
|
72
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "MS009",
|
|
76
|
+
"type": "SLOP_PHRASE",
|
|
77
|
+
"pattern": "memainkan\\s+peranan\\s+penting",
|
|
78
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "MS010",
|
|
82
|
+
"type": "SLOP_PHRASE",
|
|
83
|
+
"pattern": "bukan\\s+sahaja",
|
|
84
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "MS011",
|
|
88
|
+
"type": "SLOP_PHRASE",
|
|
89
|
+
"pattern": "malah",
|
|
90
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "MS012",
|
|
94
|
+
"type": "SLOP_PHRASE",
|
|
95
|
+
"pattern": "seiring\\s+dengan\\s+perkembangan\\s+pesat",
|
|
96
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "MS013",
|
|
100
|
+
"type": "SLOP_PHRASE",
|
|
101
|
+
"pattern": "mari\\s+kita\\s+terokai",
|
|
102
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "MS014",
|
|
106
|
+
"type": "SLOP_PHRASE",
|
|
107
|
+
"pattern": "hal\\s+ini\\s+membuktikan\\s+bahawa",
|
|
108
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "MS015",
|
|
112
|
+
"type": "SLOP_PHRASE",
|
|
113
|
+
"pattern": "dalam\\s+dunia\\s+yang\\s+pantas\\s+berubah",
|
|
114
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "MS016",
|
|
118
|
+
"type": "SLOP_PHRASE",
|
|
119
|
+
"pattern": "perlu\\s+diberi\\s+perhatian",
|
|
120
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "MS017",
|
|
124
|
+
"type": "SLOP_PHRASE",
|
|
125
|
+
"pattern": "tanpa\\s+ragu-ragu",
|
|
126
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"id": "MS018",
|
|
130
|
+
"type": "SLOP_PHRASE",
|
|
131
|
+
"pattern": "sebagai\\s+kesimpulan",
|
|
132
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"id": "MS019",
|
|
136
|
+
"type": "SLOP_PHRASE",
|
|
137
|
+
"pattern": "pada\\s+masa\\s+kini",
|
|
138
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"id": "MS020",
|
|
142
|
+
"type": "SLOP_PHRASE",
|
|
143
|
+
"pattern": "membuka\\s+peluang\\s+baharu",
|
|
144
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "MS021",
|
|
148
|
+
"type": "SLOP_PHRASE",
|
|
149
|
+
"pattern": "satu\\s+langkah\\s+ke\\s+hadapan",
|
|
150
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"id": "MS022",
|
|
154
|
+
"type": "SLOP_PHRASE",
|
|
155
|
+
"pattern": "memberi\\s+impak\\s+besar",
|
|
156
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"id": "MS023",
|
|
160
|
+
"type": "SLOP_PHRASE",
|
|
161
|
+
"pattern": "dalam\\s+landskap\\s+digital",
|
|
162
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"id": "MS024",
|
|
166
|
+
"type": "SLOP_PHRASE",
|
|
167
|
+
"pattern": "menjadi\\s+semakin\\s+penting",
|
|
168
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"id": "MS025",
|
|
172
|
+
"type": "SLOP_PHRASE",
|
|
173
|
+
"pattern": "secara\\s+tidak\\s+langsung",
|
|
174
|
+
"fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action."
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "MS026",
|
|
178
|
+
"type": "DEFINITIONAL_OPENING",
|
|
179
|
+
"pattern": "^(?:Dalam konteks|Dalam dunia|Dalam bidang) [\\w\\s]+,",
|
|
180
|
+
"scope": "paragraph-start",
|
|
181
|
+
"fixInstruction": "Start with the specific subject or event instead of a generic framing clause."
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"id": "MS027",
|
|
185
|
+
"type": "STRUCTURAL_CLICHE",
|
|
186
|
+
"pattern": "\\bbukan\\s+sahaja\\b[\\s\\S]{0,100}?\\bmalah\\b",
|
|
187
|
+
"fixInstruction": "State both claims directly without the stock paired construction."
|
|
188
|
+
}
|
|
189
|
+
]
|
|
190
|
+
}
|