From 81564cc4e819851e9b4473027b5fa672dbe072b6 Mon Sep 17 00:00:00 2001 From: Andrew Ongko Date: Fri, 14 Sep 2018 17:30:32 +0700 Subject: [PATCH] Update Indonesian model (#2752) * adding e-KTP in tokenizer exceptions list * add exception token * removing lines with containing space as it won't matter since we use .split() method in the end, added new tokens in exception * add tokenizer exceptions list * combining base_norms with norm_exceptions * adding norm_exception * fix double key in lemmatizer * remove unused import on punctuation.py * reformat stop_words to reduce number of lines, improve readibility * updating tokenizer exception * implement is_currency for lang/id * adding orth_first_upper in tokenizer_exceptions * update the norm_exception list * remove bunch of abbreviations * adding contributors file --- .github/contributors/aongko.md | 106 +++ spacy/lang/id/__init__.py | 7 +- spacy/lang/id/_tokenizer_exceptions_list.py | 100 ++- spacy/lang/id/lemmatizer.py | 2 - spacy/lang/id/lex_attrs.py | 16 +- spacy/lang/id/norm_exceptions.py | 530 +++++++++++- spacy/lang/id/punctuation.py | 4 +- spacy/lang/id/stop_words.py | 875 +++----------------- spacy/lang/id/tokenizer_exceptions.py | 78 +- 9 files changed, 898 insertions(+), 820 deletions(-) create mode 100644 .github/contributors/aongko.md diff --git a/.github/contributors/aongko.md b/.github/contributors/aongko.md new file mode 100644 index 000000000..148ac91c6 --- /dev/null +++ b/.github/contributors/aongko.md @@ -0,0 +1,106 @@ +# spaCy contributor agreement + +This spaCy Contributor Agreement (**"SCA"**) is based on the +[Oracle Contributor Agreement](http://www.oracle.com/technetwork/oca-405177.pdf). +The SCA applies to any contribution that you make to any product or project +managed by us (the **"project"**), and sets out the intellectual property rights +you grant to us in the contributed materials. The term **"us"** shall mean +[ExplosionAI UG (haftungsbeschränkt)](https://explosion.ai/legal). The term +**"you"** shall mean the person or entity identified below. + +If you agree to be bound by these terms, fill in the information requested +below and include the filled-in version with your first pull request, under the +folder [`.github/contributors/`](/.github/contributors/). The name of the file +should be your GitHub username, with the extension `.md`. For example, the user +example_user would create the file `.github/contributors/example_user.md`. + +Read this agreement carefully before signing. These terms and conditions +constitute a binding legal agreement. + +## Contributor Agreement + +1. The term "contribution" or "contributed materials" means any source code, +object code, patch, tool, sample, graphic, specification, manual, +documentation, or any other material posted or submitted by you to the project. + +2. With respect to any worldwide copyrights, or copyright applications and +registrations, in your contribution: + + * you hereby assign to us joint ownership, and to the extent that such + assignment is or becomes invalid, ineffective or unenforceable, you hereby + grant to us a perpetual, irrevocable, non-exclusive, worldwide, no-charge, + royalty-free, unrestricted license to exercise all rights under those + copyrights. This includes, at our option, the right to sublicense these same + rights to third parties through multiple levels of sublicensees or other + licensing arrangements; + + * you agree that each of us can do all things in relation to your + contribution as if each of us were the sole owners, and if one of us makes + a derivative work of your contribution, the one who makes the derivative + work (or has it made will be the sole owner of that derivative work; + + * you agree that you will not assert any moral rights in your contribution + against us, our licensees or transferees; + + * you agree that we may register a copyright in your contribution and + exercise all ownership rights associated with it; and + + * you agree that neither of us has any duty to consult with, obtain the + consent of, pay or render an accounting to the other for any use or + distribution of your contribution. + +3. With respect to any patents you own, or that you can license without payment +to any third party, you hereby grant to us a perpetual, irrevocable, +non-exclusive, worldwide, no-charge, royalty-free license to: + + * make, have made, use, sell, offer to sell, import, and otherwise transfer + your contribution in whole or in part, alone or in combination with or + included in any product, work or materials arising out of the project to + which your contribution was submitted, and + + * at our option, to sublicense these same rights to third parties through + multiple levels of sublicensees or other licensing arrangements. + +4. Except as set out above, you keep all right, title, and interest in your +contribution. The rights that you grant to us under these terms are effective +on the date you first submitted a contribution to us, even if your submission +took place before the date you sign these terms. + +5. You covenant, represent, warrant and agree that: + + * Each contribution that you submit is and shall be an original work of + authorship and you can legally grant the rights set out in this SCA; + + * to the best of your knowledge, each contribution will not violate any + third party's copyrights, trademarks, patents, or other intellectual + property rights; and + + * each contribution shall be in compliance with U.S. export control laws and + other applicable export and import laws. You agree to notify us if you + become aware of any circumstance which would make any of the foregoing + representations inaccurate in any respect. We may publicly disclose your + participation in the project, including the fact that you have signed the SCA. + +6. This SCA is governed by the laws of the State of California and applicable +U.S. Federal law. Any choice of law rules will not apply. + +7. Please place an “x” on one of the applicable statement below. Please do NOT +mark both statements: + + * [ ] I am signing on behalf of myself as an individual and no other person + or entity, including my employer, has or will have rights with respect to my + contributions. + + * [x] I am signing on behalf of my employer or a legal entity and I have the + actual authority to contractually bind that entity. + +## Contributor Details + +| Field | Entry | +|------------------------------- | -------------------- | +| Name | Andrew Ongko | +| Company name (if applicable) | Kurio | +| Title or role (if applicable) | Senior Data Science | +| Date | Sep 10, 2018 | +| GitHub username | aongko | +| Website (optional) | | diff --git a/spacy/lang/id/__init__.py b/spacy/lang/id/__init__.py index 2f21e73cf..351396414 100644 --- a/spacy/lang/id/__init__.py +++ b/spacy/lang/id/__init__.py @@ -10,15 +10,18 @@ from .lex_attrs import LEX_ATTRS from .syntax_iterators import SYNTAX_ITERATORS from ..tokenizer_exceptions import BASE_EXCEPTIONS +from ..norm_exceptions import BASE_NORMS from ...language import Language -from ...attrs import LANG -from ...util import update_exc +from ...attrs import LANG, NORM +from ...util import update_exc, add_lookups class IndonesianDefaults(Language.Defaults): lex_attr_getters = dict(Language.Defaults.lex_attr_getters) lex_attr_getters[LANG] = lambda text: 'id' lex_attr_getters.update(LEX_ATTRS) + lex_attr_getters[NORM] = add_lookups(Language.Defaults.lex_attr_getters[NORM], + BASE_NORMS, NORM_EXCEPTIONS) tokenizer_exceptions = update_exc(BASE_EXCEPTIONS, TOKENIZER_EXCEPTIONS) stop_words = STOP_WORDS prefixes = TOKENIZER_PREFIXES diff --git a/spacy/lang/id/_tokenizer_exceptions_list.py b/spacy/lang/id/_tokenizer_exceptions_list.py index 7ccf0b7b0..597902c1a 100644 --- a/spacy/lang/id/_tokenizer_exceptions_list.py +++ b/spacy/lang/id/_tokenizer_exceptions_list.py @@ -24,7 +24,7 @@ aci-acinya aco-acoan ad-blocker ad-interim -ada-ada saja +ada-ada ada-adanya ada-adanyakah adang-adang @@ -243,7 +243,6 @@ bari-bari barik-barik baris-berbaris baru-baru -baru-baru ini baru-batu barung-barung basa-basi @@ -1059,7 +1058,6 @@ box-to-box boyo-boyo buah-buahan buang-buang -buang-buang air buat-buatan buaya-buaya bubun-bubun @@ -1226,7 +1224,6 @@ deg-degan degap-degap dekak-dekak dekat-dekat -dengan - dengar-dengaran dengking-mendengking departemen-departemen @@ -1246,6 +1243,7 @@ dibayang-bayangi dibuat-buat diiming-imingi dilebih-lebihkan +dimana-mana dimata-matai dinas-dinas dinul-Islam @@ -1278,6 +1276,57 @@ dulang-dulang duri-duri duta-duta dwi-kewarganegaraan +e-arena +e-billing +e-budgeting +e-cctv +e-class +e-commerce +e-counting +e-elektronik +e-entertainment +e-evolution +e-faktur +e-filing +e-fin +e-form +e-government +e-govt +e-hakcipta +e-id +e-info +e-katalog +e-ktp +e-leadership +e-lhkpn +e-library +e-loket +e-m1 +e-money +e-news +e-nisn +e-npwp +e-paspor +e-paten +e-pay +e-perda +e-perizinan +e-planning +e-polisi +e-power +e-punten +e-retribusi +e-samsat +e-sport +e-store +e-tax +e-ticketing +e-tilang +e-toll +e-visa +e-voting +e-wallet +e-warong ecek-ecek eco-friendly eco-park @@ -1440,7 +1489,25 @@ ginang-ginang girap-girap girik-girik giring-giring +go-auto +go-bills +go-bluebird +go-box +go-car +go-clean +go-food +go-glam +go-jek go-kart +go-mart +go-massage +go-med +go-points +go-pulsa +go-ride +go-send +go-shop +go-tix go-to-market goak-goak goal-line @@ -1488,7 +1555,6 @@ hang-out hantu-hantu happy-happy harap-harap -harap-harap cemas harap-harapan hard-disk harga-harga @@ -1633,7 +1699,7 @@ jor-joran jotos-jotosan juak-juak jual-beli -juang-juang !!? lenjuang +juang-juang julo-julo julung-julung julur-julur @@ -1787,6 +1853,7 @@ kemarah-marahan kemasam-masaman kemati-matian kembang-kembang +kemenpan-rb kementerian-kementerian kemerah-merahan kempang-kempis @@ -1827,7 +1894,6 @@ keras-mengerasi kercap-kercip kercap-kercup keriang-keriut -kering-kering air kerja-kerja kernyat-kernyut kerobak-kerabit @@ -1952,7 +2018,7 @@ kuda-kudaan kudap-kudap kue-kue kulah-kulah -kulak-kulak tangan +kulak-kulak kulik-kulik kulum-kulum kumat-kamit @@ -2086,7 +2152,6 @@ lumba-lumba lumi-lumi luntang-lantung lupa-lupa -lupa-lupa ingat lupa-lupaan lurah-camat maaf-memaafkan @@ -2097,6 +2162,7 @@ macan-macanan machine-to-machine mafia-mafia mahasiswa-mahasiswi +mahasiswa/i mahi-mahi main-main main-mainan @@ -2185,14 +2251,14 @@ memandai-mandai memanggil-manggil memanis-manis memanjut-manjut -memantas-mantas diri +memantas-mantas memasak-masak memata-matai mematah-matah mematuk-matuk mematut-matut memau-mau -memayah-mayahkan (diri) +memayah-mayahkan membaca-baca membacah-bacah membagi-bagikan @@ -2576,6 +2642,7 @@ meraung-raungkan merayau-rayau merayu-rayu mercak-mercik +mercedes-benz merek-merek mereka-mereka mereka-reka @@ -2627,9 +2694,9 @@ morat-marit move-on muda-muda muda-mudi +muda/i mudah-mudahan muka-muka -muka-muka (dengan -) mula-mula multiple-output muluk-muluk @@ -2791,6 +2858,7 @@ paus-paus paut-memaut pay-per-click paya-paya +pdi-p pecah-pecah pecat-pecatan peer-to-peer @@ -2951,6 +3019,7 @@ putih-hitam putih-putih putra-putra putra-putri +putra/i putri-putri putus-putus putusan-putusan @@ -3069,6 +3138,7 @@ sambung-bersambung sambung-menyambung sambut-menyambut samo-samo +sampah-sampah sampai-sampai samping-menyamping sana-sini @@ -3204,7 +3274,7 @@ seolah-olah sepala-pala sepandai-pandai sepetang-petangan -sepoi-sepoi (basa) +sepoi-sepoi sepraktis-praktisnya sepuas-puasnya serak-serak @@ -3278,6 +3348,7 @@ sisa-sisa sisi-sisi siswa-siswa siswa-siswi +siswa/i siswi-siswi situ-situ situs-situs @@ -3380,6 +3451,7 @@ tanggul-tanggul tanggung-menanggung tanggung-tanggung tank-tank +tante-tante tanya-jawab tapa-tapa tapak-tapak @@ -3424,7 +3496,6 @@ teralang-alang terambang-ambang terambung-ambung terang-terang -terang-terang laras terang-terangan teranggar-anggar terangguk-angguk @@ -3438,7 +3509,6 @@ terayap-rayap terbada-bada terbahak-bahak terbang-terbang -terbang-terbang hinggap terbata-bata terbatuk-batuk terbayang-bayang diff --git a/spacy/lang/id/lemmatizer.py b/spacy/lang/id/lemmatizer.py index 387037e48..98bdb9d97 100644 --- a/spacy/lang/id/lemmatizer.py +++ b/spacy/lang/id/lemmatizer.py @@ -18199,7 +18199,6 @@ LOOKUP = { 'sekelap': 'kelap', 'kelap-kelip': 'terkelap', 'mengelapkan': 'lap', - 'sekelap': 'terkelap', 'berlapar': 'lapar', 'kelaparan': 'lapar', 'kelaparannya': 'lapar', @@ -30179,7 +30178,6 @@ LOOKUP = { 'terperonyok': 'peronyok', 'terperosok': 'perosok', 'terperosoknya': 'perosok', - 'merosot': 'perosot', 'memerosot': 'perosot', 'memerosotkan': 'perosot', 'kepustakaan': 'pustaka', diff --git a/spacy/lang/id/lex_attrs.py b/spacy/lang/id/lex_attrs.py index 39f7042eb..367e256fb 100644 --- a/spacy/lang/id/lex_attrs.py +++ b/spacy/lang/id/lex_attrs.py @@ -1,7 +1,10 @@ # coding: utf8 from __future__ import unicode_literals -from ...attrs import LIKE_NUM +import unicodedata + +from .punctuation import LIST_CURRENCY +from ...attrs import IS_CURRENCY, LIKE_NUM _num_words = ['nol', 'satu', 'dua', 'tiga', 'empat', 'lima', 'enam', 'tujuh', @@ -27,6 +30,17 @@ def like_num(text): return False +def is_currency(text): + if text in LIST_CURRENCY: + return True + + for char in text: + if unicodedata.category(char) != 'Sc': + return False + return True + + LEX_ATTRS = { + IS_CURRENCY: is_currency, LIKE_NUM: like_num } diff --git a/spacy/lang/id/norm_exceptions.py b/spacy/lang/id/norm_exceptions.py index 2468efbcd..d3292ba39 100644 --- a/spacy/lang/id/norm_exceptions.py +++ b/spacy/lang/id/norm_exceptions.py @@ -1,7 +1,535 @@ +""" +Slang and abbreviations + +Daftar kosakata yang sering salah dieja +https://id.wikipedia.org/wiki/Wikipedia:Daftar_kosakata_bahasa_Indonesia_yang_sering_salah_dieja + +""" # coding: utf8 from __future__ import unicode_literals -_exc = {} +_exc = { + # Slang and abbreviations + "silahkan": "silakan", + "yg": "yang", + "kalo": "kalau", + "cawu": "caturwulan", + "ok": "oke", + "gak": "tidak", + "enggak": "tidak", + "nggak": "tidak", + "ndak": "tidak", + "ngga": "tidak", + "dgn": "dengan", + "tdk": "tidak", + "jg": "juga", + "klo": "kalau", + "denger": "dengar", + "pinter": "pintar", + "krn": "karena", + "nemuin": "menemukan", + "jgn": "jangan", + "udah": "sudah", + "sy": "saya", + "udh": "sudah", + "dapetin": "mendapatkan", + "ngelakuin": "melakukan", + "ngebuat": "membuat", + "membikin": "membuat", + "bikin": "buat", + + # Daftar kosakata yang sering salah dieja + "malpraktik": "malapraktik", + "malfungsi": "malafungsi", + "malserap": "malaserap", + "maladaptasi": "malaadaptasi", + "malsuai": "malasuai", + "maldistribusi": "maladistribusi", + "malgizi": "malagizi", + "malsikap": "malasikap", + "memperhatikan": "memerhatikan", + "akte": "akta", + "cemilan": "camilan", + "esei": "esai", + "frase": "frasa", + "kafeteria": "kafetaria", + "ketapel": "katapel", + "kenderaan": "kendaraan", + "menejemen": "manajemen", + "menejer": "manajer", + "mesjid": "masjid", + "rebo": "rabu", + "seksama": "saksama", + "senggama": "sanggama", + "sekedar": "sekadar", + "seprei": "seprai", + "semedi": "semadi", + "samadi": "semadi", + "amandemen": "amendemen", + "algoritma": "algoritme", + "aritmatika": "aritmetika", + "metoda": "metode", + "materai": "meterai", + "meterei": "meterai", + "kalendar": "kalender", + "kadaluwarsa": "kedaluwarsa", + "katagori": "kategori", + "parlamen": "parlemen", + "sekular": "sekuler", + "selular": "seluler", + "sirkular": "sirkuler", + "survai": "survei", + "survey": "survei", + "aktuil": "aktual", + "formil": "formal", + "trotoir": "trotoar", + "komersiil": "komersial", + "komersil": "komersial", + "tradisionil": "tradisionial", + "orisinil": "orisinal", + "orijinil": "orisinal", + "afdol": "afdal", + "antri": "antre", + "apotik": "apotek", + "atlit": "atlet", + "atmosfir": "atmosfer", + "cidera": "cedera", + "cendikiawan": "cendekiawan", + "cepet": "cepat", + "cinderamata": "cenderamata", + "debet": "debit", + "difinisi": "definisi", + "dekrit": "dekret", + "disain": "desain", + "diskripsi": "deskripsi", + "diskotik": "diskotek", + "eksim": "eksem", + "exim": "eksem", + "faidah": "faedah", + "ekstrim": "ekstrem", + "ekstrimis": "ekstremis", + "komplit": "komplet", + "konkrit": "konkret", + "kongkrit": "konkret", + "kongkret": "konkret", + "kridit": "kredit", + "musium": "museum", + "pinalti": "penalti", + "piranti": "peranti", + "pinsil": "pensil", + "personil": "personel", + "sistim": "sistem", + "teoritis": "teoretis", + "vidio": "video", + "cengkeh": "cengkih", + "desertasi": "disertasi", + "hakekat": "hakikat", + "intelejen": "intelijen", + "kaedah": "kaidah", + "kempes": "kempis", + "kementrian": "kementerian", + "ledeng": "leding", + "nasehat": "nasihat", + "penasehat": "penasihat", + "praktek": "praktik", + "praktekum": "praktikum", + "resiko": "risiko", + "retsleting": "ritsleting", + "senen": "senin", + "amuba": "ameba", + "punggawa": "penggawa", + "surban": "serban", + "nomer": "nomor", + "sorban": "serban", + "bis": "bus", + "agribisnis": "agrobisnis", + "kantung": "kantong", + "khutbah": "khotbah", + "mandur": "mandor", + "rubuh": "roboh", + "pastur": "pastor", + "supir": "sopir", + "goncang": "guncang", + "goa": "gua", + "kaos": "kaus", + "kokoh": "kukuh", + "komulatif": "kumulatif", + "kolomnis": "kolumnis", + "korma": "kurma", + "lobang": "lubang", + "limo": "limusin", + "limosin": "limusin", + "mangkok": "mangkuk", + "saos": "saus", + "sop": "sup", + "sorga": "surga", + "tegor": "tegur", + "telor": "telur", + "obrak-abrik": "ubrak-abrik", + "ekwivalen": "ekuivalen", + "frekwensi": "frekuensi", + "konsekwensi": "konsekuensi", + "kwadran": "kuadran", + "kwadrat": "kuadrat", + "kwalifikasi": "kualifikasi", + "kwalitas": "kualitas", + "kwalitet": "kualitas", + "kwalitatif": "kualitatif", + "kwantitas": "kuantitas", + "kwantitatif": "kuantitatif", + "kwantum": "kuantum", + "kwartal": "kuartal", + "kwintal": "kuintal", + "kwitansi": "kuitansi", + "kwatir": "khawatir", + "kuatir": "khawatir", + "jadual": "jadwal", + "hirarki": "hierarki", + "karir": "karier", + "aktip": "aktif", + "daptar": "daftar", + "efektip": "efektif", + "epektif": "efektif", + "epektip": "efektif", + "Pebruari": "Februari", + "pisik": "fisik", + "pondasi": "fondasi", + "photo": "foto", + "photokopi": "fotokopi", + "hapal": "hafal", + "insap": "insaf", + "insyaf": "insaf", + "konperensi": "konferensi", + "kreatip": "kreatif", + "kreativ": "kreatif", + "maap": "maaf", + "napsu": "nafsu", + "negatip": "negatif", + "negativ": "negatif", + "objektip": "objektif", + "obyektip": "objektif", + "obyektif": "objektif", + "pasip": "pasif", + "pasiv": "pasif", + "positip": "positif", + "positiv": "positif", + "produktip": "produktif", + "produktiv": "produktif", + "sarap": "saraf", + "sertipikat": "sertifikat", + "subjektip": "subjektif", + "subyektip": "subjektif", + "subyektif": "subjektif", + "tarip": "tarif", + "transitip": "transitif", + "transitiv": "transitif", + "faham": "paham", + "fikir": "pikir", + "berfikir": "berpikir", + "telefon": "telepon", + "telfon": "telepon", + "telpon": "telepon", + "tilpon": "telepon", + "nafas": "napas", + "bernafas": "bernapas", + "pernafasan": "pernapasan", + "vermak": "permak", + "vulpen": "pulpen", + "aktifis": "aktivis", + "konfeksi": "konveksi", + "motifasi": "motivasi", + "Nopember": "November", + "propinsi": "provinsi", + "babtis": "baptis", + "jerembab": "jerembap", + "lembab": "lembap", + "sembab": "sembap", + "saptu": "sabtu", + "tekat": "tekad", + "bejad": "bejat", + "nekad": "nekat", + "otoped": "otopet", + "skuad": "skuat", + "jenius": "genius", + "marjin": "margin", + "marjinal": "marginal", + "obyek": "objek", + "subyek": "subjek", + "projek": "proyek", + "azas": "asas", + "ijasah": "ijazah", + "jenasah": "jenazah", + "plasa": "plaza", + "bathin": "batin", + "Katholik": "Katolik", + "orthografi": "ortografi", + "pathogen": "patogen", + "theologi": "teologi", + "ijin": "izin", + "rejeki": "rezeki", + "rejim": "rezim", + "jaman": "zaman", + "jamrud": "zamrud", + "jinah": "zina", + "perjinahan": "perzinaan", + "anugrah": "anugerah", + "cendrawasih": "cenderawasih", + "jendral": "jenderal", + "kripik": "keripik", + "krupuk": "kerupuk", + "ksatria": "kesatria", + "mentri": "menteri", + "negri": "negeri", + "Prancis": "Perancis", + "sebrang": "seberang", + "menyebrang": "menyeberang", + "Sumatra": "Sumatera", + "trampil": "terampil", + "isteri": "istri", + "justeru": "justru", + "perajurit": "prajurit", + "putera": "putra", + "puteri": "putri", + "samudera": "samudra", + "sastera": "sastra", + "sutera": "sutra", + "terompet": "trompet", + "iklas": "ikhlas", + "iktisar": "ikhtisar", + "kafilah": "khafilah", + "kawatir": "khawatir", + "kotbah": "khotbah", + "kusyuk": "khusyuk", + "makluk": "makhluk", + "mahluk": "makhluk", + "mahkluk": "makhluk", + "nahkoda": "nakhoda", + "nakoda": "nakhoda", + "tahta": "takhta", + "takhyul": "takhayul", + "tahyul": "takhayul", + "tahayul": "takhayul", + "akhli": "ahli", + "anarkhi": "anarki", + "kharisma": "karisma", + "kharismatik": "karismatik", + "mahsud": "maksud", + "makhsud": "maksud", + "rakhmat": "rahmat", + "tekhnik": "teknik", + "tehnik": "teknik", + "tehnologi": "teknologi", + "ikhwal": "ihwal", + "expor": "ekspor", + "extra": "ekstra", + "komplex": "komplek", + "sex": "seks", + "taxi": "taksi", + "extasi": "ekstasi", + "syaraf": "saraf", + "syurga": "surga", + "mashur": "masyhur", + "masyur": "masyhur", + "mahsyur": "masyhur", + "mashyur": "masyhur", + "muadzin": "muazin", + "adzan": "azan", + "ustadz": "ustaz", + "ustad": "ustaz", + "ustadzah": "ustaz", + "dzikir": "zikir", + "dzuhur": "zuhur", + "dhuhur": "zuhur", + "zhuhur": "zuhur", + "analisa": "analisis", + "diagnosa": "diagnosis", + "hipotesa": "hipotesis", + "sintesa": "sintesis", + "aktiviti": "aktivitas", + "aktifitas": "aktivitas", + "efektifitas": "efektivitas", + "komuniti": "komunitas", + "kreatifitas": "kreativitas", + "produktifitas": "produktivitas", + "realiti": "realitas", + "realita": "realitas", + "selebriti": "selebritas", + "spotifitas": "sportivitas", + "universiti": "universitas", + "utiliti": "utilitas", + "validiti": "validitas", + "dilokalisir": "dilokalisasi", + "didramatisir": "didramatisasi", + "dipolitisir": "dipolitisasi", + "dinetralisir": "dinetralisasi", + "dikonfrontir": "dikonfrontasi", + "mendominir": "mendominasi", + "koordinir": "koordinasi", + "proklamir": "proklamasi", + "terorganisir": "terorganisasi", + "terealisir": "terealisasi", + "robah": "ubah", + "dirubah": "diubah", + "merubah": "mengubah", + "terlanjur": "telanjur", + "terlantar": "telantar", + "penglepasan": "pelepasan", + "pelihatan": "penglihatan", + "pemukiman": "permukiman", + "pengrumahan": "perumahan", + "penyewaan": "persewaan", + "menyintai": "mencintai", + "menyolok": "mencolok", + "contek": "sontek", + "mencontek": "menyontek", + "pungkir": "mungkir", + "dipungkiri": "dimungkiri", + "kupungkiri": "kumungkiri", + "kaupungkiri": "kaumungkiri", + "nampak": "tampak", + "nampaknya": "tampaknya", + "nongkrong": "tongkrong", + "berternak": "beternak", + "berterbangan": "beterbangan", + "berserta": "beserta", + "berperkara": "beperkara", + "berpergian": "bepergian", + "berkerja": "bekerja", + "berberapa": "beberapa", + "terbersit": "tebersit", + "terpercaya": "tepercaya", + "terperdaya": "teperdaya", + "terpercik": "tepercik", + "terpergok": "tepergok", + "aksesoris": "aksesori", + "handal": "andal", + "hantar": "antar", + "panutan": "anutan", + "atsiri": "asiri", + "bhakti": "bakti", + "china": "cina", + "dharma": "darma", + "diktaktor": "diktator", + "eksport": "ekspor", + "hembus": "embus", + "hadits": "hadis", + "hadist": "hadits", + "harafiah": "harfiah", + "himbau": "imbau", + "import": "impor", + "inget": "ingat", + "hisap": "isap", + "interprestasi": "interpretasi", + "kangker": "kanker", + "konggres": "kongres", + "lansekap": "lanskap", + "maghrib": "magrib", + "emak": "mak", + "moderen": "modern", + "pasport": "paspor", + "perduli": "peduli", + "ramadhan": "ramadan", + "rapih": "rapi", + "Sansekerta": "Sanskerta", + "shalat": "salat", + "sholat": "salat", + "silahkan": "silakan", + "standard": "standar", + "hutang": "utang", + "zinah": "zina", + "ambulan": "ambulans", + "antartika": "sntarktika", + "arteri": "arteria", + "asik": "asyik", + "australi": "australia", + "denga": "dengan", + "depo": "depot", + "detil": "detail", + "ensiklopedi": "ensiklopedia", + "elit": "elite", + "frustasi": "frustrasi", + "gladi": "geladi", + "greget": "gereget", + "itali": "italia", + "karna": "karena", + "klenteng": "kelenteng", + "erling": "kerling", + "kontruksi": "konstruksi", + "masal": "massal", + "merk": "merek", + "respon": "respons", + "diresponi": "direspons", + "skak": "sekak", + "stir": "setir", + "singapur": "singapura", + "standarisasi": "standardisasi", + "varitas": "varietas", + "amphibi": "amfibi", + "anjlog": "anjlok", + "alpukat": "avokad", + "alpokat": "avokad", + "bolpen": "pulpen", + "cabe": "cabai", + "cabay": "cabai", + "ceret": "cerek", + "differensial": "diferensial", + "duren": "durian", + "faksimili": "faksimile", + "faksimil": "faksimile", + "graha": "gerha", + "goblog": "goblok", + "gombrong": "gombroh", + "horden": "gorden", + "korden": "gorden", + "gubug": "gubuk", + "imaginasi": "imajinasi", + "jerigen": "jeriken", + "jirigen": "jeriken", + "carut-marut": "karut-marut", + "kwota": "kuota", + "mahzab": "mazhab", + "mempesona": "memesona", + "milyar": "miliar", + "missi": "misi", + "nenas": "nanas", + "negoisasi": "negosiasi", + "automotif": "otomotif", + "pararel": "paralel", + "paska": "pasca", + "prosen": "persen", + "pete": "petai", + "petay": "petai", + "proffesor": "profesor", + "rame": "ramai", + "rapot": "rapor", + "rileks": "relaks", + "rileksasi": "relaksasi", + "renumerasi": "remunerasi", + "seketaris": "sekretaris", + "sekertaris": "sekretaris", + "sensorik": "sensoris", + "sentausa": "sentosa", + "strawberi": "stroberi", + "strawbery": "stroberi", + "taqwa": "takwa", + "tauco": "taoco", + "tauge": "taoge", + "toge": "taoge", + "tauladan": "teladan", + "taubat": "tobat", + "trilyun": "triliun", + "vissi": "visi", + "coklat": "cokelat", + "narkotika": "narkotik", + "oase": "oasis", + "politisi": "politikus", + "terong": "terung", + "wool": "wol", + "himpit": "impit", + "mujizat": "mukjizat", + "mujijat": "mukjizat", + "yag": "yang", +} NORM_EXCEPTIONS = {} diff --git a/spacy/lang/id/punctuation.py b/spacy/lang/id/punctuation.py index b8f8c57a8..bea21a2f1 100644 --- a/spacy/lang/id/punctuation.py +++ b/spacy/lang/id/punctuation.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals from ..punctuation import TOKENIZER_PREFIXES, TOKENIZER_SUFFIXES, TOKENIZER_INFIXES from ..char_classes import merge_chars, split_chars, _currency, _units from ..char_classes import LIST_PUNCT, LIST_ELLIPSES, LIST_QUOTES -from ..char_classes import QUOTES, UNITS, ALPHA, ALPHA_LOWER, ALPHA_UPPER, HYPHENS +from ..char_classes import QUOTES, ALPHA, ALPHA_LOWER, ALPHA_UPPER, HYPHENS _units = (_units + 's bit Gbps Mbps mbps Kbps kbps ƒ ppi px ' 'Hz kHz MHz GHz mAh ' @@ -25,7 +25,7 @@ HTML_SUFFIX = r'' MONTHS = merge_chars(_months) LIST_CURRENCY = split_chars(_currency) -TOKENIZER_PREFIXES.remove('#') # hashtag +TOKENIZER_PREFIXES.remove('#') # hashtag _prefixes = TOKENIZER_PREFIXES + LIST_CURRENCY + [HTML_PREFIX] + ['/', '—'] _suffixes = TOKENIZER_SUFFIXES + [r'\-[Nn]ya', '-[KkMm]u', '[—-]'] + [ diff --git a/spacy/lang/id/stop_words.py b/spacy/lang/id/stop_words.py index 0b72df5a1..640425b14 100644 --- a/spacy/lang/id/stop_words.py +++ b/spacy/lang/id/stop_words.py @@ -1,763 +1,122 @@ +""" +List of stop words in Bahasa Indonesia. +""" # coding: utf8 from __future__ import unicode_literals STOP_WORDS = set(""" -ada -adalah -adanya -adapun -agak -agaknya -agar -akan -akankah -akhir -akhiri -akhirnya -aku -akulah -amat -amatlah -anda -andalah -antar -antara -antaranya -apa -apaan -apabila -apakah -apalagi -apatah -artinya -asal -asalkan -atas -atau -ataukah -ataupun -awal +ada adalah adanya adapun agak agaknya agar akan akankah akhir akhiri akhirnya +aku akulah amat amatlah anda andalah antar antara antaranya apa apaan apabila +apakah apalagi apatah artinya asal asalkan atas atau ataukah ataupun awal awalnya -bagai -bagaikan -bagaimana -bagaimanakah -bagaimanapun -bagi -bagian -bahkan -bahwa -bahwasanya -baik -bakal -bakalan -balik -banyak -bapak -baru -bawah -beberapa -begini -beginian -beginikah -beginilah -begitu -begitukah -begitulah -begitupun -bekerja -belakang -belakangan -belum -belumlah -benar -benarkah -benarlah -berada -berakhir -berakhirlah -berakhirnya -berapa -berapakah -berapalah -berapapun -berarti -berawal -berbagai -berdatangan -beri -berikan -berikut -berikutnya -berjumlah -berkali-kali -berkata -berkehendak -berkeinginan -berkenaan -berlainan -berlalu -berlangsung -berlebihan -bermacam -bermacam-macam -bermaksud -bermula -bersama -bersama-sama -bersiap -bersiap-siap -bertanya -bertanya-tanya -berturut -berturut-turut -bertutur -berujar -berupa -besar -betul -betulkah -biasa -biasanya -bila -bilakah -bisa -bisakah -boleh -bolehkah -bolehlah -buat -bukan -bukankah -bukanlah -bukannya -bulan -bung -cara -caranya -cukup -cukupkah -cukuplah -cuma -dahulu -dalam -dan -dapat -dari -daripada -datang -dekat -demi -demikian -demikianlah -dengan -depan -di -dia -diakhiri -diakhirinya -dialah -diantara -diantaranya -diberi -diberikan -diberikannya -dibuat -dibuatnya -didapat -didatangkan -digunakan -diibaratkan -diibaratkannya -diingat -diingatkan -diinginkan -dijawab -dijelaskan -dijelaskannya -dikarenakan -dikatakan -dikatakannya -dikerjakan -diketahui -diketahuinya -dikira -dilakukan -dilalui -dilihat -dimaksud -dimaksudkan -dimaksudkannya -dimaksudnya -diminta -dimintai -dimisalkan -dimulai -dimulailah -dimulainya -dimungkinkan -dini -dipastikan -diperbuat -diperbuatnya -dipergunakan -diperkirakan -diperlihatkan -diperlukan -diperlukannya -dipersoalkan -dipertanyakan -dipunyai -diri -dirinya -disampaikan -disebut -disebutkan -disebutkannya -disini -disinilah -ditambahkan -ditandaskan -ditanya -ditanyai -ditanyakan -ditegaskan -ditujukan -ditunjuk -ditunjuki -ditunjukkan -ditunjukkannya -ditunjuknya -dituturkan -dituturkannya -diucapkan -diucapkannya -diungkapkan -dong -dua -dulu -empat -enggak -enggaknya -entah -entahlah -guna -gunakan -hal -hampir -hanya -hanyalah -hari -harus -haruslah -harusnya -hendak -hendaklah -hendaknya -hingga -ia -ialah -ibarat -ibaratkan -ibaratnya -ibu -ikut -ingat -ingat-ingat -ingin -inginkah -inginkan -ini -inikah -inilah -itu -itukah -itulah -jadi -jadilah -jadinya -jangan -jangankan -janganlah -jauh -jawab -jawaban -jawabnya -jelas -jelaskan -jelaslah -jelasnya -jika -jikalau -juga -jumlah -jumlahnya -justru -kala -kalau -kalaulah -kalaupun -kalian -kami -kamilah -kamu -kamulah -kan -kapan -kapankah -kapanpun -karena -karenanya -kasus -kata -katakan -katakanlah -katanya -ke -keadaan -kebetulan -kecil -kedua -keduanya -keinginan -kelamaan -kelihatan -kelihatannya -kelima -keluar -kembali -kemudian -kemungkinan -kemungkinannya -kenapa -kepada -kepadanya -kesampaian -keseluruhan -keseluruhannya -keterlaluan -ketika -khususnya -kini -kinilah -kira -kira-kira -kiranya -kita -kitalah -kok -kurang -lagi -lagian -lah -lain -lainnya -lalu -lama -lamanya -lanjut -lanjutnya -lebih -lewat -lima -luar -macam -maka -makanya -makin -malah -malahan -mampu -mampukah -mana -manakala -manalagi -masa -masalah -masalahnya -masih -masihkah -masing -masing-masing -mau -maupun -melainkan -melakukan -melalui -melihat -melihatnya -memang -memastikan -memberi -memberikan -membuat -memerlukan -memihak -meminta -memintakan -memisalkan -memperbuat -mempergunakan -memperkirakan -memperlihatkan -mempersiapkan -mempersoalkan -mempertanyakan -mempunyai -memulai -memungkinkan -menaiki -menambahkan -menandaskan -menanti -menanti-nanti -menantikan -menanya -menanyai -menanyakan -mendapat -mendapatkan -mendatang -mendatangi -mendatangkan -menegaskan -mengakhiri -mengapa -mengatakan -mengatakannya -mengenai -mengerjakan -mengetahui -menggunakan -menghendaki -mengibaratkan -mengibaratkannya -mengingat -mengingatkan -menginginkan -mengira -mengucapkan -mengucapkannya -mengungkapkan -menjadi -menjawab -menjelaskan -menuju -menunjuk -menunjuki -menunjukkan -menunjuknya -menurut -menuturkan -menyampaikan -menyangkut -menyatakan -menyebutkan -menyeluruh -menyiapkan -merasa -mereka -merekalah -merupakan -meski -meskipun -meyakini -meyakinkan -minta -mirip -misal -misalkan -misalnya -mula -mulai -mulailah -mulanya -mungkin -mungkinkah -nah -naik -namun -nanti -nantinya -nyaris -nyatanya -oleh -olehnya -pada -padahal -padanya -pak -paling -panjang -pantas -para -pasti -pastilah -penting -pentingnya -per -percuma -perlu -perlukah -perlunya -pernah -persoalan -pertama -pertama-tama -pertanyaan -pertanyakan -pihak -pihaknya -pukul -pula -pun -punya -rasa -rasanya -rata -rupanya -saat -saatnya -saja -sajalah -saling -sama -sama-sama -sambil -sampai -sampai-sampai -sampaikan -sana -sangat -sangatlah -satu -saya -sayalah -se -sebab -sebabnya -sebagai -sebagaimana -sebagainya -sebagian -sebaik -sebaik-baiknya -sebaiknya -sebaliknya -sebanyak -sebegini -sebegitu -sebelum -sebelumnya -sebenarnya -seberapa -sebesar -sebetulnya -sebisanya -sebuah -sebut -sebutlah -sebutnya -secara -secukupnya -sedang -sedangkan -sedemikian -sedikit -sedikitnya -seenaknya -segala -segalanya -segera -seharusnya -sehingga -seingat -sejak -sejauh -sejenak -sejumlah -sekadar -sekadarnya -sekali -sekali-kali -sekalian -sekaligus -sekalipun -sekarang -sekarang -sekecil -seketika -sekiranya -sekitar -sekitarnya -sekurang-kurangnya -sekurangnya -sela -selain -selaku -selalu -selama -selama-lamanya -selamanya -selanjutnya -seluruh -seluruhnya -semacam -semakin -semampu -semampunya -semasa -semasih -semata -semata-mata -semaunya -sementara -semisal -semisalnya -sempat -semua -semuanya -semula -sendiri -sendirian -sendirinya -seolah -seolah-olah -seorang -sepanjang -sepantasnya -sepantasnyalah -seperlunya -seperti -sepertinya -sepihak -sering -seringnya -serta -serupa -sesaat -sesama -sesampai -sesegera -sesekali -seseorang -sesuatu -sesuatunya -sesudah -sesudahnya -setelah -setempat -setengah -seterusnya -setiap -setiba -setibanya -setidak-tidaknya -setidaknya -setinggi -seusai -sewaktu -siap -siapa -siapakah -siapapun -sini -sinilah -soal -soalnya -suatu -sudah -sudahkah -sudahlah -supaya -tadi -tadinya -tahu -tahun -tak -tambah -tambahnya -tampak -tampaknya -tandas -tandasnya -tanpa -tanya -tanyakan -tanyanya -tapi -tegas -tegasnya -telah -tempat -tengah -tentang -tentu -tentulah -tentunya -tepat -terakhir -terasa -terbanyak -terdahulu -terdapat -terdiri -terhadap -terhadapnya -teringat -teringat-ingat -terjadi -terjadilah -terjadinya -terkira -terlalu -terlebih -terlihat -termasuk -ternyata -tersampaikan -tersebut -tersebutlah -tertentu -tertuju -terus -terutama -tetap -tetapi -tiap -tiba -tiba-tiba -tidak -tidakkah -tidaklah -tiga -tinggi -toh -tunjuk -turut -tutur -tuturnya -ucap -ucapnya -ujar -ujarnya -umum -umumnya -ungkap -ungkapnya -untuk -usah -usai -waduh -wah -wahai -waktu -waktunya -walau -walaupun -wong -yaitu -yakin -yakni -yang -""".split()) \ No newline at end of file + +bagai bagaikan bagaimana bagaimanakah bagaimanapun bagi bagian bahkan bahwa +bahwasanya baik bakal bakalan balik banyak bapak baru bawah beberapa begini +beginian beginikah beginilah begitu begitukah begitulah begitupun bekerja +belakang belakangan belum belumlah benar benarkah benarlah berada berakhir +berakhirlah berakhirnya berapa berapakah berapalah berapapun berarti berawal +berbagai berdatangan beri berikan berikut berikutnya berjumlah berkali-kali +berkata berkehendak berkeinginan berkenaan berlainan berlalu berlangsung +berlebihan bermacam bermacam-macam bermaksud bermula bersama bersama-sama +bersiap bersiap-siap bertanya bertanya-tanya berturut berturut-turut bertutur +berujar berupa besar betul betulkah biasa biasanya bila bilakah bisa bisakah +boleh bolehkah bolehlah buat bukan bukankah bukanlah bukannya bulan bung + +cara caranya cukup cukupkah cukuplah cuma + +dahulu dalam dan dapat dari daripada datang dekat demi demikian demikianlah +dengan depan di dia diakhiri diakhirinya dialah diantara diantaranya diberi +diberikan diberikannya dibuat dibuatnya didapat didatangkan digunakan +diibaratkan diibaratkannya diingat diingatkan diinginkan dijawab dijelaskan +dijelaskannya dikarenakan dikatakan dikatakannya dikerjakan diketahui +diketahuinya dikira dilakukan dilalui dilihat dimaksud dimaksudkan +dimaksudkannya dimaksudnya diminta dimintai dimisalkan dimulai dimulailah +dimulainya dimungkinkan dini dipastikan diperbuat diperbuatnya dipergunakan +diperkirakan diperlihatkan diperlukan diperlukannya dipersoalkan dipertanyakan +dipunyai diri dirinya disampaikan disebut disebutkan disebutkannya disini +disinilah ditambahkan ditandaskan ditanya ditanyai ditanyakan ditegaskan +ditujukan ditunjuk ditunjuki ditunjukkan ditunjukkannya ditunjuknya dituturkan +dituturkannya diucapkan diucapkannya diungkapkan dong dua dulu + +empat enggak enggaknya entah entahlah + +guna gunakan + +hal hampir hanya hanyalah hari harus haruslah harusnya hendak hendaklah +hendaknya hingga + +ia ialah ibarat ibaratkan ibaratnya ibu ikut ingat ingat-ingat ingin inginkah +inginkan ini inikah inilah itu itukah itulah + +jadi jadilah jadinya jangan jangankan janganlah jauh jawab jawaban jawabnya +jelas jelaskan jelaslah jelasnya jika jikalau juga jumlah jumlahnya justru + +kala kalau kalaulah kalaupun kalian kami kamilah kamu kamulah kan kapan +kapankah kapanpun karena karenanya kasus kata katakan katakanlah katanya ke +keadaan kebetulan kecil kedua keduanya keinginan kelamaan kelihatan +kelihatannya kelima keluar kembali kemudian kemungkinan kemungkinannya kenapa +kepada kepadanya kesampaian keseluruhan keseluruhannya keterlaluan ketika +khususnya kini kinilah kira kira-kira kiranya kita kitalah kok kurang + +lagi lagian lah lain lainnya lalu lama lamanya lanjut lanjutnya lebih lewat +lima luar + +macam maka makanya makin malah malahan mampu mampukah mana manakala manalagi +masa masalah masalahnya masih masihkah masing masing-masing mau maupun +melainkan melakukan melalui melihat melihatnya memang memastikan memberi +memberikan membuat memerlukan memihak meminta memintakan memisalkan memperbuat +mempergunakan memperkirakan memperlihatkan mempersiapkan mempersoalkan +mempertanyakan mempunyai memulai memungkinkan menaiki menambahkan menandaskan +menanti menanti-nanti menantikan menanya menanyai menanyakan mendapat +mendapatkan mendatang mendatangi mendatangkan menegaskan mengakhiri mengapa +mengatakan mengatakannya mengenai mengerjakan mengetahui menggunakan +menghendaki mengibaratkan mengibaratkannya mengingat mengingatkan menginginkan +mengira mengucapkan mengucapkannya mengungkapkan menjadi menjawab menjelaskan +menuju menunjuk menunjuki menunjukkan menunjuknya menurut menuturkan +menyampaikan menyangkut menyatakan menyebutkan menyeluruh menyiapkan merasa +mereka merekalah merupakan meski meskipun meyakini meyakinkan minta mirip +misal misalkan misalnya mula mulai mulailah mulanya mungkin mungkinkah + +nah naik namun nanti nantinya nyaris nyatanya + +oleh olehnya + +pada padahal padanya pak paling panjang pantas para pasti pastilah penting +pentingnya per percuma perlu perlukah perlunya pernah persoalan pertama +pertama-tama pertanyaan pertanyakan pihak pihaknya pukul pula pun punya + +rasa rasanya rata rupanya + +saat saatnya saja sajalah saling sama sama-sama sambil sampai sampai-sampai +sampaikan sana sangat sangatlah satu saya sayalah se sebab sebabnya sebagai +sebagaimana sebagainya sebagian sebaik sebaik-baiknya sebaiknya sebaliknya +sebanyak sebegini sebegitu sebelum sebelumnya sebenarnya seberapa sebesar +sebetulnya sebisanya sebuah sebut sebutlah sebutnya secara secukupnya sedang +sedangkan sedemikian sedikit sedikitnya seenaknya segala segalanya segera +seharusnya sehingga seingat sejak sejauh sejenak sejumlah sekadar sekadarnya +sekali sekali-kali sekalian sekaligus sekalipun sekarang sekarang sekecil +seketika sekiranya sekitar sekitarnya sekurang-kurangnya sekurangnya sela +selain selaku selalu selama selama-lamanya selamanya selanjutnya seluruh +seluruhnya semacam semakin semampu semampunya semasa semasih semata semata-mata +semaunya sementara semisal semisalnya sempat semua semuanya semula sendiri +sendirian sendirinya seolah seolah-olah seorang sepanjang sepantasnya +sepantasnyalah seperlunya seperti sepertinya sepihak sering seringnya serta +serupa sesaat sesama sesampai sesegera sesekali seseorang sesuatu sesuatunya +sesudah sesudahnya setelah setempat setengah seterusnya setiap setiba setibanya +setidak-tidaknya setidaknya setinggi seusai sewaktu siap siapa siapakah +siapapun sini sinilah soal soalnya suatu sudah sudahkah sudahlah supaya + +tadi tadinya tahu tahun tak tambah tambahnya tampak tampaknya tandas tandasnya +tanpa tanya tanyakan tanyanya tapi tegas tegasnya telah tempat tengah tentang +tentu tentulah tentunya tepat terakhir terasa terbanyak terdahulu terdapat +terdiri terhadap terhadapnya teringat teringat-ingat terjadi terjadilah +terjadinya terkira terlalu terlebih terlihat termasuk ternyata tersampaikan +tersebut tersebutlah tertentu tertuju terus terutama tetap tetapi tiap tiba +tiba-tiba tidak tidakkah tidaklah tiga tinggi toh tunjuk turut tutur tuturnya + +ucap ucapnya ujar ujarnya umum umumnya ungkap ungkapnya untuk usah usai + +waduh wah wahai waktu waktunya walau walaupun wong + +yaitu yakin yakni yang +""".split()) diff --git a/spacy/lang/id/tokenizer_exceptions.py b/spacy/lang/id/tokenizer_exceptions.py index 1e5282e52..f5dea30a9 100644 --- a/spacy/lang/id/tokenizer_exceptions.py +++ b/spacy/lang/id/tokenizer_exceptions.py @@ -1,10 +1,11 @@ +""" +Daftar singkatan dan Akronim dari: +https://id.wiktionary.org/wiki/Wiktionary:Daftar_singkatan_dan_akronim_bahasa_Indonesia#A +""" # coding: utf8 from __future__ import unicode_literals -import regex as re - from ._tokenizer_exceptions_list import ID_BASE_EXCEPTIONS -from ..tokenizer_exceptions import URL_PATTERN from ...symbols import ORTH, LEMMA, NORM @@ -22,6 +23,9 @@ for orth in ID_BASE_EXCEPTIONS: orth_lower = orth.lower() _exc[orth_lower] = [{ORTH: orth_lower}] + orth_first_upper = orth[0].upper() + orth[1:] + _exc[orth_first_upper] = [{ORTH: orth_first_upper}] + if '-' in orth: orth_title = '-'.join([part.title() for part in orth.split('-')]) _exc[orth_title] = [{ORTH: orth_title}] @@ -30,28 +34,6 @@ for orth in ID_BASE_EXCEPTIONS: _exc[orth_caps] = [{ORTH: orth_caps}] for exc_data in [ - {ORTH: "CKG", LEMMA: "Cakung", NORM: "Cakung"}, - {ORTH: "CGP", LEMMA: "Grogol Petamburan", NORM: "Grogol Petamburan"}, - {ORTH: "KSU", LEMMA: "Kepulauan Seribu Utara", NORM: "Kepulauan Seribu Utara"}, - {ORTH: "KYB", LEMMA: "Kebayoran Baru", NORM: "Kebayoran Baru"}, - {ORTH: "TJP", LEMMA: "Tanjungpriok", NORM: "Tanjungpriok"}, - {ORTH: "TNA", LEMMA: "Tanah Abang", NORM: "Tanah Abang"}, - - {ORTH: "BEK", LEMMA: "Bengkayang", NORM: "Bengkayang"}, - {ORTH: "KTP", LEMMA: "Ketapang", NORM: "Ketapang"}, - {ORTH: "MPW", LEMMA: "Mempawah", NORM: "Mempawah"}, - {ORTH: "NGP", LEMMA: "Nanga Pinoh", NORM: "Nanga Pinoh"}, - {ORTH: "NBA", LEMMA: "Ngabang", NORM: "Ngabang"}, - {ORTH: "PTK", LEMMA: "Pontianak", NORM: "Pontianak"}, - {ORTH: "PTS", LEMMA: "Putussibau", NORM: "Putussibau"}, - {ORTH: "SBS", LEMMA: "Sambas", NORM: "Sambas"}, - {ORTH: "SAG", LEMMA: "Sanggau", NORM: "Sanggau"}, - {ORTH: "SED", LEMMA: "Sekadau", NORM: "Sekadau"}, - {ORTH: "SKW", LEMMA: "Singkawang", NORM: "Singkawang"}, - {ORTH: "STG", LEMMA: "Sintang", NORM: "Sintang"}, - {ORTH: "SKD", LEMMA: "Sukadane", NORM: "Sukadane"}, - {ORTH: "SRY", LEMMA: "Sungai Raya", NORM: "Sungai Raya"}, - {ORTH: "Jan.", LEMMA: "Januari", NORM: "Januari"}, {ORTH: "Feb.", LEMMA: "Februari", NORM: "Februari"}, {ORTH: "Mar.", LEMMA: "Maret", NORM: "Maret"}, @@ -66,25 +48,43 @@ for exc_data in [ {ORTH: "Des.", LEMMA: "Desember", NORM: "Desember"}]: _exc[exc_data[ORTH]] = [exc_data] +_other_exc = { + "do'a": [{ORTH: "do'a", LEMMA: "doa", NORM: "doa"}], + "jum'at": [{ORTH: "jum'at", LEMMA: "Jumat", NORM: "Jumat"}], + "Jum'at": [{ORTH: "Jum'at", LEMMA: "Jumat", NORM: "Jumat"}], + "la'nat": [{ORTH: "la'nat", LEMMA: "laknat", NORM: "laknat"}], + "ma'af": [{ORTH: "ma'af", LEMMA: "maaf", NORM: "maaf"}], + "mu'jizat": [{ORTH: "mu'jizat", LEMMA: "mukjizat", NORM: "mukjizat"}], + "Mu'jizat": [{ORTH: "Mu'jizat", LEMMA: "mukjizat", NORM: "mukjizat"}], + "ni'mat": [{ORTH: "ni'mat", LEMMA: "nikmat", NORM: "nikmat"}], + "raka'at": [{ORTH: "raka'at", LEMMA: "rakaat", NORM: "rakaat"}], + "ta'at": [{ORTH: "ta'at", LEMMA: "taat", NORM: "taat"}], +} + +_exc.update(_other_exc) + for orth in [ "A.AB.", "A.Ma.", "A.Md.", "A.Md.Keb.", "A.Md.Kep.", "A.P.", "B.A.", "B.Ch.E.", "B.Sc.", "Dr.", "Dra.", "Drs.", "Hj.", "Ka.", "Kp.", - "M.AB", "M.Ag.", "M.AP", "M.Arl", "M.A.R.S", "M.Hum.", "M.I.Kom.", "M.Kes,", - "M.Kom.", "M.M.", "M.P.", "M.Pd.", "M.Psi.", "M.Psi.T.", "M.Sc.", "M.SArl", - "M.Si.", "M.Sn.", "M.T.", "M.Th.", "No.", "Pjs.", "Plt.", "R.A.", + "M.AB", "M.Ag.", "M.AP", "M.Arl", "M.A.R.S", "M.Hum.", "M.I.Kom.", + "M.Kes,", "M.Kom.", "M.M.", "M.P.", "M.Pd.", "M.Psi.", "M.Psi.T.", "M.Sc.", + "M.SArl", "M.Si.", "M.Sn.", "M.T.", "M.Th.", "No.", "Pjs.", "Plt.", "R.A.", "S.AB", "S.AP", "S.Adm", "S.Ag.", "S.Agr", "S.Ant", "S.Arl", "S.Ars", "S.A.R.S", "S.Ds", "S.E.", "S.E.I.", "S.Farm", "S.Gz.", "S.H.", "S.Han", - "S.H.Int", "S.Hum", "S.Hut.", "S.In.", "S.IK.", "S.I.Kom.", "S.I.P", "S.IP", - "S.P.", "S.Pt", "S.Psi", "S.Ptk", "S.Keb", "S.Ked", "S.Kep", "S.KG", "S.KH", - "S.Kel", "S.K.M.", "S.Kedg.", "S.Kedh.", "S.Kom.", "S.KPM", "S.Mb", "S.Mat", - "S.Par", "S.Pd.", "S.Pd.I.", "S.Pd.SD", "S.Pol.", "S.Psi.", "S.S.", "S.SArl.", - "S.Sn", "S.Si.", "S.Si.Teol.", "S.SI.", "S.ST.", "S.ST.Han", "S.STP", "S.Sos.", - "S.Sy.", "S.T.", "S.T.Han", "S.Th.", "S.Th.I" "S.TI.", "S.T.P.", "S.TrK", - "S.Tekp.", "S.Th.", - "a.l.", "a.n.", "a.s.", "b.d.", "d.a.", "d.l.", "d/h", "dkk.", "dll.", - "dr.", "drh.", "ds.", "dsb.", "dst.", "faks.", "fax.", "hlm.", "i/o", - "n.b.", "p.p." "pjs.", "s.d.", "tel.", "u.p.", - ]: + "S.H.Int", "S.Hum", "S.Hut.", "S.In.", "S.IK.", "S.I.Kom.", "S.I.P", + "S.IP", "S.P.", "S.Pt", "S.Psi", "S.Ptk", "S.Keb", "S.Ked", "S.Kep", + "S.KG", "S.KH", "S.Kel", "S.K.M.", "S.Kedg.", "S.Kedh.", "S.Kom.", "S.KPM", + "S.Mb", "S.Mat", "S.Par", "S.Pd.", "S.Pd.I.", "S.Pd.SD", "S.Pol.", + "S.Psi.", "S.S.", "S.SArl.", "S.Sn", "S.Si.", "S.Si.Teol.", "S.SI.", + "S.ST.", "S.ST.Han", "S.STP", "S.Sos.", "S.Sy.", "S.T.", "S.T.Han", + "S.Th.", "S.Th.I" "S.TI.", "S.T.P.", "S.TrK", "S.Tekp.", "S.Th.", + "Prof.", "drg.", "KH.", "Ust.", "Lc", "Pdt.", "S.H.H.", "Rm.", "Ps.", + "St.", "M.A.", "M.B.A", "M.Eng.", "M.Eng.Sc.", "M.Pharm.", "Dr. med", + "Dr.-Ing", "Dr. rer. nat.", "Dr. phil.", "Dr. iur.", "Dr. rer. oec", + "Dr. rer. pol.", "R.Ng.", "R.", "R.M.", "R.B.", "R.P.", "R.Ay.", "Rr.", + "R.Ngt.", "a.l.", "a.n.", "a.s.", "b.d.", "d.a.", "d.l.", "d/h", "dkk.", + "dll.", "dr.", "drh.", "ds.", "dsb.", "dst.", "faks.", "fax.", "hlm.", + "i/o", "n.b.", "p.p." "pjs.", "s.d.", "tel.", "u.p."]: _exc[orth] = [{ORTH: orth}] TOKENIZER_EXCEPTIONS = _exc