Machine Learning, Natural Language Processing, Natural Language Toolkit, Programming, Python, Web Server

MENGGUNAKAN PUSTAKA PYTHON UNTUK PENGOLAHAN TEKS BERBAHASA INDONESIA

  1. INSTALASI PTYHON-PIP PADA SISTEM OPERASI LINUX
    Buka terminal command line lalu ketik perintah sudo apt-get install python-pip
  1. INSTALASI PUSTAKA SASTRAWI
    Ketik perintah berikut sudo pip install sastrawi
  1. BUAT SEBUAH FILE MISALNYA BERNAMA STEMMER.PYTekan CTRL+X lalu pilih Y untuk menyimpan
  2. Kompilasi file menggunakan perintah python filename.py akan diperoleh hasil berikut

 

Algorithm, Machine Learning, Programming, Python

Implementasi Sederhana Algoritma K-Nearest Neighbor Bahasa Pemrograman Python

Algoritma K-Nearest Neighbor merupakan metode klasifikasi yang mengelompokan data baru berdasarkan jarak data baru itu kebeberapa data/tetangga (neighbord) terdekat (Santoso, 2007) [1].

Klasifikasi adalah proses penemuan model (atau fungsi) yang menggambarkan dan membedakan kelas data atau konsep yang bertujuan agar bisa digunakan untuk memprediksi kelas dari objek yang label kelasnya tidak diketahui (Kamber, 2006).

Klasifikasi data terdiri dari 2 langkah proses. Pertama adalah learning (fase training), dimana algoritma klasifikasi dibuat untuk menganalisa data training lalu direpresentasikan dalam bentuk rule klasifikasi. Proses kedua adalah klasifikasi, dimana data tes digunakan untuk memperkirakan akurasi dari rule klasifikasi (Kamber, 2006).

Proses klasifikasi didasarkan pada empat komponen (Gorunescu, 2011):

  1. Kelas

    Variabel dependen yang berupa kategorikal yang merepresentasikan „label‟ yang terdapat pada objek. Contohnya: resiko penyakit jantung, resiko kredit, customer loyalty, jenis gempa.

  2. Predictor

    Variabel independen yang direpresentasikan oleh karakteristik (atribut) data. Contohnya: merokok, minum alkohol, tekanan darah, tabungan, aset, gaji.

  3. Training dataset

    Satu set data yang berisi nilai dari kedua komponen di atas yang digunakan untuk menentukan kelas yang cocok berdasarkan predictor.

  4. Testing dataset

    Berisi data baru yang akan diklasifikasikan oleh model yang telah dibuat dan akurasi klasifikasi dievaluasi.

LOAD DATASET


import csv
import random
import math
import operator

def loadDataset(filename, split, trainingSet=[] , testSet=[]):
with open(filename, 'rb') as csvfile:
lines = csv.reader(csvfile)
dataset = list(lines)
for x in range(len(dataset)-1):
for y in range(4):
dataset[x][y] = float(dataset[x][y])
if random.random() < split:
trainingSet.append(dataset[x])
else:
testSet.append(dataset[x])

def main():
# prepare data
trainingSet=[]
testSet=[]
split = 0.67
loadDataset('iris.data', split, trainingSet, testSet)
print 'Train set: ' + repr(len(trainingSet))
print 'Test set: ' + repr(len(testSet))

# generate predictions

main()

