Natural Language Processing - Ekstraksi Fitur Kata First Person, Second Person, dan Third Person Pada Kalimat

Tags



Izinkan saya berbagi. Pada machine learning saat ini yang kita ketahui belum bisa menerima masukan langsung berupa kalimat sehingga diperlukan proses perubahan dari kalimat ke dalam angka-angka atau yang sering kita sebut sebagai ekstraksi fitur. Terdapat banyak fitur yang dapat kita ekstraks dari satu paragraf kalimat, salah satunya adalah fitur point of view.

Pada tulisan ini saya ingin berbagi pengalaman tentang melakukan ekstraksi fitur point of view (sudut pandang) dari suatu tulisan / kalimat. Sudut pandang biasanya dapat dibagi menjadi tiga yaitu sudut pandang orang pertama (first person), sudut pandang orang kedua (second person), dan sudut pandang orang ketiga (third person).  Untuk melakukan ekstraksi fitur sudut pandang pertama kita lakukan import library yang dibutuhkan:
 import string  
 import nltk  

Kemudian kita masukan kalimat yang ingin kita ekstraksi fiturnya. Pada contoh ini saya mengambil review hotel di salah satu hotel di kota Surabaya. Cara memasukan kalimat sebagai berikut:
 text = "In this time of COVID-19 we were somewhat uncertain, before arrival, at how we could ensure our health during our stay. The hotel quickly gave us confidence that they had implemented a range of controls at entry and at the reception desk, they guaranteed 24 hours vacancy between room occupation, and even included a room sanitising pack. 10 minutes after arriving in the room we felt safe and confident that we didn’t need to be concerned. Bookings needed to be made for breakfast the following morning to eliminate any crowding and, even though the food was presented as a buffet, guests could not access food which was only able to be served directly by staff. The staff at breakfast, especially Irwan, Bella, and the traditional drink preparer (we didn’t get his name) were excellent. We will definitely stay at Four Points Pakuwon when next in Surabaya."  
 print(text)  

Untuk mempermudah melakukan ekstraksi perlu kita lakukan proses perubahan huruf kapital menjadi huruf kecil, kita juga perlu menghilangkan tanda baca. Kedua proses tersebut dapat dilakukan seperti contoh di bawah ini:
 textLower = text.translate(str.maketrans('','',string.punctuation)).lower()  
 print(textLower)  

Selanjutnya kita perlu memisah setiap kata yang terdapat pada kalimat, proses ini dinamakan tokenisasi:
 tokens = nltk.word_tokenize(textLower)  
 print(tokens)  

Setelah tokenisasi langkah selanjutnya adalah mencocokan setiap kata kedalam daftar kalimat first person, second person, atau third person sesuai dengan kebutuhan kita. Pada percobaan ini saya contohkan untuk first person kalian tinggal merubah atau menambahkan untuk menyempurnakan.
 firstCounter = 0  
 for word in tokens:  
     if word == "i":  
         firstCounter += 1  
     elif word == "me":  
         firstCounter += 1  
     elif word == "mine":  
         firstCounter += 1  
     elif word == "we":  
         firstCounter += 1  
     elif word == "us":  
         firstCounter += 1  
     elif word == "ours":  
         firstCounter += 1  
     elif word == "im":  
         firstCounter += 1  
     elif word == "my":  
         firstCounter += 1  
 r_first = firstCounter/len(tokens)   
 print("Jumlah kata 1st person: {}".format(firstCounter))  
 print("Nilai rasio: {}".format(r_first))  

Setelah di cetak maka akan diketahui terdapat 7 kata di dalam kalimat yang merupakan sudut pandang orang pertama, dan nilai rasio kata first person pada kalimat tersebut adalah 0.046.


Atau jika menggunakan database dapat menggunakan kode di bawah ini:
 import nltk  
 import string  
 import mysql.connector  
   
 db = mysql.connector.connect(  
   host="localhost",  
   user="root",  
   passwd="",  
   database= "youtube"  
 )  
   
 cursor = db.cursor()  
   
 def convertTuple(tup):   
   str = ''.join(tup)   
   return str  
   
 def textToView(id_text):  
   sql = "SELECT TEXT FROM review WHERE id_text = {}".format(id_text)  
   cursor.execute(sql)  
     
   results = cursor.fetchall()  
   str1 = convertTuple(results[0])  
   text = str1  
     
   textLower = text.translate(str.maketrans('','',string.punctuation)).lower()  
   tokens = nltk.word_tokenize(textLower)  
     
   firstCounter = 0  
     
   for word in tokens:  
       if word == "i":  
          firstCounter += 1  
       elif word == "me":  
          firstCounter += 1  
       elif word == "mine":  
          firstCounter += 1  
       elif word == "we":  
          firstCounter += 1  
       elif word == "us":  
          firstCounter += 1  
       elif word == "ours":  
          firstCounter += 1  
       elif word == "im":  
          firstCounter += 1  
       elif word == "my":  
          firstCounter += 1  
   
   r_first = firstCounter  
   print(text, r_first)  
   print()  
     
   
 sql = "SELECT id_text FROM review"  
 cursor.execute(sql)  
 results = cursor.fetchall()  
   
 for id in results:  
   textToView(id[0])  


Demikian cara sederhana untuk ekstraksi fitur sudut pandang yang dapat saya bagikan, semoga dapat membantu. Kode percobaan dan dataset akan saya bagian setelah video penjelasan di youtube rilis, pastikan subscribe channel youtube saya sehingga tidak ketinggalan. Terimakasih. Sampai jumpa.