Archive

Archive for May, 2020

Text mining hasil review artikel

May 19, 2020 Leave a comment

Suatu hari (dalam kisah nyata, bukan dongeng), saya tidak sengaja bertemu artikel ini. Dari parameter tahun terbit, artikel ini menarik karena baru terbit tahun 2018. Begitu juga ketika dilihat di google.scholar, artikel ini (ketika blog ini dibuat) ‘baru’ disitir 25 artikel. Selain itu, ini adalah dataset text yang obyek kajiannya terkait kepustakaan. Dari artikel-artikel yang menyitirnya mengangkat tema yang akrab dengan saya. Misalnya ada artikel yang membahas tentang bagaimana sistem dapat memahami hasil reviews, aplikasi yang mampu menyisipkan literatur pendukung berdasarkan konteks bahasan tertentu, bahkan ada yang membahas tentang peluang sebuah artikel diterima. Sebagai informasi, penulis artikel mengunggah bahan risetnya secara lengkap di tautan ini, jadi saya clone saja semua.

Di repositry githubnya, penelulis menyertakan review dari ACL 2017, ArXiV (dari 3 bidang ilmu), ICLR 2017 dan CONLL 2016. Untuk review selain ArXiV, penulis menyertakan juga dokumen artikel yang direview (tanpa informasi penulis). Tentu ini sangat baik untuk mengetahui tulisan seperti apa akan mendapat komentar seperti apa. Selanjutnya saya akan masuk ke review ACL 2017. Penulis sudah membagi datanya sebagai data latih dan uji.

Komentar dari reviewer direpresentasi dalam format JSON, terdiri dari 5 atribut, masing-masing reviews, abstract, histories, id, dan title. Khusus untuk atribut pertama (reviews) terdiri dari 2 elemen, masing-masing untuk 3 reviewer. Untuk setiap reviewer, terdapat sejumlah item penilaian seperti IMPACT, SUBSTANCE, APPROPRIATENESS, MEANINGFUL_COMPARISON, PRESENTATION_FORMAT, comments, SOUNDNESS_CORRECTNESS, ORIGINALITY, is_meta_review, RECOMMENDATION, CLARITY dan REVIEWER_CONFIDENCE. Item penilaian yang direpresentasikan dalam huruf capital seperti penulisan konstanta di Java bertype numerik tetapi untuk merepresentasikan kondisi kategorikal, seperti nilai A-E di bangku kuliah. Saya belum tahu apa nilai 1 merepresentasikan nilai A (sangat baik), atau sebaliknya, nilai 1 setara dengan E (sangat buruk). Salah satu dari nilai numerik tadi berpotensi menjadi kelas penilaian, sedangkan comments akan menjadi sumber ekstraksi fitur. Sementara kita akan fokus ke item penilaian comments.
Read more…

Categories: Python, Tutorial

Kriteria Klasifikasi Sklearn

May 17, 2020 Leave a comment

Setelah mencoba kriteria clustering, sekarang kita akan coba menampilkan kriteria klasifikasi. Data set yang digunakan adalah data set audit. Clasifier yang digunakan adalah Linier SVM untuk klasifikasi (SVC). Segmentasi data latih-uji menggunakan komposisi tetap 70%-30%.

Berikut adalah kode programnya

from sklearn.svm import SVC
from sklearn.model_selection import train_test_split as tts
from sklearn import metrics
import numpy as np
import pandas as pd

dataset=pd.read_csv('audit_risk.csv')
dataset = dataset.apply (pd.to_numeric, errors='coerce')
dataset = dataset.dropna()
y1=dataset.pop('Risk').values

Xtrain, Xtest, Ytrain, Ytest=tts(dataset,y1,test_size=0.3)

Kernel=['linear', 'poly', 'rbf', 'sigmoid']
Gamma=['scale','auto']

for i in Kernel:
    for j in Gamma:
        clf = SVC(C=1.0, kernel=i, degree=3, gamma=j, coef0=0.0, shrinking=True, probability=True, tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape='ovr', break_ties=False, random_state=None)
        clf.fit(Xtrain,Ytrain)
        Ypredict=clf.predict(Xtest)
        confMatrix=metrics.confusion_matrix(Ytest, Ypredict)
        Ypredictproba=clf.predict_proba(Xtest)[:,1]
        fpr, tpr, _ = metrics.roc_curve(Ytest, Ypredictproba)
        print('Kernel='+i+', Gamma='+j+':')
        print('metrics Score Accuracy=%0.2f' % metrics.accuracy_score(Ytest, Ypredict))
        print('TP='+ str(confMatrix[1][1])+', TN='+ str(confMatrix[0][0])+', FP='+ str(confMatrix[0][1])+', FN='+ str(confMatrix[1][0]))
        print('metrics Area Under Curve=%0.2f' % metrics.auc(fpr, tpr))
        print('metrics average_precision_score=%0.2f' % metrics.average_precision_score(Ytest, Ypredictproba))
        print('metrics balanced_accuracy_score=%0.2f' % metrics.balanced_accuracy_score(Ytest,Ypredict))
        print('metrics brier_score_loss=%0.2f' % metrics.brier_score_loss(Ytest,Ypredictproba))
        print('metrics Classification Report=' + str(metrics.classification_report(Ytest, Ypredict, digits=2)))
        print('metrics Precission Recall F-Score Support=' +str(metrics.precision_recall_fscore_support(Ytest,Ypredict,zero_division='warn')))

Data set audit mengandung karakter di kolom data yang seharusnya numerik. Dataframe Pandas akan membacanya sebagai NaN. Baris ke-8 dan 9 digunakan untuk menghilangkan baris data yang mengandung karakter tersebut.

Baris ke-14 dan 15 digunakan untuk memvariasikan atribut kernel dan gamma sebagai parameter untuk membangun obyek classifier SVC (baris ke-19). Sedangkan atribut degree di baris tersebut digunakan ketika kernel yang digunakan adalah poly.

Dari sejumlah kriteria klasifikasi yang disediakan sklearn, kriteria yang umum digunakan dan lengkap adalah classification_report. Gambar 1 menunjukkan hasil dari kriteria klasifikasi SVC yang digunakan ketika nilai kernel dan gamma masing-masing linier dan scale.

Gambar 1. Kriteria klasifikasi sklearn

Categories: Python, Tutorial