prpm-dbp 0.15.0 → 0.16.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/SKILL.md +17 -0
- package/bin/cli.js +14 -2
- package/package.json +1 -1
- package/src/tukar.js +18 -3
package/SKILL.md
CHANGED
|
@@ -30,6 +30,23 @@ Model boleh hasilkan Jawi yang nampak betul tetapi salah, dan pembaca tidak dapa
|
|
|
30
30
|
|
|
31
31
|
Bilangan rujukan itu datang daripada panel korpus DBP sendiri, bukan anggaran. Ia **mengisih** calon supaya yang lazim dilihat dahulu; ia **tidak memilih**. Perkataan jarang tetap betul apabila ayat menghendakinya.
|
|
32
32
|
|
|
33
|
+
0e. **Pembahagian kerja: alat mengemukakan, ANDA memutuskan.** CLI tidak boleh membaca konteks; anda boleh. Jangan sesekali menghantar `mengikut|mengekot` sebagai hasil akhir kepada pengguna.
|
|
34
|
+
|
|
35
|
+
Aliran yang betul:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npx prpm-dbp rumi teks.txt --pilih --konteks
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`--pilih` menghasilkan teks bersih dengan memilih calon paling lazim, dan menyenaraikan setiap pilihan itu:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
itu mengikut sukatan pelajaran.
|
|
45
|
+
dipilih ikut kekerapan (SEMAK konteks): مڠيکوت -> mengikut [lain: mengekot]
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Setiap baris `dipilih` ialah tekaan berasaskan kekerapan, **bukan pemahaman konteks**. Baca ayatnya. Dalam contoh di atas `mengikut sukatan pelajaran` jelas betul dan `mengekot` mustahil. Tetapi dalam ayat tentang orang kesejukan merapatkan tangan ke badan, `mengekot` yang betul walaupun kekerapannya 6 berbanding 2439. Kekerapan ialah tekaan terbaik tanpa konteks; ia kalah kepada konteks setiap kali.
|
|
49
|
+
|
|
33
50
|
1. **Jangan hantar Jawi yang belum disemak.** Setiap perkataan Jawi dalam output mesti datang dari PRPM atau ditanda belum disahkan.
|
|
34
51
|
2. **Tanda, jangan sekat.** Kalau satu perkataan tiada dalam PRPM, hantar kerja itu dan senaraikan perkataan berkenaan di hujung. Jangan tahan seluruh dokumen sebab satu nama khas.
|
|
35
52
|
3. **Sebut sumber.** PRPM ada beberapa kamus. Bila petik definisi, sebut kamus mana (Kamus Dewan Edisi Keempat, Kamus Pelajar Edisi Kedua, dan lain-lain).
|
package/bin/cli.js
CHANGED
|
@@ -38,6 +38,8 @@ Pilihan: --refresh --had <n> --delay <ms> --json --cepat
|
|
|
38
38
|
--luar-talian jangan sentuh rangkaian langsung (wajib untuk laluan permintaan app)
|
|
39
39
|
--homograf tandakan perkataan yang ejaan Jawinya dikongsi perkataan lain
|
|
40
40
|
--konteks papar ayat dan makna setiap calon bagi kekaburan (rumi)
|
|
41
|
+
--pilih pilih calon paling lazim supaya teks boleh terus dibaca;
|
|
42
|
+
setiap pilihan disenaraikan untuk disemak ikut konteks
|
|
41
43
|
|
|
42
44
|
Cache: ${CACHE_PATH}
|
|
43
45
|
`
|
|
@@ -55,6 +57,7 @@ function huraiArgs(argv) {
|
|
|
55
57
|
else if (a === '--luar-talian') pilihan.luarTalian = true
|
|
56
58
|
else if (a === '--homograf') pilihan.homograf = true
|
|
57
59
|
else if (a === '--konteks') pilihan.konteks = true
|
|
60
|
+
else if (a === '--pilih') pilihan.pilih = true
|
|
58
61
|
else if (a === '--jenis') pilihan.jenis = argv[++i]
|
|
59
62
|
else if (a === '--had') pilihan.had = Number(argv[++i])
|
|
60
63
|
else if (a === '--delay') pilihan.delay = Number(argv[++i])
|
|
@@ -220,7 +223,10 @@ async function main() {
|
|
|
220
223
|
|
|
221
224
|
case 'rumi': {
|
|
222
225
|
const teks = await readFile(baki[0], 'utf8')
|
|
223
|
-
const h = keRumi(teks, cache, {
|
|
226
|
+
const h = keRumi(teks, cache, {
|
|
227
|
+
dataset: await muatDataset(),
|
|
228
|
+
pilihLazim: pilihan.pilih,
|
|
229
|
+
})
|
|
224
230
|
if (pilihan.json) { keluar(h); break }
|
|
225
231
|
console.log(h.teks)
|
|
226
232
|
console.error(`\npeta songsang: ${h.saizPeta} ejaan`)
|
|
@@ -250,7 +256,13 @@ async function main() {
|
|
|
250
256
|
}
|
|
251
257
|
}
|
|
252
258
|
if (h.arab.length) console.error(`teks Arab dibiarkan (${h.arab.length}): ${h.arab.join(' ')}`)
|
|
253
|
-
for (const k of h.kabur)
|
|
259
|
+
for (const k of h.kabur) {
|
|
260
|
+
console.error(
|
|
261
|
+
k.dipilih
|
|
262
|
+
? `dipilih ikut kekerapan (SEMAK konteks): ${k.jawi} -> ${k.dipilih} [lain: ${k.calon.slice(1).join(', ')}]`
|
|
263
|
+
: `kabur: ${k.jawi} -> ${k.calon.join(', ')}`,
|
|
264
|
+
)
|
|
265
|
+
}
|
|
254
266
|
break
|
|
255
267
|
}
|
|
256
268
|
|
package/package.json
CHANGED
package/src/tukar.js
CHANGED
|
@@ -425,7 +425,11 @@ export async function keJawi(teks, cache, opts = {}) {
|
|
|
425
425
|
* menggugurkannya. Kerana itu perlanggaran jauh lebih jarang daripada yang
|
|
426
426
|
* disangka. Bila ia berlaku, SEMUA calon dilaporkan, bukan dipilih satu.
|
|
427
427
|
*/
|
|
428
|
-
export function keRumi(
|
|
428
|
+
export function keRumi(
|
|
429
|
+
teksJawi,
|
|
430
|
+
cache,
|
|
431
|
+
{ penanda = ['«', '»'], dataset = null, pilihLazim = false } = {},
|
|
432
|
+
) {
|
|
429
433
|
const peta = petaSongsang(cache, dataset)
|
|
430
434
|
const tidakDikenali = []
|
|
431
435
|
const kabur = []
|
|
@@ -494,8 +498,19 @@ export function keRumi(teksJawi, cache, { penanda = ['«', '»'], dataset = null
|
|
|
494
498
|
|
|
495
499
|
if (padanan.length === 1) keluar.push(padanan[0])
|
|
496
500
|
else {
|
|
497
|
-
|
|
498
|
-
|
|
501
|
+
const rekod = { jawi: bahagian.slice(i, hujung + 1).join(''), calon: padanan }
|
|
502
|
+
kabur.push(rekod)
|
|
503
|
+
// pilihLazim menghasilkan teks yang boleh terus dibaca dengan memilih
|
|
504
|
+
// calon paling lazim dalam korpus DBP. Ia BUKAN pemahaman konteks:
|
|
505
|
+
// setiap pilihan direkod dalam medan `kabur` supaya agen atau manusia
|
|
506
|
+
// yang membaca ayat boleh menggantikannya. Kekerapan ialah tekaan
|
|
507
|
+
// terbaik tanpa konteks, bukan jawapan.
|
|
508
|
+
if (pilihLazim) {
|
|
509
|
+
rekod.dipilih = padanan[0]
|
|
510
|
+
keluar.push(padanan[0])
|
|
511
|
+
} else {
|
|
512
|
+
keluar.push(padanan.join('|'))
|
|
513
|
+
}
|
|
499
514
|
}
|
|
500
515
|
i = hujung
|
|
501
516
|
}
|