Text mining hasil review artikel
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…
Kriteria Klasifikasi Sklearn
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
.