Indonesian Simple Sentence Segmentation

December 11, 2021
NLP Sentence Segmentation

Hi… 👋 It’s been a while since my last blogpost (it’s not a while, its a very long time tbh… 😂) but that’s fine I guess, been busy lately and I think a lil bit spare some time for writing (again) is a good for keeping the mood and my sanity LOL 🤖

In this post, I will write a post about sentence-segmentation or sentence segmenter that I wrote years ago (around 2015-2016) during the time I am completing my master thesis. And I will continue to write the story in Bahasa Indonesia because the sentence segmenter I wrote is for Bahasa Indonesia 🇮🇩.

And here is the story,

Di tahun 2015-2016 saya sedang berusaha menyelesaikan master thesis saya ketika melanjutkan studi master di UGM. fokus riset saya ada di bidang NLP yang fokusnya adalah meningkatkan performa model untuk task NER dengan bantuan algoritma co-training. Pada saat proses pengerjaan saya tentunya banyak mendapatkan tantangan-tantangan tersendiri dalam menyelesaikan sub-task NLP terkait materi thesis yang salah satunya adalah task untuk memecah teks berupa paragraf menjadi kalimat atau yang sering kita sebut dengan task sentence segmentation di NLP.

TL;DR; Sentence segmentation adalah sub-task dari NLP yang tujuannya adalah memecah teks ke dalam format kalimat, kalimat di sini merupakan kalimat yang dalam bahasa Indonesia merupakan kumpulan kata yang dapat berdiri sendiri dan memiliki makna lengkap. Kalimat dalam bahasa Indonesia biasanya diawali dengan huruf kapital dan diakhiri oleh tanda baca “.” (titik), “?” (tanya) dan “!” (seru).

Pada waktu itu sudah ada beberapa pustaka/library yang dapat digunakan untuk menyelesaikan task pemecah kalimat seperti NLTK dan Stanford NLP, namun pustaka tersebut ketika saya gunakan untuk dataset dari berita online yang saya gunakan sebagai dataset penelitian, hasilnya tidak memuaskan. beberapa catatan yang saya ingat mengenai kekurangan pustaka-pustaka tersebut antara lain:

  1. Memecah kalimat dengan hanya membaca sentence terminator seperti “.”, “?” dan “!”.
  2. Pada kalimat-kalimat berita terdapat banyak singkatan yang diikuti tanda titik sebagai penanda singkatan di tengah kalimat seperti: Plt. Gubernur DKI Jakarta; atau tanda titik dalam simbol ukuran atau mata uang
  3. Pada kasus yang saya hadapi, konten berita bisa memiliki kalimat dengan kutipan yang lebih dari satu kalimat, sehingga kalimat yang harusnya tidak terbagi karena kalimat di dalam kutipan menjadi terbagi, sehingga kalimat yang dihasilkan menjadi kurang bermakna.

setidaknya tiga hal tersebut yang menjadikan saya akhirnya mencoba-coba untuk mengembangkan sentence segmenter secara mandiri dengan pendekatan “rule-based”. Bisa saya katakan sederhana karena pendekatan yang dilakukan adalah hanya berdasarkan rule serta implementasinya tidak begitu memikirkan opimisasi algoritma sentence segmenternya. 🙃

Di tulisan ini saya lampirkan pula repository ke sentence-segmenter yang saya buat terdahulu dengan beberapa contoh pemakaiannya. perlu untuk dicatat kode ini mungkin tidak optimize dan masih banyak menghasilkan output yang tidak sesuai, namun saya pribadi merasa lebih puas dengan hasil pemrosesan kalimat ini dibandingkan dengan hasil dari library sentence-segmenter lainnya yang ada pada saat itu dan hingga hari modul ini masih sering saya gunakan.

kode lengkap ada di git: https://github.com/yudanta/id-sentence-segmenter

berikut contoh penggunaan modul sentence-segmentation tersebut:

  • import module sentence segmentation
    from idsentsegmenter.sentence_segmentation import SentenceSegmentation
    
  • mendapatkan/parsing kalimat dari text
    # create sentence segmenter instance from SentenceSegmentation class
    sentence_segmenter = SentenceSegmentation()
    
    # parse text to sentences 
    sentences = sentence_segmenter.get_sentences(news_content)
    

berikut adalah contoh input teks sebuah berita dari situs Kompas.com Polres Bogor Siapkan 10 Posko Pemeriksaan Ganjil Genap Jelang Nataru

konten berita:

