Skip to content

Instantly share code, notes, and snippets.

@sugiartocokrowibowo
Created October 14, 2019 13:20
Show Gist options
  • Save sugiartocokrowibowo/633e96df5f231b73ee2dcbe60343ea49 to your computer and use it in GitHub Desktop.
Save sugiartocokrowibowo/633e96df5f231b73ee2dcbe60343ea49 to your computer and use it in GitHub Desktop.
package naivebayesclassification;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.RowConstraints;
import javafx.scene.layout.StackPane;
import javafx.stage.DirectoryChooser;
import javafx.stage.FileChooser;
import javafx.stage.FileChooser.ExtensionFilter;
import javafx.stage.Stage;
public class NaiveBayesClassification extends Application {
private TextArea taInfoProses, taDataTraining, taTarget, taToken, taModel, taDatatesting, taHasiltesting, taTestCase;
private final FileChooser fileChooser = new FileChooser();
private File fileDataTraining = null;
private File fileDataTesting = null;
private String sDataTraining = new String();
private String sDataTesting = new String();
private final String DATA_TRAINING = "data_training";
private final String DATA_TESTING = "data_testing";
private ArrayList<String> target = null;
private ArrayList<Data> listDataTraining = null;
private ArrayList<Data> listDataTesting = null;
@Override
public void start(Stage primaryStage) {
StackPane root = new StackPane();
GridPane gridPane = new GridPane();
gridPane.setPadding(new Insets(10, 10, 10, 10));
gridPane.setHgap(5);
gridPane.setVgap(10);
//col constraints
ColumnConstraints col1 = new ColumnConstraints();
col1.setHgrow(Priority.NEVER);
ColumnConstraints col2 = new ColumnConstraints();
col2.setHgrow(Priority.ALWAYS);
ColumnConstraints col3 = new ColumnConstraints();
col3.setHgrow(Priority.NEVER);
gridPane.getColumnConstraints().addAll(col1, col2, col3);
//row constraints
RowConstraints row1 = new RowConstraints();
row1.setVgrow(Priority.NEVER);
RowConstraints row2 = new RowConstraints();
row2.setVgrow(Priority.ALWAYS);
gridPane.getRowConstraints().addAll(row1, row1, row1, row1, row1, row2);
Label labelWorkspace = new Label("Workspace");
gridPane.add(labelWorkspace, 0, 0);
TextField tfWorkspace = new TextField();
gridPane.add(tfWorkspace, 1, 0);
Button buttonOpenWorkspace = new Button("Open");
gridPane.add(buttonOpenWorkspace, 2, 0);
buttonOpenWorkspace.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(final ActionEvent e) {
DirectoryChooser chooser = new DirectoryChooser();
chooser.setTitle("Workspace Naive Bayes");
File selectedDirectory = chooser.showDialog(primaryStage);
if (selectedDirectory != null) {
tfWorkspace.setText(selectedDirectory.getPath().toString());
//openFile(file);
}
}
});
Label labelDataTraining = new Label("DataTraining");
gridPane.add(labelDataTraining, 0, 1);
TextField tfDataTraining = new TextField();
gridPane.add(tfDataTraining, 1, 1);
Button buttonOpenDataTraining = new Button("Browse Data Training");
gridPane.add(buttonOpenDataTraining, 2, 1);
buttonOpenDataTraining.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(final ActionEvent e) {
fileChooser.setTitle("Open Data Training");
fileChooser.getExtensionFilters().addAll(
new ExtensionFilter("Text Files", "*.txt"),
new ExtensionFilter("All Files", "*.*"));
File file = fileChooser.showOpenDialog(primaryStage);
if (file != null) {
tfDataTraining.setText(file.getPath().toString());
//set file data training;
fileDataTraining = file;
}
}
});
Label labelDataTesting = new Label("DataTesting");
gridPane.add(labelDataTesting, 0, 2);
TextField tfDataTesting = new TextField();
gridPane.add(tfDataTesting, 1, 2);
Button buttonOpenDataTesting = new Button("Browse Data Testing");
gridPane.add(buttonOpenDataTesting, 2, 2);
buttonOpenDataTesting.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(final ActionEvent e) {
fileChooser.setTitle("Open Data Testing");
fileChooser.getExtensionFilters().addAll(
new ExtensionFilter("Text Files", "*.txt"),
new ExtensionFilter("All Files", "*.*"));
File file = fileChooser.showOpenDialog(primaryStage);
if (file != null) {
tfDataTesting.setText(file.getPath().toString());
//set file data testing;
fileDataTesting = file;
}
}
});
Button buttonTrainingNaiveBayes = new Button("Training Naive Bayes Classification");
gridPane.add(buttonTrainingNaiveBayes, 1, 3);
buttonTrainingNaiveBayes.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(final ActionEvent e) {
prosesTrainingNaiveBayes();
}
});
Button buttonTestingNaiveBayes = new Button("Testing Naive Bayes Classification");
gridPane.add(buttonTestingNaiveBayes, 1, 4);
buttonTestingNaiveBayes.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(final ActionEvent e) {
///
}
});
//Binding
buttonOpenWorkspace.prefWidthProperty().bind(buttonOpenDataTraining.widthProperty());
buttonOpenDataTesting.prefWidthProperty().bind(buttonOpenDataTraining.widthProperty());
buttonTrainingNaiveBayes.prefWidthProperty().bind(tfDataTesting.widthProperty());
buttonTestingNaiveBayes.prefWidthProperty().bind(tfDataTesting.widthProperty());
TabPane tabPane = new TabPane();
gridPane.add(tabPane, 0, 5, 3, 2);
//initialize text area taInfoProses,taTarget,taToken,taModel,taHasiltesting,taTestCase
taInfoProses = new TextArea();
taDataTraining = new TextArea();
taTarget = new TextArea();
taToken = new TextArea();
taModel = new TextArea();
taDatatesting = new TextArea();
taHasiltesting = new TextArea();
taTestCase = new TextArea();
taInfoProses.setWrapText(true);
taDataTraining.setWrapText(true);
taTarget.setWrapText(true);
taToken.setWrapText(true);
taModel.setWrapText(true);
taDatatesting.setWrapText(true);
taHasiltesting.setWrapText(true);
taTestCase.setWrapText(true);
Tab tab1 = new Tab();
tab1.setText("Info Proses");
tab1.setContent(taInfoProses);
Tab tab2 = new Tab();
tab2.setText("Data Training");
tab2.setContent(taDataTraining);
Tab tab3 = new Tab();
tab3.setText("Target");
tab3.setContent(taTarget);
Tab tab4 = new Tab();
tab4.setText("Token");
tab4.setContent(taToken);
Tab tab5 = new Tab();
tab5.setText("Model");
tab5.setContent(taModel);
Tab tab6 = new Tab();
tab6.setText("Data Testing");
tab6.setContent(taDatatesting);
Tab tab7 = new Tab();
tab7.setText("Hasil Testing");
tab7.setContent(taHasiltesting);
Tab tab8 = new Tab();
tab8.setText("Test Manual");
tab8.setContent(taTestCase);
tabPane.getSelectionModel().select(0);
tabPane.getTabs().addAll(tab1, tab2, tab3, tab4, tab5, tab6, tab7, tab8);
root.getChildren().add(gridPane);
Scene scene = new Scene(root, 1024, 768);
primaryStage.setTitle("Naive Bayes Classification");
primaryStage.setScene(scene);
primaryStage.show();
}
//methods
private ArrayList<Data> readData(File file, String jenisData) {
ArrayList<Data> listData = null;
try {
listData = new ArrayList<Data>();
StringBuffer contents = new StringBuffer();
BufferedReader reader = new BufferedReader(new FileReader(file));
String sLine = null;
String separator = " ";
// repeat until all lines is read
while ((sLine = reader.readLine()) != null) {
String[] arrLine = sLine.split(separator);
String sTarget = arrLine[0];
String sURL = arrLine[1];
Data data = new Data(sTarget, sURL);
listData.add(data);
contents.append(sTarget + "<---" + sURL + "\n");
}
if (listData.size() > 0) {
if (jenisData.equals(this.DATA_TRAINING)) {
sDataTraining = contents.toString();
taDataTraining.setText(sDataTraining);
} else if (jenisData.equals(this.DATA_TESTING)) {
sDataTesting = contents.toString();
taDatatesting.setText(sDataTesting);
}
}
reader.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return listData;
}
private ArrayList<String> readTarget(ArrayList<Data> listData) {
ArrayList<String> listTarget = null;
if (listData != null) {
listTarget = new ArrayList<String>();
for (int i = 0; i < listData.size(); i++) {
String sTarget = listData.get(i).getTarget().toLowerCase();
boolean ada = false;
for (int j = 0; j < listTarget.size(); j++) {
if (listTarget.get(j).equals(sTarget)) {
ada = true;
break;
}
}
if (!ada) {
listTarget.add(sTarget);
}
}
String sTarget = "";
for(int i=0;i<listTarget.size();i++){
sTarget = (sTarget+listTarget.get(i)+"\n");
}
taTarget.setText(sTarget);
}
return listTarget;
}
private void prosesTrainingNaiveBayes() {
if (fileDataTraining != null) {
this.listDataTraining = readData(fileDataTraining, this.DATA_TRAINING);
if (this.listDataTraining != null) {
//initialize target
target = readTarget(this.listDataTraining);
System.out.println(target.toString());
}
}
}
public static void main(String[] args) {
launch(args);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment