Re-Public Natural Language Processing Carik

Luri Darmawan
5 min readMay 13, 2018

--

Sedang membuat Bot tetapi rasanya monoton? Atau sedang membangun search-engine yang bisa ngertiin apa yang diketik user? Boleh coba baca sebentar tulisan ini.

Melanjutkan tulisan sebelumnya mengenai Stemming Word dan Natural Language Processing yang diterapkan ke dalam ChatBot Carik. Kali ini saya menuliskan bagaimana menggunakan tools ini untuk diintegrasikan ke aplikasi Anda.

Stemming Tools

Pernah menjumpai tampilan ini?

Stemming Tools di https://luridarmawan.github.io/StemmingWord/

Ini adalah tampilan dari Stemming Tools di https://luridarmawan.github.io/StemmingWord/. Fungsinya untuk memetakan dan menguraikan bentuk dari suatu kata menjadi bentuk kata dasarnya. Sepintas memang terlihat sederhana.

Tools ini bisa Anda deploy sendiri, source-code dan cara instalasi sudah tersedia di https://github.com/luridarmawan/StemmingWord.

Buat teman-teman belum sempat deploy, tetapi ingin menggunakan tools ini, Carik menyediakan API/Service yang simple untuk digunakan. Coba catat konfigurasi ini:

API Endpoint : https://public-nlp.carik.id/v1/stemming
Method : POST
Parameter :
- text : kalimat yang akan distemming

Untuk pengujiannya, bisa menggunakan API Tester Tools seperti Postman, Fortress, Mocky.io atau bisa juga menggunakan CURL.

Test menggunakan Postman

Jika menggunakan CURL, anda bisa menggunakan pola berikut:

curl "https://public-nlp.carik.id/v1/stemming" -X POST -d "text=teks yang akan distemmimng"

hasilnya kurang lebih akan seperti ini:

test menggunakan Curl

Dari 2 (dua) contoh di atas, terlihat tools ini juga mempunyai fitur untuk mencari kata tidak baku, dan ditemukan pula jumlah kata yang tidak/belum dikenal dan juga sedikit fitur POS Tagging super sederhana.

Public NLP

Lalu, apa sih manfaatnya stemming tools ini?
Stemming sangat berguna salah satunya bagi mereka yang sedang mengembangkan tools Information Retrieval (IR). Implementasi sederhana adalah digunakan di dalam ChatBot, contohnya adalah Chatbot Carik sendiri, yang berjalan di platform Facebook Messenger, Telegram, Line, Skype, dan juga Slack bahkan untuk sekedar otomasi chat di web.

Stemming sangat bermanfaat untuk kebutuhan NLP (Natural Language Processing).

Dengan NLP, kita bisa mencoba memahami maksud yang terkandung dalam suatu pesan singkat dari seseorang, atau bahkan dari suatu kalimat yang komplek dari suatu buku.

Untuk mengenal lebih dasar, boleh dibaca terlebih dahulu tulisan pengantar saya tentang NLP (Natural Language Processing).

Bisakah saya membuat NLP sendiri?
Tentu saja bisa, banyak tools yang tersedia, banyak source yang bisa didapat.

Bisakah saya menggunakan NLP dari Carik ini di server saya?
Bisa, source code sudah tersedia di repository Carik di github, tersedia juga informasi cara instalasinya. Anda bahkan bisa menginstalasinya di server hosting cPanel biasa, tanpa harus menggunakan dedicated server ataupun vps.

Saya tidak punya development team, bolehkah saya menggunakan NLP Carik yang sudah live?
Boleh sekali, tetapi saya sangat menyarankan bagi Anda untuk memiliki team yang sedikitnya paham mengenai pemrograman.
Silakan catat dan gunakan informasi ini.

API Endpoint : https://public-nlp.carik.id/v1/
Method : POST
Parameter : raw data dengan format
{"message":{"message_id":0,"chat":{"id":0},"text":"pesankamu"}}

