package ir.ac.iust.nlp.dependencyparser.training;
import ir.ac.iust.nlp.dependencyparser.BasePanel;
import ir.ac.iust.nlp.dependencyparser.DependencyParser;
import ir.ac.iust.nlp.dependencyparser.utility.ExampleFileFilter;
import ir.ac.iust.nlp.dependencyparser.utility.enumeration.Flowchart;
import ir.ac.iust.nlp.dependencyparser.utility.enumeration.ParserType;
import ir.ac.iust.nlp.dependencyparser.utility.parsing.*;
import java.awt.Color;
import java.awt.GridLayout;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.swing.JOptionPane;
/**
*
* @author Mojtaba Khallash
*/
public class TrainPanel extends BasePanel {
boolean isInit = false;
ParserType type = ParserType.MaltParser;
MaltSettingsPanel pnlMalt;
ClearSettingsPanel pnlClear;
MSTSettingsPanel pnlMST;
MateSettingsPanel pnlMate;
/**
* Creates new form TrainPanel
*/
public TrainPanel(String dir) {
super(dir);
pnlMalt = new ir.ac.iust.nlp.dependencyparser.utility.parsing.MaltSettingsPanel(dir);
pnlClear = new ClearSettingsPanel(dir, Flowchart.Train);
pnlMST = new MSTSettingsPanel(Flowchart.Train);
pnlMate = new MateSettingsPanel(Flowchart.Train);
initComponents();
setDrop();
txtCorpusFile.setText(dir + File.separator +
"Treebank" + File.separator +
"Persian" + File.separator +
"train.conll");
txtModelPath.setText(dir + File.separator +
"Output" + File.separator +
"training_model" + File.separator);
lblLess.setVisible(false);
pnlAdvancedParameter.setVisible(false);
tabSettings.removeAll();
tabSettings.add(pnlMaltSettings, "MaltParser Settings");
txtMaxRam.setText(getRam(true));
txtMinRam.setText(getRam(false));
}
private void setDrop() {
initDrop(txtCorpusFile, false);
initDrop(txtModelPath, true);
}
@Override
public boolean canSave() {
return true;
}
@Override
public void save() {
ExampleFileFilter filter = new ExampleFileFilter("txt", "Text Files");
saveText(filter, "train_log.txt", txtLog.getText());
}
@Override
public void saveAs() {
save();
}
@Override
public void threadFinished() {
btnStartTraining.setEnabled(true);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
pnlParameter = new javax.swing.JPanel();
lblCorpusFile = new javax.swing.JLabel();
txtCorpusFile = new javax.swing.JTextField();
btnBrowseCorpusFile = new javax.swing.JButton();
lblModelPath = new javax.swing.JLabel();
txtModelPath = new javax.swing.JTextField();
btnBrowseModelPath = new javax.swing.JButton();
btnStartTraining = new javax.swing.JButton();
pnlMore = new javax.swing.JPanel();
lblMore = new javax.swing.JLabel();
lblLess = new javax.swing.JLabel();
lblParser = new javax.swing.JLabel();
cboParser = new javax.swing.JComboBox();
pnlAdvancedParameter = new javax.swing.JPanel();
tabSettings = new javax.swing.JTabbedPane();
pnlMSTSettings = new javax.swing.JPanel();
lblMSTSettingsL0Place = new javax.swing.JLabel();
pnlMateSettings = new javax.swing.JPanel();
lblMSTSettingsL0Place1 = new javax.swing.JLabel();
pnlMaltSettings = new javax.swing.JPanel();
lblMaltSettingsPlace = new javax.swing.JLabel();
pnlClearSettings = new javax.swing.JPanel();
lblClearSettingsPlace = new javax.swing.JLabel();
chkMaxRam = new javax.swing.JCheckBox();
txtMaxRam = new javax.swing.JTextField();
txtMinRam = new javax.swing.JTextField();
chkMinRam = new javax.swing.JCheckBox();
jLabel1 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
tabDependencyInfo = new javax.swing.JTabbedPane();
pnlLog = new javax.swing.JPanel();
jScrollPane3 = new javax.swing.JScrollPane();
txtLog = new javax.swing.JTextArea();
pnlParameter.setBorder(javax.swing.BorderFactory.createTitledBorder("Settings"));
lblCorpusFile.setText("Corpus File:");
txtCorpusFile.setEditable(false);
btnBrowseCorpusFile.setText("...");
btnBrowseCorpusFile.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBrowseCorpusFile_Click(evt);
}
});
lblModelPath.setText("Model Path:");
txtModelPath.setEditable(false);
btnBrowseModelPath.setText("...");
btnBrowseModelPath.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBrowseModelPath_Click(evt);
}
});
btnStartTraining.setText("Start");
btnStartTraining.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnStartTraining_Click(evt);
}
});
pnlMore.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(240, 240, 240)));
lblMore.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
lblMore.setForeground(new java.awt.Color(153, 153, 153));
lblMore.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ir/ac/iust/nlp/dependencyparser/evaluation/directional_down.png"))); // NOI18N
lblMore.setText(" More ");
lblMore.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
lblMore_mouseClick(evt);
}
public void mouseEntered(java.awt.event.MouseEvent evt) {
lblMorepnlMore_mouseEnter(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
lblMorepnlMore_mouseExit(evt);
}
});
lblLess.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
lblLess.setForeground(new java.awt.Color(153, 153, 153));
lblLess.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ir/ac/iust/nlp/dependencyparser/evaluation/directional_up.png"))); // NOI18N
lblLess.setText(" Less");
lblLess.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
lblLess_mouseClick(evt);
}
public void mouseEntered(java.awt.event.MouseEvent evt) {
lblLesspnlMore_mouseEnter(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
lblLesspnlMore_mouseExit(evt);
}
});
javax.swing.GroupLayout pnlMoreLayout = new javax.swing.GroupLayout(pnlMore);
pnlMore.setLayout(pnlMoreLayout);
pnlMoreLayout.setHorizontalGroup(
pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlMoreLayout.createSequentialGroup()
.addGap(8, 8, 8)
.addComponent(lblMore, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblLess)
.addContainerGap())
);
pnlMoreLayout.setVerticalGroup(
pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblLess, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblMore, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
);
lblParser.setText("Parser:");
cboParser.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "MaltParser", "ClearParser", "MSTParser", "MateTools" }));
cboParser.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
cboParser_stateChanged(evt);
}
});
lblMSTSettingsL0Place.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblMSTSettingsL0Place.setText("MSTParser Settings: Appear after running");
javax.swing.GroupLayout pnlMSTSettingsLayout = new javax.swing.GroupLayout(pnlMSTSettings);
pnlMSTSettings.setLayout(pnlMSTSettingsLayout);
pnlMSTSettingsLayout.setHorizontalGroup(
pnlMSTSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblMSTSettingsL0Place, javax.swing.GroupLayout.DEFAULT_SIZE, 705, Short.MAX_VALUE)
);
pnlMSTSettingsLayout.setVerticalGroup(
pnlMSTSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblMSTSettingsL0Place, javax.swing.GroupLayout.DEFAULT_SIZE, 126, Short.MAX_VALUE)
);
tabSettings.addTab("MSTParser Settings", pnlMSTSettings);
pnlMSTSettings.removeAll();
pnlMSTSettings.setLayout(new GridLayout());
pnlMSTSettings.add(pnlMST);
pnlMSTSettings.revalidate();
lblMSTSettingsL0Place1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblMSTSettingsL0Place1.setText("Mate-Tools Settings: Appear after running");
javax.swing.GroupLayout pnlMateSettingsLayout = new javax.swing.GroupLayout(pnlMateSettings);
pnlMateSettings.setLayout(pnlMateSettingsLayout);
pnlMateSettingsLayout.setHorizontalGroup(
pnlMateSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblMSTSettingsL0Place1, javax.swing.GroupLayout.DEFAULT_SIZE, 705, Short.MAX_VALUE)
);
pnlMateSettingsLayout.setVerticalGroup(
pnlMateSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblMSTSettingsL0Place1, javax.swing.GroupLayout.DEFAULT_SIZE, 126, Short.MAX_VALUE)
);
tabSettings.addTab("Mate-Tools Settings", pnlMateSettings);
pnlMateSettings.removeAll();
pnlMateSettings.setLayout(new GridLayout());
pnlMateSettings.add(pnlMate);
pnlMateSettings.revalidate();
lblMaltSettingsPlace.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblMaltSettingsPlace.setText("MaltParser Settings: Appear after running");
javax.swing.GroupLayout pnlMaltSettingsLayout = new javax.swing.GroupLayout(pnlMaltSettings);
pnlMaltSettings.setLayout(pnlMaltSettingsLayout);
pnlMaltSettingsLayout.setHorizontalGroup(
pnlMaltSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblMaltSettingsPlace, javax.swing.GroupLayout.DEFAULT_SIZE, 705, Short.MAX_VALUE)
);
pnlMaltSettingsLayout.setVerticalGroup(
pnlMaltSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblMaltSettingsPlace, javax.swing.GroupLayout.DEFAULT_SIZE, 126, Short.MAX_VALUE)
);
tabSettings.addTab("MaltParser Settings", pnlMaltSettings);
pnlMaltSettings.removeAll();
pnlMaltSettings.setLayout(new GridLayout());
pnlMaltSettings.add(pnlMalt);
pnlMaltSettings.revalidate();
lblClearSettingsPlace.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblClearSettingsPlace.setText("ClearParser Settings: Appear after running");
javax.swing.GroupLayout pnlClearSettingsLayout = new javax.swing.GroupLayout(pnlClearSettings);
pnlClearSettings.setLayout(pnlClearSettingsLayout);
pnlClearSettingsLayout.setHorizontalGroup(
pnlClearSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblClearSettingsPlace, javax.swing.GroupLayout.DEFAULT_SIZE, 705, Short.MAX_VALUE)
);
pnlClearSettingsLayout.setVerticalGroup(
pnlClearSettingsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblClearSettingsPlace, javax.swing.GroupLayout.DEFAULT_SIZE, 126, Short.MAX_VALUE)
);
tabSettings.addTab("ClearParser Settings", pnlClearSettings);
pnlClearSettings.removeAll();
pnlClearSettings.setLayout(new GridLayout());
pnlClearSettings.add(pnlClear);
pnlClearSettings.revalidate();
javax.swing.GroupLayout pnlAdvancedParameterLayout = new javax.swing.GroupLayout(pnlAdvancedParameter);
pnlAdvancedParameter.setLayout(pnlAdvancedParameterLayout);
pnlAdvancedParameterLayout.setHorizontalGroup(
pnlAdvancedParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(tabSettings)
);
pnlAdvancedParameterLayout.setVerticalGroup(
pnlAdvancedParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(tabSettings)
);
chkMaxRam.setText("Max Ram");
chkMaxRam.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
chkMaxRam_Click(evt);
}
});
txtMaxRam.setEditable(false);
txtMinRam.setEditable(false);
chkMinRam.setText("Min Ram");
chkMinRam.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
chkMinRam_Click(evt);
}
});
javax.swing.GroupLayout pnlParameterLayout = new javax.swing.GroupLayout(pnlParameter);
pnlParameter.setLayout(pnlParameterLayout);
pnlParameterLayout.setHorizontalGroup(
pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlParameterLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pnlAdvancedParameter, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(pnlParameterLayout.createSequentialGroup()
.addComponent(lblCorpusFile)
.addGap(18, 18, 18)
.addComponent(txtCorpusFile)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnBrowseCorpusFile, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlParameterLayout.createSequentialGroup()
.addComponent(lblModelPath)
.addGap(18, 18, 18)
.addComponent(txtModelPath)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnBrowseModelPath, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlParameterLayout.createSequentialGroup()
.addComponent(pnlMore, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(lblParser)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cboParser, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(chkMaxRam)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtMaxRam, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(chkMinRam)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtMinRam, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btnStartTraining)))
.addContainerGap())
);
pnlParameterLayout.setVerticalGroup(
pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlParameterLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCorpusFile)
.addComponent(txtCorpusFile, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnBrowseCorpusFile))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblModelPath)
.addComponent(txtModelPath, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnBrowseModelPath))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(chkMinRam)
.addComponent(txtMinRam, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnStartTraining)
.addComponent(lblParser)
.addComponent(cboParser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(chkMaxRam)
.addComponent(txtMaxRam, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addComponent(pnlMore, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pnlAdvancedParameter, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
jLabel1.setText("Training");
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jPanel1.setPreferredSize(new java.awt.Dimension(380, 2));
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
txtLog.setColumns(20);
txtLog.setEditable(false);
txtLog.setRows(5);
jScrollPane3.setViewportView(txtLog);
javax.swing.GroupLayout pnlLogLayout = new javax.swing.GroupLayout(pnlLog);
pnlLog.setLayout(pnlLogLayout);
pnlLogLayout.setHorizontalGroup(
pnlLogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 737, Short.MAX_VALUE)
);
pnlLogLayout.setVerticalGroup(
pnlLogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 50, Short.MAX_VALUE)
);
tabDependencyInfo.addTab("Log", pnlLog);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pnlParameter, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 742, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addGap(0, 0, Short.MAX_VALUE))
.addComponent(tabDependencyInfo))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(pnlParameter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tabDependencyInfo)
.addContainerGap())
);
}// </editor-fold>//GEN-END:initComponents
private void btnBrowseCorpusFile_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBrowseCorpusFile_Click
txtCorpusFile.setText(showFileDialog(txtCorpusFile.getText(), false));
}//GEN-LAST:event_btnBrowseCorpusFile_Click
private void btnStartTraining_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnStartTraining_Click
btnStartTraining.setEnabled(false);
try {
if (isInit == false) {
isInit = true;
Settings settings = null;
// Model
String modelFile = txtModelPath.getText()
+ "trained_model.mco";
// Input
String inputFile = txtCorpusFile.getText();
switch (type) {
case MaltParser:
MaltSettings malt = new MaltSettings();
// Working Directory
malt.WorkingDirectory = "tmp" + File.separator;
malt.OptionsFile = pnlMalt.getOptionsFile();
malt.GuidesFile = pnlMalt.getGuidesFile();
settings = malt;
break;
case MSTParser:
MSTSettings mst = new MSTSettings();
mst.FileType = pnlMST.getFormat();
mst.Iteration = pnlMST.getTrainingIterations();
mst.DecodeType = pnlMST.getDecodeType();
mst.TrainingK = pnlMST.getTrainingK();
mst.LossType = pnlMST.getLossType();
mst.Order = pnlMST.getOrder();
settings = mst;
break;
case MateTools:
MateSettings mate = new MateSettings();
mate.Iteration = pnlMate.getTrainingIterations();
mate.DecodeType = pnlMate.getDecodeType();
mate.FeatureCreation = pnlMate.getFeatureCreation();
mate.Cores = pnlMate.getNumberOfCores();
mate.NonProjectivityThreshold = pnlMate.getNonProjectivityThreshold();
settings = mate;
break;
case ClearParser:
ClearSettings clear = new ClearSettings();
clear.OptionsFile = pnlClear.getOptionsFile();
clear.GuidesFile = pnlClear.getGuidesFile();
clear.BootstrappingLevel = pnlClear.getBootstrapLevel();
settings = clear;
break;
}
settings.Chart = Flowchart.Train;
settings.Input = inputFile;
settings.Model = modelFile;
PrintStream out = new PrintStream(new OutputStream() {
private StringBuffer buffer = new StringBuffer();
@Override
public void write(int b)
throws IOException {
this.buffer.append((char) b);
txtLog.setText(buffer.toString());
txtLog.setCaretPosition(txtLog.getDocument().getLength() - 1);
}
});
if (chkMaxRam.isSelected()) {
DependencyParser.maxRam = txtMaxRam.getText();
}
else {
DependencyParser.maxRam = "";
}
if (chkMinRam.isSelected()) {
DependencyParser.minRam = txtMinRam.getText();
}
else {
DependencyParser.minRam = "";
}
// Run in a new thread
Runnable job = new RunnableTrain(this, type, out, settings);
ExecutorService threadPool = Executors.newFixedThreadPool(1);
threadPool.execute(job);
threadPool.shutdown();
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(
null,
ex.getMessage(),
"Reading Error",
JOptionPane.ERROR_MESSAGE);
} finally {
isInit = false;
}
}//GEN-LAST:event_btnStartTraining_Click
private void btnBrowseModelPath_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBrowseModelPath_Click
txtModelPath.setText(showFileDialog(txtModelPath.getText(), true));
}//GEN-LAST:event_btnBrowseModelPath_Click
private void lblMore_mouseClick(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblMore_mouseClick
lblMore.setVisible(false);
lblLess.setVisible(true);
pnlAdvancedParameter.setVisible(true);
}//GEN-LAST:event_lblMore_mouseClick
private void lblMorepnlMore_mouseEnter(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblMorepnlMore_mouseEnter
pnlMore.setBackground(new Color(235, 232, 232));
pnlMore.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(102, 102, 102), 1, false));
}//GEN-LAST:event_lblMorepnlMore_mouseEnter
private void lblMorepnlMore_mouseExit(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblMorepnlMore_mouseExit
pnlMore.setBackground(new Color(240, 240, 240));
pnlMore.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(240, 240, 240), 1, false));
}//GEN-LAST:event_lblMorepnlMore_mouseExit
private void lblLess_mouseClick(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblLess_mouseClick
pnlAdvancedParameter.setVisible(false);
lblLess.setVisible(false);
lblMore.setVisible(true);
}//GEN-LAST:event_lblLess_mouseClick
private void lblLesspnlMore_mouseEnter(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblLesspnlMore_mouseEnter
pnlMore.setBackground(new Color(235, 232, 232));
pnlMore.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(102, 102, 102), 1, false));
}//GEN-LAST:event_lblLesspnlMore_mouseEnter
private void lblLesspnlMore_mouseExit(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblLesspnlMore_mouseExit
pnlMore.setBackground(new Color(240, 240, 240));
pnlMore.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(240, 240, 240), 1, false));
}//GEN-LAST:event_lblLesspnlMore_mouseExit
private void cboParser_stateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboParser_stateChanged
tabSettings.removeAll();
String text = cboParser.getSelectedItem().toString();
switch (text) {
case "MaltParser":
type = ParserType.MaltParser;
tabSettings.add(pnlMaltSettings, "MaltParser Settings");
break;
case "MSTParser":
type = ParserType.MSTParser;
tabSettings.add(pnlMSTSettings, "MSTParser Settings");
break;
case "MateTools":
type = ParserType.MateTools;
tabSettings.add(pnlMateSettings, "Mate-Tools Settings");
break;
case "ClearParser":
type = ParserType.ClearParser;
tabSettings.add(pnlClearSettings, "ClearParser Settings");
break;
}
}//GEN-LAST:event_cboParser_stateChanged
private void chkMaxRam_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkMaxRam_Click
txtMaxRam.setEditable(chkMaxRam.isSelected());
}//GEN-LAST:event_chkMaxRam_Click
private void chkMinRam_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkMinRam_Click
txtMinRam.setEditable(chkMinRam.isSelected());
}//GEN-LAST:event_chkMinRam_Click
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnBrowseCorpusFile;
private javax.swing.JButton btnBrowseModelPath;
private javax.swing.JButton btnStartTraining;
private javax.swing.JComboBox cboParser;
private javax.swing.JCheckBox chkMaxRam;
private javax.swing.JCheckBox chkMinRam;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JLabel lblClearSettingsPlace;
private javax.swing.JLabel lblCorpusFile;
private javax.swing.JLabel lblLess;
private javax.swing.JLabel lblMSTSettingsL0Place;
private javax.swing.JLabel lblMSTSettingsL0Place1;
private javax.swing.JLabel lblMaltSettingsPlace;
private javax.swing.JLabel lblModelPath;
private javax.swing.JLabel lblMore;
private javax.swing.JLabel lblParser;
private javax.swing.JPanel pnlAdvancedParameter;
private javax.swing.JPanel pnlClearSettings;
private javax.swing.JPanel pnlLog;
private javax.swing.JPanel pnlMSTSettings;
private javax.swing.JPanel pnlMaltSettings;
private javax.swing.JPanel pnlMateSettings;
private javax.swing.JPanel pnlMore;
private javax.swing.JPanel pnlParameter;
private javax.swing.JTabbedPane tabDependencyInfo;
private javax.swing.JTabbedPane tabSettings;
private javax.swing.JTextField txtCorpusFile;
private javax.swing.JTextArea txtLog;
private javax.swing.JTextField txtMaxRam;
private javax.swing.JTextField txtMinRam;
private javax.swing.JTextField txtModelPath;
// End of variables declaration//GEN-END:variables
}