Berbagai upaya dilakukan oleh Pemerintah Daerah untuk mengurangi persebaran virus covid-19 menjelang libur natal dan tahun baru 2022, tidak terkecuali Pemerintah Kabupaten Bogor, Jawa Barat. Seperti yang dilakukan Satlantas Polres Bogor yang telah menyipakan 10 titik posko pemeriksaan ganjil genap dan protokol kesehatan di jalan menuju kawasan wisata Puncak Bogor. Selain pos-pos pemeriksaan, Polres Bogor juga akan memberlakukan sistem ganjil genap dan melakukan pemeriksaan surat hasil swab antigen atau PCR. Check point itu mulai diujicobakan petugas mulai 20 Desember 2021 hingga 2 Januari 2022. Kasatlantas Polres Bogor AKP Dicky Anggi Pranata mengatakan, nantinya di kawasan Puncak Bogor akan berlaku ganjil genap dan juga pemeriksan swab antigen dan PCR. “Kemarin sudah ada formula dan keputusan nanti di Puncak dan sekitarnya akan berlaku ganjil genap dan pemeriksaan swab antigen dan PCR,” kata Dicky dalam keterangan resmi, Sabtu (11/12/2021). Hal itu sesuai dengan keputusan dari pertemuan lima Kapolres di wilayah Puncak Raya juga dengan kebijakan Menteri dalam negeri nomor 63, Kementerian Koordinator Bidang Kemaritiman dan Investasi Republik Indonesia serta kebijakan oleh Direktorat Jenderal Perhubungan Darat. Bahwasanya, di beberapa ruas tol salah satunya Tol Bogor sampai Cigombong (Bocimi) itu akan belaku ganjil genap. “Karena itu akan ada penambahan dua pos lagi, saat ini sudah ada delapan pos menjadi 10 pos,” ucapnya. Lokasi pos pengamanan masih sama dengan check point ganjil genap yang telah diberlakukan sebelumnya. Beberapa titik pos tersebut antara lain dua titik di kawasan Sentul dan enam titik menuju Puncak. Hanya saja ditambah dua titik lagi di Caringin dan Cigombong. Petugas gabungan menerapkan ganjil genap di depan Gerbang Tol Pasteur Bandung, Jumat (17/9/2021). Sebanyak 640 kendaraan diputarbalikkan lantaran tak sesuai dengan nomor ganjil genap hari ini. “Kendaraan tidak sesuai kita putar balik ke daerah asal. Kalau pemeriksaan PeduliLindungi bukan di kita, tapi tempat tujuan restoran atau wisata,” kata Dicky. Tidak hanya pemeriksaan ganjil genap kendaraan dan hasil swab antigen atau PCR, posko-posko itu juga akan melayani vaksinasi covid-19. Sehingga, bagi masyarakat atau pegendara yang belum divaksin bisa memanfaatkan layanan tersebut secara gratis.

hasil dari pemrosesan pemecah kalimat:

1 - Berbagai upaya dilakukan oleh Pemerintah Daerah untuk mengurangi persebaran virus covid-19 menjelang libur natal dan tahun baru 2022, tidak terkecuali Pemerintah Kabupaten Bogor, Jawa Barat.
2 - Seperti yang dilakukan Satlantas Polres Bogor yang telah menyipakan 10 titik posko pemeriksaan ganjil genap dan protokol kesehatan di jalan menuju kawasan wisata Puncak Bogor.
3 - Selain pos-pos pemeriksaan, Polres Bogor juga akan memberlakukan sistem ganjil genap dan melakukan pemeriksaan surat hasil swab antigen atau PCR.
4 - Check point itu mulai diujicobakan petugas mulai 20 Desember 2021 hingga 2 Januari 2022.
5 - Kasatlantas Polres Bogor AKP Dicky Anggi Pranata mengatakan, nantinya di kawasan Puncak Bogor akan berlaku ganjil genap dan juga pemeriksan swab antigen dan PCR.
6 - "Kemarin sudah ada formula dan keputusan nanti di Puncak dan sekitarnya akan berlaku ganjil genap dan pemeriksaan swab antigen dan PCR," kata Dicky dalam keterangan resmi, Sabtu (11/12/2021).
7 - Hal itu sesuai dengan keputusan dari pertemuan lima Kapolres di wilayah Puncak Raya juga dengan kebijakan Menteri dalam negeri nomor 63, Kementerian Koordinator Bidang Kemaritiman dan Investasi Republik Indonesia serta kebijakan oleh Direktorat Jenderal Perhubungan Darat.
8 - Bahwasanya, di beberapa ruas tol salah satunya Tol Bogor sampai Cigombong (Bocimi) itu akan belaku ganjil genap.
9 - "Karena itu akan ada penambahan dua pos lagi, saat ini sudah ada delapan pos menjadi 10 pos," ucapnya.
10 - Lokasi pos pengamanan masih sama dengan check point ganjil genap yang telah diberlakukan sebelumnya.
11 - Beberapa titik pos tersebut antara lain dua titik di kawasan Sentul dan enam titik menuju Puncak.
12 - Hanya saja ditambah dua titik lagi di Caringin dan Cigombong.
13 - Petugas gabungan menerapkan ganjil genap di depan Gerbang Tol Pasteur Bandung, Jumat (17/9/2021).
14 - Sebanyak 640 kendaraan diputarbalikkan lantaran tak sesuai dengan nomor ganjil genap hari ini.
15 - "Kendaraan tidak sesuai kita putar balik ke daerah asal. Kalau pemeriksaan PeduliLindungi bukan di kita, tapi tempat tujuan restoran atau wisata," kata Dicky.
16 - Tidak hanya pemeriksaan ganjil genap kendaraan dan hasil swab antigen atau PCR, posko-posko itu juga akan melayani vaksinasi covid-19.
17 - Sehingga, bagi masyarakat atau pegendara yang belum divaksin bisa memanfaatkan layanan tersebut secara gratis.

Demikian sedikit membagikan apa yang saya alami pada tahun 2015-2016 ketika saya harus menyelesaikan permasalahan pemecah kalimat atau sentence segmenter untuk teks berbahasa Indonesia, mungkin saat ini sudah banyak module atau library lain untuk memecahkan task sentence segmentation dengan berbagai pendekatan seperti pendekatan statistik maupun machine learning yang hasilnya bisa jadi lebih baik.

Terima kasih! 🤖

comments powered by Disqus