Untuk kebutuhan saat ini, anda cukup mengganti isi field “text” dengan sembarang kalimat yang akan diproses. Hasilnya akan terkategori dalam suatu intents. Tentunya masih banyak kalimat yang belum dimengerti oleh engine ini. Tetapi semakin sering digunakan, akan semakin pintar dan kaya perbendaharaan yang bisa diakomodir.

Pengujian sederhana.
Seperti halnya dengan stemming-tools di atas, pengujian bisa dilakukan dengan menggunakan API Tester Tools seperti Postman, Fortress, Mocky.io atau bisa juga menggunakan CURL dari console/terminal.

Jika menggunakan CURL, perintahnya bisa seperti ini:

curl "http://public-nlp.carik.id/v1/" -X POST -d '{"message":{"message_id":0,"chat":{"id":0},"text":"Hi"}}'

hasilnya seperti berikut:

contoh result dari Curl

Jika ditest melalui Postman, coba gunakan cara seperti ini

dan hasilnya menjadi seperti ilustrasi di bawah ini:

Jika diekstrak hasilnya sebagai plain-text, akan terlihat :

{
"code": 0,
"request": {
"text": "halo, apa kabar"
},
"stemming": {
"text": "halo apa kabar",
"wordcount": "3",
"nonstandardword_count": "0",
"unknownword_count": "1",
"response": [
{
"word": "halo",
"wordtype": "-",
"type": "0",
"score": "0"
},
{
"word": "apa",
"wordtype": "Pronomina",
"type": "3",
"score": "0"
},
{
"word": "kabar",
"wordtype": "Nomina",
"type": "2",
"score": "0"
}
]
},
"response": {
"intents": {
"action": "",
"name": "Greeting",
"parameters": {
"$1": "halo",
"Greeting": "hi",
"Greeting_value": "halo"
}
},
"text": [
"Hi, selamat pagi..."
]
}
}

Field “text” adalah respon yang diberikan oleh NLP Carik. Anda bisa langsung menggunakannya sebagai respon Bot Anda, atau boleh juga mengolahnya lagi sesuai hasil stemming yang ada.

Naah.. silakan dicoba, dan silakan diterapkan ke dalam ChatBot atau tools Anda.

Simple dan menarik bukan?

Sebagai penutup, dengan menggunakan fitur-fitur ini, lalu diteruskan ke sistem AI (Artificial Intelligence) atau ML (Machine Learning) yang Anda miliki, tentunya Bot yang sedang Anda bangun akan semakin lebih menarik lagi, lebih punya rasa dan bahkan mungkin bisa punya emosi.

Selamat Mencoba.

CATATAN PENTING:

POS (Part-of-Speech) Tag merupakan suatu cara pengkategorian kelas kata, seperti kata benda, kata kerja, kata sifat, dll. Informasi dari POS Tag ini merupakan hal mendasar untuk keperluan pengolahan bahasa (Natural Language Processing). Tagging yang umum digunakan adalah ‘nn’, ‘nnc’, ‘nnu’, ‘jj’, ‘in’, ‘,’, ‘vbt’, ‘cc’, ‘nnp’, ‘sym’, ‘cdp’, ‘vbi’, ‘fw’, ‘sc’, ‘.’, ‘rb’, ‘nng’, ‘cdi’, ‘cdo’, ‘neg’, ‘dt’, ‘prp’, ‘–’, ‘md’, ‘wrb’, ‘:’, ‘-’, ‘nns’, ‘prn’, ‘prl’, ‘rp’, ‘vb’, ‘wp’, ‘cdc’, dan ‘uh’.

Luri Darmawan bukan orang yang sehari-hari berkecimpung di dunia data-science, bukan praktisi / pengamat bahasa, hanya penyuka teknologi khususnya pemrograman pascal yang senang develop sesuatu.

Part #1Natural Language Processing (NLP) sederhana dari Carik Bot

--

--