Spacy for NLP

Spacy for NLP

Definisi

NLP merupakan Ilmu yang mempelajari mengenai interaksi antara komputer dan bahasa alami manusia, bagaimana cara memprogram komputer untuk memproses dan menganalisis bahasa alami manusia. Beberapa contoh kasus penerapan NLP adalah

  • Klasifikasi Email Spam
  • Sentiment Analysis untuk Review Film
  • Analisis trend pada Fedback Form Custimers
  • Understanding text command “Hey Google, play this songs”

Kita bisa menggunakan beberapa package yang sudah ada di python seperti spacy, nltk dan CoreNLP. Pada dasarnya spacy dan nltk sama-sama open source dan digunakan untuk kasus NLP. Meskipun begitu terdapat beberapa perbedaan diantara keduanya.

Spacy lebih efisien (lower time execution) dibandingkan nltk dan CoreNLP. Namun Spacy tidak memasukkan pre-created model seperti di sentiment analysis dimana hal itu secara mudah bisa kita lakukan  jika menggunakan NLTK.

NLP bisa dilakukan menggunakan python via Jupyter Notebook. Namun, seringkali terjadi masalah dependensi package yang cukup memusingkan kepala. Oleh karena itu kita bisa menggunakan Google Collab di sini. Bisa dikatakan bahwa Google Collab ini merupakan Jupyter Notebook versi web-based.

Linguistic Features

Saat menganalisis data text kita perlu membagi setiap token agar bisa dimengerti oleh komputer. Oleh karena itu dibutuhkan suatu tahapan-tahapan dari mulai memecah kalimat menjadi token, memberikan label, cleaning data hingga bisa dimengerti oleh komputer. Kompoenen tersebut dikenal sebagai linguistic features yaitu

1. POS tagging

Dalam ilmu bahasa inggris, Part of Speech (POS) merupakan klasifikasi dari kata-kata yang dikategorikan dari peran dan fungsinya dalam struktur kalimat sebuah bahasa. Terdapat 8 POS yaitu

  • noun (kata benda)
  • pronoun (kata ganti)
  • verb (kata kerja)
  • adjective (kata sifat)
  • adverb (kata keterangan)
  • preposition (kata depan)
  • conjunction (kata hubung)
  • interjection (kata seru)

Berikut ini merupakan cara menampilkan POS suatu kalimat di python.

2. Lemma

Secara sederhana lemma adalah kata dasar, dalam ilmu bahasa inggris dikenal dengan bare infinitive (bi), jadi tidak menggunakan additional infinitive (ai). Jadi semua kata diubah ke dalam bentuk aslinya (kata dasarnya) yang belum ada suffix maupun prefiks.

3. Dependency Parsing

Merupakan relasi antar token. Dinamakan dependency karena ekstraksi-nya merupakan dependency dari token sebelumnya/sesudahnya. Agar lebih jelas, berikut ini merupakan perbandingan antar linguistic feature. Dapat dilihat bahwa tanda $ di deteksi sebagai mata uang, sedangkan di part of speech dideteksi sebagai Symbol.

Sedangkan source di python nya adalah

4. Named Entity Recognition (NER)

Digunakan untuk mengekstrak informasi seperti nama orang, organisasi, lokasi, dan waktu. Berikut merupakan contohnya

Sedangkan source di python nya adalah

5. Morphology

Morfologi adalah studi tentang struktur internal kata, bagaimana kata itu terbentuk dan hubungannya dengan kata yang lain. Beberapa hal bisa diketahui adalah tenses (past, present, continue), jenis verb (gerund, finitive, infinitve), maupun mood (indicative, evidential).

source : https://spacy.io/usage/linguistic-features#morphology
source : https://spacy.io/usage/linguistic-features#morphology

6. Stemming

Stemming mirip dengan lemma yaitu sama-sama memecah suatu kata ke kata dasarnya. Bedanya, cara pemecahan kata di stemming mengikuti algoritma yang sudah ditentukan (misal menghilangkan suffix es,ed,s). Sedangkan teknik pemecahan di lemma mengikuti actual languange sesuai konteks (misal ran –> run).

Berikut ini merupakan perbandingan hasil stemming dan lemmatization. Dapat dilihat bahwa teknik pemecahan via lemma lebih baik karena mengikuti actual languange yang sesuai konteks. Sedangkan stemming yang hanya memecahkan berdasarkan aturan sederhana

Stem vs Lemma
Stem vs Lemma

7. Stopword

Stopword merupakan kata umum yang biasanya muncul dalam jumlah besar dan dianggap tidak memiliki makna.

8. Word vectors and semantic similarity

Suatu kata memiliki hubungan yang erat dengan kata lainnya. Misalkan kata ‘Indonesia’ , jika menggunakan korpus yang cukupsangat erat kaitannya dengan ‘Jakarta’. Kemiripan antar kata ini bisa dilihat menggunakan package word2vec.

 

Reference

  • https://spacy.io/usage/models

 

Leave a Reply

Your email address will not be published.

Related posts