Ketika program diatas dieksekusi (docs: https://www.python.org/doc/) maka akan ditampilkan jumlah data set dan data train yang digunakan dari sekian jumlah data yang disiapkan.

MENCARI OBJEK TERDEKAT

Pada tahap ini, dilakukan perhitungan jarak terdekat dari setiap objek menggunakan Euclidean Distance [2]


import csv
import random
import math
import operator

def loadDataset(filename, split, trainingSet=[] , testSet=[]):
with open(filename, 'rb') as csvfile:
lines = csv.reader(csvfile)
dataset = list(lines)
for x in range(len(dataset)-1):
for y in range(4):
dataset[x][y] = float(dataset[x][y])
if random.random() < split:
trainingSet.append(dataset[x])
else:
testSet.append(dataset[x])

def euclideanDistance(instance1, instance2, length):
distance = 0
for x in range(length):
distance += pow((instance1[x] - instance2[x]), 2)
return math.sqrt(distance)

def getNeighbors(trainingSet, testInstance, k):
distances = []
length = len(testInstance)-1
for x in range(len(trainingSet)):
dist = euclideanDistance(testInstance, trainingSet[x], length)
distances.append((trainingSet[x], dist))
distances.sort(key=operator.itemgetter(1))
neighbors = []
for x in range(k):
neighbors.append(distances[x][0])
return neighbors

def main():
# prepare data
trainingSet=[]
testSet=[]
split = 0.67
loadDataset('iris.data', split, trainingSet, testSet)
print 'Train set: ' + repr(len(trainingSet))
print 'Test set: ' + repr(len(testSet))

# generate predictions
predictions=[]
k = 3
for x in range(len(testSet)):
neighbors = getNeighbors(trainingSet, testSet[x], k)
print(neighbors)

main()

MENGHITUNG AKURASI

import csv
import random
import math
import operator

def loadDataset(filename, split, trainingSet=[] , testSet=[]):
with open(filename, 'rb') as csvfile:
lines = csv.reader(csvfile)
dataset = list(lines)
for x in range(len(dataset)-1):
for y in range(4):
dataset[x][y] = float(dataset[x][y])
if random.random() < split:
trainingSet.append(dataset[x])
else:
testSet.append(dataset[x])

def euclideanDistance(instance1, instance2, length):
distance = 0
for x in range(length):
distance += pow((instance1[x] - instance2[x]), 2)
return math.sqrt(distance)

def getNeighbors(trainingSet, testInstance, k):
distances = []
length = len(testInstance)-1
for x in range(len(trainingSet)):
dist = euclideanDistance(testInstance, trainingSet[x], length)
distances.append((trainingSet[x], dist))
distances.sort(key=operator.itemgetter(1))
neighbors = []
for x in range(k):
neighbors.append(distances[x][0])
return neighbors

def getResponse(neighbors):
classVotes = {}
for x in range(len(neighbors)):
response = neighbors[x][-1]
if response in classVotes:
classVotes[response] += 1
else:
classVotes[response] = 1
sortedVotes = sorted(classVotes.iteritems(), key=operator.itemgetter(1), reverse=True)
return sortedVotes[0][0]

def getAccuracy(testSet, predictions):
correct = 0
for x in range(len(testSet)):
if testSet[x][-1] == predictions[x]:
correct += 1
return (correct/float(len(testSet))) * 100.0

def main():
# prepare data
trainingSet=[]
testSet=[]
split = 0.67
loadDataset('iris.data', split, trainingSet, testSet)
print 'Train set: ' + repr(len(trainingSet))
print 'Test set: ' + repr(len(testSet))

# generate predictions
predictions=[]
k = 3
for x in range(len(testSet)):
neighbors = getNeighbors(trainingSet, testSet[x], k)
result = getResponse(neighbors)
predictions.append(result)
print('RESULT: predicted=' + repr(result) + ', actual=' + repr(testSet[x][-1]))
accuracy = getAccuracy(testSet, predictions)
print 'PREDICT: ', accuracy

Referensi :

[1] http://jurnal.unpand.ac.id/index.php/NT/article/download/350/344

[2] https://blogs.itb.ac.id/anugraha/2014/09/10/teori-pengukuran-jarak/

Algorithm, Mathematic, Programming, Python

Menghitung regresi linear berganda menggunakan bahasa pemrograman python

Analisis regresi linier berganda adalah hubungan secara linear antara dua atau lebih variabel independen (X1, X2,….Xn) dengan variabel dependen (Y). Analisis ini untuk mengetahui arah hubungan antara variabel independen dengan variabel dependen apakah masing-masing variabel independen berhubungan positif atau negatif dan untuk memprediksi nilai dari variabel dependen apabila nilai variabel independen mengalami kenaikan atau penurunan. Data yang digunakan biasanya berskala interval atau rasio.

Persamaan regresi linear berganda sebagai berikut: Continue reading “Menghitung regresi linear berganda menggunakan bahasa pemrograman python”

Algorithm, Machine Learning, Programming, Python

Menggambar plot regresi linear menggunakan bahasa pemrograman python

Regresi linier adalah regresi yang variabel bebasnya (variabel X) berpangkat paling tinggi satu. Utk regresi sederhana, yaitu regresi linier yg hanya melibatkan dua variabel (variabel X dan Y).

Y = a + bX

Dimana :
Y = Variabel Response atau Variabel Akibat (Dependent)
X = Variabel Predictor atau Variabel Faktor Penyebab (Independent)
a = konstanta
b = koefisien regresi (kemiringan); besaran Response yang ditimbulkan oleh Predictor. Continue reading “Menggambar plot regresi linear menggunakan bahasa pemrograman python”

Mathematic, Natural Language Processing, Programming, Python

Program sederhana Sentiment Analysis menggunakan Python dan NLTK

Text mining dilakukan oleh komputer untuk mendapatkan sesuatu yang baru, sesuatu yang tidak diketahui sebelumnya atau menemukan kembali informasi yang tersirat secara implisit, yang berasal dari informasi yang diekstrak secara otomatis dari sumber-sumber data teks yang berbedabeda (Feldman & Sanger, 2007).

Text mining merupakan teknik yang digunakan untuk menangani masalah klasifikasi, clustering, information extraction dan information retrival (Berry & Kogan, 2010). Pada dasarnya proses kerja dari text mining banyak mengapdopsi dari penelitian Data Mining namun yang menjadi perbedaan adalah pola yang digunakan oleh text mining diambil dari sekumpulan bahasa alami yang tidak terstruktur sedangkan dalam Data Mining pola yang diambil dari database yang terstruktur (Han & Kamber, 2006).

Salah satu topik dalam text mining adalah sentiment analysis. Continue reading “Program sederhana Sentiment Analysis menggunakan Python dan NLTK”

Mathematic, Programming, Python

Implementasi metode simpson menggunakan bahasa pemrograman python

import math
import decimal

a = 0; b = 1; n = 10
h = float (b-a) / n
r = 0
start = 0

print ("  Metode Numerik   ")
print ("Algoritma Simpson  ")
print

def power(x,y):
	return x ** y;

def fx( x ):
	return ( 0.25 * power(x,5)) + (3 * power(x,2));

def real (a,b):
	return ( float(1)/float(24) * power(b,6) + power(b,3) ) - ( float(1)/float(24) * power(a,6) + power(a,3) )

def Simpson( h, r ):
	return  h / 3 * r

for i in range(0,11):
	if i == 0:
		r+=fx(start);
		print "f(",start,")\t: ", fx(start), "\t\tR        : ", r;
	elif i == 10:
		r+=fx(start);
		print "f(",start,")\t: ", fx(start), "\t\tR        : ", r;
	elif i % 2 == 0:
		r+=2*fx(start);
		print "f(",start,")\t: ", 2*fx(start), " \tR        : ", r;
	elif i % 2 == 1:
		r+=4*fx(start);
		print "f(",start,")\t: ", 4*fx(start), " \tR        : ", r;
	start+=h

print

print ("a  : ", a);
print ("b  : ", b);
print ("h  : ", h);
print ("n  : ", n);

print

real = round(real( a,b ), 6)
numeric = Simpson( h,r )

print ("Simpson Real     : ", real)
print ("Simpson Numeric  : ", numeric)
print ("Simpson Error    : ", numeric - real)
print

Contoh kode diatas adalah bentuk penyelesaian metode simpson dalam mencari suatu nilai pendekatan terhadap persamaan f(x) = 1/4 x5 + 3 x2

Hasil perhitungan menggunakan kode diatas adalah seperti berikut :

screen-shot-2016-12-07-at-12-23-56-pm

Mathematic, Programming, Python

Implementasi algoritma trapezoida menggunakan bahasa pemrograman python

Integral merupakan alat yang dapat digunakan untuk memperoleh nilai pendekatan atau aproksimasi dari suatu perhitungan yang tidak dapat diselesaikan secara analitik.

Untuk melanjutkan kasus sebelumnya yang menggunakan metode reimann kali ini kita akan mencoba menghitung menggunakan metode trapezoida dengan alat bantu bahasa pemrograman python.

Berikut adalah kode program yang penulis buat untuk percobaan kali ini : Continue reading “Implementasi algoritma trapezoida menggunakan bahasa pemrograman python”

Mathematic, Programming, Python

Algoritma reimann dengan bahasa pemrograman python

Integral merupakan alat yang dapat digunakan untuk memperoleh nilai pendekatan atau aproksimasi dari suatu perhitungan yang tidak dapat diselesaikan secara analitik.

Salah satu metode pendekatan yang menerapkan integral adalah metode reimann. Metode reimann biasanya digunakan untuk menghitung luas daerah yang dibatasi oleh fungsi y = f(x) dan sumbu x seperti pada contoh gambar berikut : Continue reading “Algoritma reimann dengan bahasa pemrograman python”

Natural Language Processing, Natural Language Toolkit, Programming, Python

aplikasi context free grammar sederhana bahasa indonesia menggunakan bahasa pemrograman python dan pustaka nltk

Apa itu context free grammar?

Context free grammar adalah aturan dalam kaidah suatu bahasa yang tidak terdapat batasan pada hasil produksinya. Tujuannya adalah menghasilkan untaian-untaian kalimat dari suatu aturan atau kaidah tata bahasa.

Persiapan awal membuat program context free grammar?

Continue reading “aplikasi context free grammar sederhana bahasa indonesia menggunakan bahasa pemrograman python dan pustaka nltk”