KJN: ya ampun Gan... gampang banget ... ente masih Noob sih ... gini nih Gan caranya:
Sentence = "ini adalah kalimat pertama. berikutnya ini kalimat kedua"
Sentence.split(".")
Tuh Gan.... ente kudu belajar dulu ya yg banyak sebelum nulis blog .... #Sedakep, #PalaTengadah, #Mangap #Ngences #MintaDiGampar
TS: O iya kah? kalau kalimatnya begini bagaimana?
kalimat = "Halo apa kabar .... Ada yang bisa kami bantu Mr. Han?"
KJN: anu Gan ... itu mah masalah lu, bukan masalah gue .... #TambahMintaDiGampar ...
Segmentasi kalimat gampang-gampang susah. Ia dibutuhkan terutama ketika kita mengolah teks hasil speech recognition (misal Alexa/Siri/Cortana), OCR, atau sumber text lain yang rentan akan noise dalam ill-formed string. Tanda titik "." tidak selalu menandakan akhir kalimat. Apalagi jika string adalah hasil speech recognition, long pause juga not necessarily means a sentence. Contoh lain adalah apabila ada singkatan (misal et.al. ), URL (alamat website di internet), nama file dengan ekstensi, dsb. Saking rumitnya, bahkan manusia saja terkadang kesulitan untuk memisahkan kalimat.
Ok, sebelum kita membahas lebih jauh, mari kita gunakan beberapa modul yang sudah ada saja dulu untuk segmentasi kalimat. Dari beberapa contoh ini akan semakin menguatkan kita bahwa memisahkan kalimat adalah suatu maslaah yang cukup signifikan di NLP/Text Mining.
Saya akan menggunakan/mencontohkan 3 modul NLP di Python yang paling tenar: NLTK, TextBlob, dan Spacy. Note, saya ndak begitu suka OpenNLP for some reasons yang ndak ingin saya bahasa di sini.
KJN: udah cepetan bahas Gan... jangan kebanyakan kecap, entar kemanisan ... kayak politikus kampanye aje ngomongnye manis-manis gituh ...
TS: #ngasahGolok
NLTK:
Output:
['Hello, Mr. Man.', 'He smiled!!', 'This, i.e.', 'that, is it.']
TextBlob:
Output:
[Sentence("Hello, Mr. Man."), Sentence("He smiled!!"), Sentence("This, i.e."), Sentence("that, is it.")]
Spacy:
Output:
['Hello, Mr. Man.', 'He smiled!!', 'This, i.e. that, is it.']
Notice perbedaan hasil segmentasinya? .... Bahkan diantara modul NLP terkenal saja ada ketidaksamaan hasil. Hal ini semakin menguatkan bahwa sentence segmentation is not that easy.
KJN: Berarti yang bener cara gue kan?... gue bilang juga ape...
TS: ... #tebas .... #kelapa ... #haus ...
Mencari benar-salah atau cara terbaik disini akan sangat sulit sekali. Karena seperti yang sudah dibahas sebelumnya begitu banyak kasus berbeda yang harus di pertimbangkan: URL, speech recognition, ocr, abbreviation, dll .... namun karena environment/application dependent, kalau saya pribadi berarti lebih suka rule-based sentence segmentation.
KJN: Gan, ente ngomong apa kumur-kumur ... apaan tuh rule-based segmentation ... ente lagi puber?
TS: #ambilWudhu #shalatSunah2Rakaat ....
Ada modul python khusus yang memungkinkan kita untuk melakukan segmentasi kalimat berdasarkan aturan (rule) tertentu. Salah satunya ...
http://fnl.es/segtok-a-segmentation-and-tokenization-library.html
https://github.com/fnl/segtok
KJN: Ribet amat sih Gan .. gue biasanya jadi konsultan perusahaan internasional PT gombal-gambel pake segmentasi kalimat yang biasa baik-baik aja kok...
TS: nah kali ini komen-nya rada bener luh tong... Tumben ada bagusnye dikit omongan luh. Nape? Ciki rasa Mi'cin abis?... #sekaliKaliGantianNgeselin.
Komentar terakhir KJN ada benernya. Pada kasus umum dimana datanya well-formatted seperti teks dari website, document (doc/csv), dan semacamnya biasanya (>90%) segmentasinya sudah akurat dengan cara standar. Namun ada kalanya kita membutuhkan akurasi yang lebih baik dan-atau aplikasinya memaksa kita untuk menggunakan segmentasi kalimat yang tidak standar (OCR, speech recognition, AI, dll).
That's it .... hanya itu pembahasan di post kali ini.
Cheers,
</TES>®