Package tipy :: Module stngs
[hide private]
[frames] | no frames]

Source Code for Module tipy.stngs

   1  #!/usr/bin/env python3 
   2   
   3  """The settings dialog window allow the user to access the configuration. 
   4   
   5  The settings allow the user to consult and modify almost every configuration 
   6  options: 
   7      - Global: 
   8      - Miner: 
   9          - Text files miner: 
  10              - Text files: paths of the texts of the corpus to mine. 
  11              - Database: path to the database where the n-grams will be stored. 
  12              - n: maximum n-grams size. 
  13              - Lowercase: weither the texts words should be lowered or not. 
  14          - Facebook miner: 
  15              - Access Token: token authorizing the program to access the 
  16                  profile. 
  17              - Database: path to the database where the n-grams will be stored. 
  18              - n: maximum n-grams size. 
  19              - Lowercase: weither the texts words should be lowered or not. 
  20          - Twitter miner: 
  21      - Predictor: 
  22          - Corpus n-gram: 
  23              - Database: path to the database from which n-grams will be 
  24                  retrieved. 
  25              - n: maximum n-grams size to retrieved from the database. 
  26              - Deltas: weight of the n-gram in function of its position. 
  27          - Input n-gram: 
  28              - Database: path to the database from which n-grams will be 
  29                  retrieved. 
  30              - n: maximum n-grams size to retrieved from the database. 
  31              - Deltas: weight of the n-gram in function of its position. 
  32          - Facebook n-gram: 
  33              - Database: path to the database from which n-grams will be 
  34                  retrieved. 
  35              - n: maximum n-grams size to retrieved from the database. 
  36              - Deltas: weight of the n-gram in function of its position. 
  37          - Last occur: 
  38              - Lambda 
  39              - N0 
  40              - Cuttoff threshold 
  41          - Memorize: 
  42              - Memory: path of the file where the tokens are stored. 
  43              - Trigger 
  44      - Merger: 
  45      - Merger: name of the merging method to use. 
  46      - Selector: 
  47          - Number of suggestions: number of suggested words to display. 
  48          - Greedy suggestions threshold: don't display words appearing less 
  49              than it. 
  50      - PredictorActivator: 
  51      - stoplist: path of the file containing undesired words (one per line). 
  52  """ 
  53   
  54  from PyQt5 import QtCore, QtGui, QtWidgets 
  55  from os import path 
  56  from tipy.lg import lg 
  57   
  58   
  59  probabilistic_Merger = 0 
  60  ALPHABETICAL_Merger = 1 
  61   
  62   
63 -class Settings_UI(QtWidgets.QDialog):
64 - def __init__(self, config, parent=None):
65 super(Settings_UI, self).__init__(parent) 66 self.config = config 67 self.setupUi() 68 self.read_config() 69 self.setAttribute(QtCore.Qt.WA_DeleteOnClose) 70 self.cwd = path.dirname(path.realpath(__file__))
71
72 - def setupUi(self):
73 ########################## LAYOUTS TO BE USED ########################## 74 self.verticalLayout_2 = QtWidgets.QVBoxLayout() 75 self.horizontalLayout_3 = QtWidgets.QHBoxLayout() 76 self.verticalLayout = QtWidgets.QVBoxLayout() 77 self.horizontalLayout = QtWidgets.QHBoxLayout() 78 self.gridLayout = QtWidgets.QGridLayout() 79 self.gridLayout_25 = QtWidgets.QGridLayout() 80 self.gridLayout_27 = QtWidgets.QGridLayout() 81 self.gridLayout_36 = QtWidgets.QGridLayout() 82 self.gridLayout_39 = QtWidgets.QGridLayout() 83 self.gridLayout_34 = QtWidgets.QGridLayout() 84 self.gridLayout_35 = QtWidgets.QGridLayout() 85 self.FBGRID = QtWidgets.QGridLayout() 86 self.gridLayout_32 = QtWidgets.QGridLayout() 87 self.gridLayout_40 = QtWidgets.QGridLayout() 88 self.gridLayout_2 = QtWidgets.QGridLayout() 89 self.gridLayout_7 = QtWidgets.QGridLayout() 90 self.gridLayout_8 = QtWidgets.QGridLayout() 91 self.gridLayout_18 = QtWidgets.QGridLayout() 92 self.gridLayout_9 = QtWidgets.QGridLayout() 93 self.gridLayout_11 = QtWidgets.QGridLayout() 94 self.gridLayout_12 = QtWidgets.QGridLayout() 95 self.gridLayout_19 = QtWidgets.QGridLayout() 96 self.gridLayout_14 = QtWidgets.QGridLayout() 97 self.gridLayout_16 = QtWidgets.QGridLayout() 98 self.gridLayout_20 = QtWidgets.QGridLayout() 99 self.gridLayout_21 = QtWidgets.QGridLayout() 100 ########################## THE SETTINGS DIALOG ######################### 101 self.resize(691, 484) 102 self.setWindowTitle("Settings") 103 self.gridLayout_3 = QtWidgets.QGridLayout(self) 104 # Sections tab widget 105 self.tabWidgetSections = QtWidgets.QTabWidget(self) 106 ############################## GLOBAL TAB ############################## 107 self.tab = QtWidgets.QWidget() 108 # Add the Global tab to the sections tab widget 109 self.tabWidgetSections.addTab(self.tab, "Global") 110 ############################## MINERS TAB ############################## 111 self.tabMiner = QtWidgets.QWidget() 112 self.gridLayout_43 = QtWidgets.QGridLayout(self.tabMiner) 113 # ===================== MINERS SELECTION GROUP BOX =================== # 114 self.groupBoxMiners = QtWidgets.QGroupBox(self.tabMiner) 115 self.groupBoxMiners.setTitle("Miner type") 116 self.gridLayout_26 = QtWidgets.QGridLayout(self.groupBoxMiners) 117 # Miner selection label 118 self.labelMinerSelection = QtWidgets.QLabel(self.groupBoxMiners) 119 self.labelMinerSelection.setText( 120 'Please select the miner(s) to use for text mining (you can ' 121 'choose multiple miners):') 122 # CorpusMiner checkbox 123 self.checkBoxCorpMiner = QtWidgets.QCheckBox(self.groupBoxMiners) 124 self.checkBoxCorpMiner.setText("Corpus") 125 # FbMiner checkbox 126 self.checkBoxFbMiner = QtWidgets.QCheckBox(self.groupBoxMiners) 127 self.checkBoxFbMiner.setText("Facebook") 128 # TwitterMiner checkbox 129 self.checkBoxTwitMiner = QtWidgets.QCheckBox(self.groupBoxMiners) 130 self.checkBoxTwitMiner.setText("Twitter") 131 # ===================== MINERS SETTINGS GROUP BOX ==================== # 132 self.groupBoxMinersSettings = QtWidgets.QGroupBox(self.tabMiner) 133 self.groupBoxMinersSettings.setTitle("Miner\'s settings") 134 self.gridLayout_28 = QtWidgets.QGridLayout(self.groupBoxMinersSettings) 135 # Miners tab widget 136 self.tabWidgetMiners = QtWidgets.QTabWidget( 137 self.groupBoxMinersSettings) 138 #-------------------------- CORPUS MINER TAB --------------------------# 139 self.tabCorpMiner = QtWidgets.QWidget() 140 self.gridLayout_29 = QtWidgets.QGridLayout(self.tabCorpMiner) 141 # CorpusMiner files label 142 self.labelCorpMinerFiles = QtWidgets.QLabel(self.tabCorpMiner) 143 self.labelCorpMinerFiles.setText("Text files:") 144 self.listCorpMinerFiles = QtWidgets.QListWidget(self.tabCorpMiner) 145 self.verticalLayout_2.addWidget(self.listCorpMinerFiles) 146 # Add text file push button 147 self.pushButtonCorpMinerAddFile = QtWidgets.QPushButton( 148 self.tabCorpMiner) 149 self.pushButtonCorpMinerAddFile.setText("Add") 150 self.pushButtonCorpMinerAddFile.released.connect( 151 self.on_add_file_btn_released) 152 self.horizontalLayout_3.addWidget(self.pushButtonCorpMinerAddFile) 153 # Remove text file push button 154 self.pushButtonCorpMinerRmFile = QtWidgets.QPushButton( 155 self.tabCorpMiner) 156 self.pushButtonCorpMinerRmFile.setText("Remove") 157 self.pushButtonCorpMinerRmFile.released.connect( 158 self.on_rm_file_btn_released) 159 self.horizontalLayout_3.addWidget(self.pushButtonCorpMinerRmFile) 160 self.verticalLayout_2.addLayout(self.horizontalLayout_3) 161 # CorpusMiner database label 162 self.labelCorpMinerDb = QtWidgets.QLabel(self.tabCorpMiner) 163 self.labelCorpMinersetText("Database:") 164 self.toolButtonCorpMiner = QtWidgets.QToolButton(self.tabCorpMiner) 165 # CorpusMiner database toolbutton 166 self.toolButtonCorpMiner.setText("...") 167 self.toolButtonCorpMiner.released.connect( 168 self.on_corp_miner_db_tool_button_released) 169 # CorpusMiner database lineedit 170 self.lineEditCorpMinerDb = QtWidgets.QLineEdit(self.tabCorpMiner) 171 # CorpusMiner n label 172 self.LabelCorpMinerN = QtWidgets.QLabel(self.tabCorpMiner) 173 self.LabelCorpMinerN.setText("N-gram size:") 174 self.spinBoxCorpMinerN = QtWidgets.QSpinBox(self.tabCorpMiner) 175 self.spinBoxCorpMinerN.setButtonSymbols( 176 QtWidgets.QAbstractSpinBox.PlusMinus) 177 # CorpusMiner lowercase mode label 178 self.labelCorpMinerLower = QtWidgets.QLabel(self.tabCorpMiner) 179 self.labelCorpMinerLower.setText("Lowercase mode:") 180 self.checkBoxCorpMinerLower = QtWidgets.QCheckBox(self.tabCorpMiner) 181 self.checkBoxCorpMinerLower.setText('Lowercase:') 182 # Add the Corpus tab to the miners tab widget 183 self.tabWidgetMiners.addTab(self.tabCorpMiner, "Corpus") 184 #------------------------- FACEBOOK MINER TAB -------------------------# 185 self.tabMinerFb = QtWidgets.QWidget() 186 self.gridLayout_33 = QtWidgets.QGridLayout(self.tabMinerFb) 187 # FbMiner access token label 188 self.labelFbMinerAccessToken = QtWidgets.QLabel(self.tabMinerFb) 189 self.labelFbMinerAccessToken.setText("Access Token:") 190 # FbMiner access token lineedit 191 self.lineEditFbMinerAccessToken = QtWidgets.QLineEdit(self.tabMinerFb) 192 # FbMiner database label 193 self.LabelFbMinerDb = QtWidgets.QLabel(self.tabMinerFb) 194 self.LabelFbMinersetText("Database:") 195 # FbMiner satabase toolbutton 196 self.toolButtonFbMiner = QtWidgets.QToolButton(self.tabMinerFb) 197 self.toolButtonFbMiner.setText("...") 198 self.toolButtonFbMiner.released.connect( 199 self.on_fb_miner_db_tool_button_released) 200 # FbMiner database lineedit 201 self.lineEditFbMinerDb = QtWidgets.QLineEdit(self.tabMinerFb) 202 # FbMiner n label 203 self.LabelFbMinerN = QtWidgets.QLabel(self.tabMinerFb) 204 self.LabelFbMinerN.setText("N-gram size:") 205 self.spinBoxFbMinerN = QtWidgets.QSpinBox(self.tabMinerFb) 206 self.spinBoxFbMinerN.setButtonSymbols( 207 QtWidgets.QAbstractSpinBox.PlusMinus) 208 # FbMiner loxercase mode label 209 self.labelFbMinerLower = QtWidgets.QLabel(self.tabMinerFb) 210 self.labelFbMinerLower.setText("Lowercase mode:") 211 self.checkBoxFbMinerLower = QtWidgets.QCheckBox(self.tabMinerFb) 212 # Add the Facebook tab to the miners tab widget 213 self.tabWidgetMiners.addTab(self.tabMinerFb, "Facebook") 214 #------------------------- TWITTER MINER TAB --------------------------# 215 self.tabMinerTwit = QtWidgets.QWidget() 216 self.gridLayout_37 = QtWidgets.QGridLayout(self.tabMinerTwit) 217 # Twitter not implemented label 218 self.labelTwitMinerSettings = QtWidgets.QLabel(self.tabMinerTwit) 219 self.labelTwitMinerSettings.setText("[NOT IMPLEMENTED YET]") 220 self.labelTwitMinerSettings.setAlignment(QtCore.Qt.AlignCenter) 221 # Add the Twitter tab to the miners tab widget 222 self.tabWidgetMiners.addTab(self.tabMinerTwit, "Twitter") 223 # Add the Miner tab to the sections tab widget 224 self.tabWidgetSections.addTab(self.tabMiner, "Miner") 225 ############################ PREDICTORS TAB ############################ 226 self.tabPredictor = QtWidgets.QWidget() 227 self.gridLayout_4 = QtWidgets.QGridLayout(self.tabPredictor) 228 # ================== PREDICTORS SELECTION GROUP BOX ================== # 229 self.groupBoxPreds = QtWidgets.QGroupBox(self.tabPredictor) 230 self.groupBoxPreds.setTitle("Predictor type") 231 self.gridLayout_5 = QtWidgets.QGridLayout(self.groupBoxPreds) 232 # Predictor selection label 233 self.label = QtWidgets.QLabel(self.groupBoxPreds) 234 self.label.setText("Please select the predictor(s) to use for word " 235 "suggestion (you can choose multiple predictors):") 236 self.checkBoxLateOccurPred = QtWidgets.QCheckBox(self.groupBoxPreds) 237 self.checkBoxLateOccurPred.setText("Late Occur") 238 self.checkBoxCorpNgramPred = QtWidgets.QCheckBox(self.groupBoxPreds) 239 self.checkBoxCorpNgramPred.setText("Corpus n-gram") 240 self.checkBoxInpNgramPred = QtWidgets.QCheckBox(self.groupBoxPreds) 241 self.checkBoxInpNgramPred.setText("Input n-gram") 242 self.checkBoxFbNgramPred = QtWidgets.QCheckBox(self.groupBoxPreds) 243 self.checkBoxFbNgramPred.setText("Facebook n-gram") 244 self.checkBoxMemorizePred = QtWidgets.QCheckBox(self.groupBoxPreds) 245 self.checkBoxMemorizePred.setText("Memorize") 246 # =================== PREDICTORS SETTINGS GROUP BOX ================== # 247 self.groupBoxPredSettings = QtWidgets.QGroupBox(self.tabPredictor) 248 self.groupBoxPredSettings.setTitle("Predictor\'s settings") 249 self.gridLayout_6 = QtWidgets.QGridLayout(self.groupBoxPredSettings) 250 self.tabWidgetPreds = QtWidgets.QTabWidget(self.groupBoxPredSettings) 251 #--------------------- CORPUS NGRAM PREDICTOR TAB ---------------------# 252 self.tabCorpNgramPred = QtWidgets.QWidget() 253 self.gridLayout_10 = QtWidgets.QGridLayout(self.tabCorpNgramPred) 254 # CorpusNgramPredictor database label 255 self.labelCorpNgramPredDb = QtWidgets.QLabel(self.tabCorpNgramPred) 256 self.labelCorpNgramPredsetText("Database file:") 257 # CorpusNgramPredictor database lineedit 258 self.lineEditCorpNgramPredDb = QtWidgets.QLineEdit( 259 self.tabCorpNgramPred) 260 # CorpusNgramPredictor database toolbutton 261 self.toolButtonCorpNgramPredDb = QtWidgets.QToolButton( 262 self.tabCorpNgramPred) 263 self.toolButtonCorpNgramPredsetText("...") 264 self.toolButtonCorpNgramPredreleased.connect( 265 self.on_corp_ngram_pred_db_tool_button_released) 266 # CorpusNgramPredictor n label 267 self.labelCorpNgramPredN = QtWidgets.QLabel(self.tabCorpNgramPred) 268 self.labelCorpNgramPredN.setText("N-gram size:") 269 # CorpusNgramPredictor n spinbox 270 self.spinBoxCorpNgramPredN = QtWidgets.QSpinBox(self.tabCorpNgramPred) 271 self.spinBoxCorpNgramPredN.setButtonSymbols( 272 QtWidgets.QAbstractSpinBox.PlusMinus) 273 self.spinBoxCorpNgramPredN.setMinimum(1) 274 self.spinBoxCorpNgramPredN.setMaximum(8) 275 # CorpusNgramPredictor deltas label 276 self.labelCorpNgramPredDeltas = QtWidgets.QLabel(self.tabCorpNgramPred) 277 self.labelCorpNgramPredDeltas.setText("Deltas:") 278 # CorpusNgramPredictor deltas doublespinboxes 279 self.doubleSpinBoxCorpNgramPredDelta1 = QtWidgets.QDoubleSpinBox( 280 self.tabCorpNgramPred) 281 self.doubleSpinBoxCorpNgramPredDelta1.setButtonSymbols( 282 QtWidgets.QAbstractSpinBox.PlusMinus) 283 self.doubleSpinBoxCorpNgramPredDelta2 = QtWidgets.QDoubleSpinBox( 284 self.tabCorpNgramPred) 285 self.doubleSpinBoxCorpNgramPredDelta2.setButtonSymbols( 286 QtWidgets.QAbstractSpinBox.PlusMinus) 287 self.doubleSpinBoxCorpNgramPredDelta3 = QtWidgets.QDoubleSpinBox( 288 self.tabCorpNgramPred) 289 self.doubleSpinBoxCorpNgramPredDelta3.setButtonSymbols( 290 QtWidgets.QAbstractSpinBox.PlusMinus) 291 self.doubleSpinBoxCorpNgramPredDelta4 = QtWidgets.QDoubleSpinBox( 292 self.tabCorpNgramPred) 293 self.doubleSpinBoxCorpNgramPredDelta4.setButtonSymbols( 294 QtWidgets.QAbstractSpinBox.PlusMinus) 295 self.doubleSpinBoxCorpNgramPredDelta5 = QtWidgets.QDoubleSpinBox( 296 self.tabCorpNgramPred) 297 self.doubleSpinBoxCorpNgramPredDelta5.setButtonSymbols( 298 QtWidgets.QAbstractSpinBox.PlusMinus) 299 self.doubleSpinBoxCorpNgramPredDelta6 = QtWidgets.QDoubleSpinBox( 300 self.tabCorpNgramPred) 301 self.doubleSpinBoxCorpNgramPredDelta6.setButtonSymbols( 302 QtWidgets.QAbstractSpinBox.PlusMinus) 303 self.doubleSpinBoxCorpNgramPredDelta7 = QtWidgets.QDoubleSpinBox( 304 self.tabCorpNgramPred) 305 self.doubleSpinBoxCorpNgramPredDelta7.setButtonSymbols( 306 QtWidgets.QAbstractSpinBox.PlusMinus) 307 self.doubleSpinBoxCorpNgramPredDelta8 = QtWidgets.QDoubleSpinBox( 308 self.tabCorpNgramPred) 309 self.doubleSpinBoxCorpNgramPredDelta8.setButtonSymbols( 310 QtWidgets.QAbstractSpinBox.PlusMinus) 311 # Add the Corpus n-gram tab to the predictors tab widget 312 self.tabWidgetPreds.addTab(self.tabCorpNgramPred, "Corpus n-gram") 313 #---------------------- INPUT NGRAM PREDICTOR TAB ---------------------# 314 self.tabInpNgramPred = QtWidgets.QWidget() 315 self.gridLayout_13 = QtWidgets.QGridLayout(self.tabInpNgramPred) 316 # InputNgramPredictor database label 317 self.labelInpNgramPredDb = QtWidgets.QLabel(self.tabInpNgramPred) 318 self.labelInpNgramPredsetText("Database file:") 319 # InputNgramPredictor database lineedit 320 self.lineEditInpNgramPredDb = QtWidgets.QLineEdit(self.tabInpNgramPred) 321 # InputNgramPredictor database toolbutton 322 self.toolButtonInpNgramPredDb = QtWidgets.QToolButton( 323 self.tabInpNgramPred) 324 self.toolButtonInpNgramPredsetText("...") 325 self.toolButtonInpNgramPredreleased.connect( 326 self.on_inp_ngram_pred_db_tool_button_released) 327 # InputNgramPredictor n label 328 self.labelInpNgramPredN = QtWidgets.QLabel(self.tabInpNgramPred) 329 self.labelInpNgramPredN.setText("N-gram size:") 330 # InputNgramPredictor n spinbox 331 self.spinBoxInpNgramPredN = QtWidgets.QSpinBox(self.tabInpNgramPred) 332 self.spinBoxInpNgramPredN.setButtonSymbols( 333 QtWidgets.QAbstractSpinBox.PlusMinus) 334 self.spinBoxInpNgramPredN.setMinimum(1) 335 self.spinBoxInpNgramPredN.setMaximum(8) 336 # InputNgramPredictor deltas label 337 self.labelInpNgramPredDeltas = QtWidgets.QLabel(self.tabInpNgramPred) 338 self.labelInpNgramPredDeltas.setText("Deltas:") 339 # InputNgramPredictor deltas doublespinboxes 340 self.doubleSpinBoxInpNgramPredDelta1 = QtWidgets.QDoubleSpinBox( 341 self.tabInpNgramPred) 342 self.doubleSpinBoxInpNgramPredDelta1.setButtonSymbols( 343 QtWidgets.QAbstractSpinBox.PlusMinus) 344 self.doubleSpinBoxInpNgramPredDelta2 = QtWidgets.QDoubleSpinBox( 345 self.tabInpNgramPred) 346 self.doubleSpinBoxInpNgramPredDelta2.setButtonSymbols( 347 QtWidgets.QAbstractSpinBox.PlusMinus) 348 self.doubleSpinBoxInpNgramPredDelta3 = QtWidgets.QDoubleSpinBox( 349 self.tabInpNgramPred) 350 self.doubleSpinBoxInpNgramPredDelta3.setButtonSymbols( 351 QtWidgets.QAbstractSpinBox.PlusMinus) 352 self.doubleSpinBoxInpNgramPredDelta4 = QtWidgets.QDoubleSpinBox( 353 self.tabInpNgramPred) 354 self.doubleSpinBoxInpNgramPredDelta4.setButtonSymbols( 355 QtWidgets.QAbstractSpinBox.PlusMinus) 356 self.doubleSpinBoxInpNgramPredDelta5 = QtWidgets.QDoubleSpinBox( 357 self.tabInpNgramPred) 358 self.doubleSpinBoxInpNgramPredDelta5.setButtonSymbols( 359 QtWidgets.QAbstractSpinBox.PlusMinus) 360 self.doubleSpinBoxInpNgramPredDelta6 = QtWidgets.QDoubleSpinBox( 361 self.tabInpNgramPred) 362 self.doubleSpinBoxInpNgramPredDelta6.setButtonSymbols( 363 QtWidgets.QAbstractSpinBox.PlusMinus) 364 self.doubleSpinBoxInpNgramPredDelta7 = QtWidgets.QDoubleSpinBox( 365 self.tabInpNgramPred) 366 self.doubleSpinBoxInpNgramPredDelta7.setButtonSymbols( 367 QtWidgets.QAbstractSpinBox.PlusMinus) 368 self.doubleSpinBoxInpNgramPredDelta8 = QtWidgets.QDoubleSpinBox( 369 self.tabInpNgramPred) 370 self.doubleSpinBoxInpNgramPredDelta8.setButtonSymbols( 371 QtWidgets.QAbstractSpinBox.PlusMinus) 372 # Add the Input n-gram tab to the predictors tab widget 373 self.tabWidgetPreds.addTab(self.tabInpNgramPred, "Input n-gram") 374 #-------------------- FACEBOOK NGRAM PREDICTOR TAB --------------------# 375 self.tabFbNgramPred = QtWidgets.QWidget() 376 self.gridLayout_41 = QtWidgets.QGridLayout(self.tabFbNgramPred) 377 # InputNgramPredictor database label 378 self.labelFbNgramPredDb = QtWidgets.QLabel(self.tabFbNgramPred) 379 self.labelFbNgramPredsetText("Database file:") 380 # InputNgramPredictor database lineedit 381 self.lineEditFbNgramPredDb = QtWidgets.QLineEdit(self.tabFbNgramPred) 382 # InputNgramPredictor database toolbutton 383 self.toolButtonFbNgramPredDb = QtWidgets.QToolButton( 384 self.tabFbNgramPred) 385 self.toolButtonFbNgramPredsetText("...") 386 self.toolButtonFbNgramPredreleased.connect( 387 self.on_fb_ngram_pred_db_tool_button_released) 388 # InputNgramPredictor n label 389 self.labelFbNgramPredN = QtWidgets.QLabel(self.tabFbNgramPred) 390 self.labelFbNgramPredN.setText("N-gram size:") 391 # InputNgramPredictor n spinbox 392 self.spinBoxFbNgramPredN = QtWidgets.QSpinBox(self.tabFbNgramPred) 393 self.spinBoxFbNgramPredN.setButtonSymbols( 394 QtWidgets.QAbstractSpinBox.PlusMinus) 395 self.spinBoxFbNgramPredN.setMinimum(1) 396 self.spinBoxFbNgramPredN.setMaximum(8) 397 # InputNgramPredictor deltas label 398 self.labelFbNgramPredDeltas = QtWidgets.QLabel(self.tabFbNgramPred) 399 self.labelFbNgramPredDeltas.setText("Deltas:") 400 # InputNgramPredictor deltas doublespinboxes 401 self.doubleSpinBoxFbNgramPredDelta6 = QtWidgets.QDoubleSpinBox( 402 self.tabFbNgramPred) 403 self.doubleSpinBoxFbNgramPredDelta6.setButtonSymbols( 404 QtWidgets.QAbstractSpinBox.PlusMinus) 405 self.doubleSpinBoxFbNgramPredDelta2 = QtWidgets.QDoubleSpinBox( 406 self.tabFbNgramPred) 407 self.doubleSpinBoxFbNgramPredDelta2.setButtonSymbols( 408 QtWidgets.QAbstractSpinBox.PlusMinus) 409 self.doubleSpinBoxFbNgramPredDelta1 = QtWidgets.QDoubleSpinBox( 410 self.tabFbNgramPred) 411 self.doubleSpinBoxFbNgramPredDelta1.setButtonSymbols( 412 QtWidgets.QAbstractSpinBox.PlusMinus) 413 self.doubleSpinBoxFbNgramPredDelta5 = QtWidgets.QDoubleSpinBox( 414 self.tabFbNgramPred) 415 self.doubleSpinBoxFbNgramPredDelta5.setButtonSymbols( 416 QtWidgets.QAbstractSpinBox.PlusMinus) 417 self.doubleSpinBoxFbNgramPredDelta3 = QtWidgets.QDoubleSpinBox( 418 self.tabFbNgramPred) 419 self.doubleSpinBoxFbNgramPredDelta3.setButtonSymbols( 420 QtWidgets.QAbstractSpinBox.PlusMinus) 421 self.doubleSpinBoxFbNgramPredDelta4 = QtWidgets.QDoubleSpinBox( 422 self.tabFbNgramPred) 423 self.doubleSpinBoxFbNgramPredDelta4.setButtonSymbols( 424 QtWidgets.QAbstractSpinBox.PlusMinus) 425 self.doubleSpinBoxFbNgramPredDelta7 = QtWidgets.QDoubleSpinBox( 426 self.tabFbNgramPred) 427 self.doubleSpinBoxFbNgramPredDelta7.setButtonSymbols( 428 QtWidgets.QAbstractSpinBox.PlusMinus) 429 self.doubleSpinBoxFbNgramPredDelta8 = QtWidgets.QDoubleSpinBox( 430 self.tabFbNgramPred) 431 self.doubleSpinBoxFbNgramPredDelta8.setButtonSymbols( 432 QtWidgets.QAbstractSpinBox.PlusMinus) 433 self.tabWidgetPreds.addTab(self.tabFbNgramPred, 'Facebook n-gram') 434 #---------------------- LATE OCCUR PREDICTOR TAB ----------------------# 435 self.tabLateOccurPred = QtWidgets.QWidget() 436 self.gridLayout_15 = QtWidgets.QGridLayout(self.tabLateOccurPred) 437 self.gridLayout_14.setSizeConstraint( 438 QtWidgets.QLayout.SetDefaultConstraint) 439 # LateOccurPredictor cutoff threshold label 440 self.labelLateOccurPredCutoff = QtWidgets.QLabel(self.tabLateOccurPred) 441 self.labelLateOccurPredCutoff.setText("Cutoff threshold:") 442 # LateOccurPredictor cutoff threshold spinbox 443 self.spinBoxLateOccurPredCutoff = QtWidgets.QSpinBox( 444 self.tabLateOccurPred) 445 self.spinBoxLateOccurPredCutoff.setButtonSymbols( 446 QtWidgets.QAbstractSpinBox.PlusMinus) 447 # LateOccurPredictor N0 label 448 self.labelLateOccurPredN0 = QtWidgets.QLabel(self.tabLateOccurPred) 449 self.labelLateOccurPredN0.setText("N0:") 450 # LateOccurPredictor N0 spinbox 451 self.spinBoxLateOccurPredN0 = QtWidgets.QSpinBox(self.tabLateOccurPred) 452 self.spinBoxLateOccurPredN0.setButtonSymbols( 453 QtWidgets.QAbstractSpinBox.PlusMinus) 454 self.spinBoxLateOccurPredN0.setMinimum(0) 455 # LateOccurPredictor lambda label 456 self.labelLateOccurPredLambda = QtWidgets.QLabel(self.tabLateOccurPred) 457 self.labelLateOccurPredLambda.setText("Lambda:") 458 self.spinBoxLateOccurPredLambda = QtWidgets.QSpinBox( 459 self.tabLateOccurPred) 460 self.spinBoxLateOccurPredLambda.setButtonSymbols( 461 QtWidgets.QAbstractSpinBox.PlusMinus) 462 self.spinBoxLateOccurPredLambda.setMinimum(0) 463 # Add Late occur tab to the predictors tab widget 464 self.tabWidgetPreds.addTab(self.tabLateOccurPred, "Late occur") 465 #----------------------- MEMORIZE PREDICTOR TAB -----------------------# 466 self.tabMemorizePred = QtWidgets.QWidget() 467 self.gridLayout_17 = QtWidgets.QGridLayout(self.tabMemorizePred) 468 # MemorizePredictor memory label 469 self.labelMemorizePredMemory = QtWidgets.QLabel(self.tabMemorizePred) 470 self.labelMemorizePredMemory.setText("Memory file:") 471 # MemorizePredictor memory lineedit 472 self.lineEditMemorizePredMemory = QtWidgets.QLineEdit( 473 self.tabMemorizePred) 474 # MemorizePredictor memory toolbutton 475 self.toolButtonMemorizePredMemory = QtWidgets.QToolButton( 476 self.tabMemorizePred) 477 self.toolButtonMemorizePredMemory.setText("...") 478 self.toolButtonMemorizePredMemory.released.connect( 479 self.on_dejavu_pred_memory_tool_button_released) 480 # MemorizePredictor trigger label 481 self.labelMemorizePredTrigger = QtWidgets.QLabel(self.tabMemorizePred) 482 self.labelMemorizePredTrigger.setText("Trigger:") 483 # MemorizePredictor trigger spinbox 484 self.spinBoxMemorizePredTrigger = QtWidgets.QSpinBox( 485 self.tabMemorizePred) 486 self.spinBoxMemorizePredTrigger.setButtonSymbols( 487 QtWidgets.QAbstractSpinBox.PlusMinus) 488 # Add the Memorize tab to the predictors tab widget 489 self.tabWidgetPreds.addTab(self.tabMemorizePred, "Memorize") 490 # Add Predictor tab to the sections tab widget 491 self.tabWidgetSections.addTab(self.tabPredictor, "Predictor") 492 ############################# Merger TAB ############################# 493 self.tabMerger = QtWidgets.QWidget() 494 self.gridLayout_38 = QtWidgets.QGridLayout(self.tabMerger) 495 # ==================== Merger SELECTION GROUP BOX ================== # 496 self.groupBoxMerger = QtWidgets.QGroupBox(self.tabMerger) 497 self.groupBoxMerger.setTitle("Merger type") 498 self.gridLayout_22 = QtWidgets.QGridLayout(self.groupBoxMerger) 499 # Merger selection label 500 self.labelSelectMerger = QtWidgets.QLabel(self.groupBoxMerger) 501 self.labelSelectMerger.setText("Please select the Merger to use:") 502 # Merger selection combobox 503 self.comboBoxMergers = QtWidgets.QComboBox(self.groupBoxMerger) 504 self.comboBoxMergers.addItem("probabilistic") 505 self.comboBoxMergers.addItem("Alphabetical") 506 # Add theMerger tab to the sections tab widget 507 self.tabWidgetSections.addTab(self.tabMerger, "Merger") 508 ############################# SELECTOR TAB ############################# 509 self.tabSelector = QtWidgets.QWidget() 510 self.gridLayout_24 = QtWidgets.QGridLayout(self.tabSelector) 511 # ==================== SELECTOR SETTINGS GROUP BOX =================== # 512 self.groupBoxSelector = QtWidgets.QGroupBox(self.tabSelector) 513 self.groupBoxSelector.setTitle("Selector\'s settings") 514 self.gridLayout_23 = QtWidgets.QGridLayout(self.groupBoxSelector) 515 # Selector greedy suggestions threshold label 516 self.labelSelectorGreedy = QtWidgets.QLabel(self.groupBoxSelector) 517 self.labelSelectorGreedy.setText("Greedy suggestions threshold:") 518 # Selector greedy suggestions threshold spinbox 519 self.spinBoxSelectorGreedy = QtWidgets.QSpinBox(self.groupBoxSelector) 520 self.spinBoxSelectorGreedy.setButtonSymbols( 521 QtWidgets.QAbstractSpinBox.PlusMinus) 522 # Selector suggestions number label 523 self.labelSelectorSuggestions = QtWidgets.QLabel(self.groupBoxSelector) 524 self.labelSelectorSuggestions.setText("Number of suggestions:") 525 # Selector suggestions number spinbox 526 self.spinBoxSelectorSuggestions = QtWidgets.QSpinBox( 527 self.groupBoxSelector) 528 self.spinBoxSelectorSuggestions.setButtonSymbols( 529 QtWidgets.QAbstractSpinBox.PlusMinus) 530 # Add the Selector tab to the sections tab widget 531 self.tabWidgetSections.addTab(self.tabSelector, "Selector") 532 ############################# STOPLIST TAB ############################# 533 self.tabStopList = QtWidgets.QWidget() 534 self.gridLayout_30 = QtWidgets.QGridLayout(self.tabStopList) 535 # Stoplist selection label 536 self.labelSelectStoplist = QtWidgets.QLabel(self.tabStopList) 537 self.labelSelectStoplist.setText("Please add the stoplists to use:") 538 self.verticalLayout.addWidget(self.labelSelectStoplist) 539 # Stoplist list 540 self.listStoplists = QtWidgets.QListWidget(self.tabStopList) 541 self.verticalLayout.addWidget(self.listStoplists) 542 # Add stoplist file pushbutton 543 self.pushButtonAddStoplist = QtWidgets.QPushButton(self.tabStopList) 544 self.pushButtonAddStoplist.setText("Add") 545 self.pushButtonAddStoplist.released.connect( 546 self.on_add_stoplist_btn_released) 547 self.horizontalLayout.addWidget(self.pushButtonAddStoplist) 548 # Remove stoplist file pushbutton 549 self.pushButtonRmStoplist = QtWidgets.QPushButton(self.tabStopList) 550 self.pushButtonRmStoplist.setText("Remove") 551 self.pushButtonRmStoplist.released.connect( 552 self.on_rm_stoplist_btn_released) 553 self.horizontalLayout.addWidget(self.pushButtonRmStoplist) 554 self.verticalLayout.addLayout(self.horizontalLayout) 555 # Add the Stoplist tab to the sections tab widget 556 self.tabWidgetSections.addTab(self.tabStopList, "Stoplist") 557 ###################### ADD EVERYTHING TO LAYOUTS ####################### 558 self.gridLayout_26.addWidget(self.labelMinerSelection, 0, 0, 1, 1) 559 self.gridLayout_27.addWidget(self.checkBoxCorpMiner, 0, 0, 1, 1) 560 self.gridLayout_27.addWidget(self.checkBoxFbMiner, 0, 1, 1, 1) 561 self.gridLayout_27.addWidget(self.checkBoxTwitMiner, 1, 0, 1, 1) 562 self.gridLayout_26.addLayout(self.gridLayout_27, 1, 0, 1, 1) 563 self.gridLayout_25.addWidget(self.groupBoxMiners, 0, 0, 1, 1) 564 self.gridLayout_36.addWidget(self.labelCorpMinerFiles, 0, 0, 1, 1) 565 self.gridLayout_36.addLayout(self.verticalLayout_2, 0, 1, 1, 1) 566 self.gridLayout_36.addWidget(self.labelCorpMinerDb, 1, 0, 1, 1) 567 self.gridLayout_36.addWidget(self.LabelCorpMinerN, 2, 0, 1, 1) 568 self.gridLayout_36.addWidget(self.spinBoxCorpMinerN, 2, 1, 1, 1) 569 self.gridLayout_39.addWidget(self.lineEditCorpMinerDb, 0, 0, 1, 1) 570 self.gridLayout_39.addWidget(self.toolButtonCorpMiner, 0, 1, 1, 1) 571 self.gridLayout_36.addLayout(self.gridLayout_39, 1, 1, 1, 1) 572 self.gridLayout_36.addWidget(self.labelCorpMinerLower, 3, 0, 1, 1) 573 self.gridLayout_36.addWidget(self.checkBoxCorpMinerLower, 3, 1, 1, 1) 574 self.gridLayout_29.addLayout(self.gridLayout_36, 0, 0, 1, 1) 575 self.gridLayout_34.addWidget(self.LabelFbMinerN, 2, 0, 1, 1) 576 self.gridLayout_34.addWidget( 577 self.lineEditFbMinerAccessToken, 0, 1, 1, 1) 578 self.gridLayout_34.addWidget(self.LabelFbMinerDb, 1, 0, 1, 1) 579 self.gridLayout_34.addWidget(self.labelFbMinerAccessToken, 0, 0, 1, 1) 580 self.gridLayout_34.addWidget(self.spinBoxFbMinerN, 2, 1, 1, 1) 581 self.gridLayout_35.addWidget(self.lineEditFbMinerDb, 0, 0, 1, 1) 582 self.gridLayout_35.addWidget(self.toolButtonFbMiner, 0, 1, 1, 1) 583 self.gridLayout_34.addLayout(self.gridLayout_35, 1, 1, 1, 1) 584 self.gridLayout_34.addWidget(self.labelFbMinerLower, 3, 0, 1, 1) 585 self.gridLayout_34.addWidget(self.checkBoxFbMinerLower, 3, 1, 1, 1) 586 self.gridLayout_33.addLayout(self.gridLayout_34, 0, 0, 1, 1) 587 self.gridLayout_37.addWidget(self.labelTwitMinerSettings, 0, 0, 1, 1) 588 self.gridLayout_28.addWidget(self.tabWidgetMiners, 0, 0, 1, 1) 589 self.gridLayout_25.addWidget(self.groupBoxMinersSettings, 1, 0, 1, 1) 590 self.gridLayout_43.addLayout(self.gridLayout_25, 0, 0, 1, 1) 591 self.gridLayout_5.addWidget(self.label, 0, 0, 1, 1) 592 self.gridLayout_7.addWidget(self.checkBoxCorpNgramPred, 0, 0, 1, 1) 593 self.gridLayout_7.addWidget(self.checkBoxInpNgramPred, 0, 1, 1, 1) 594 self.gridLayout_7.addWidget(self.checkBoxFbNgramPred, 1, 0, 1, 1) 595 self.gridLayout_7.addWidget(self.checkBoxMemorizePred, 1, 1, 1, 1) 596 self.gridLayout_7.addWidget(self.checkBoxLateOccurPred, 2, 0, 1, 1) 597 self.gridLayout_5.addLayout(self.gridLayout_7, 1, 0, 1, 1) 598 self.gridLayout_2.addWidget(self.groupBoxPreds, 0, 0, 1, 1) 599 self.gridLayout_8.addWidget(self.spinBoxCorpNgramPredN, 1, 1, 1, 1) 600 self.gridLayout_18.addWidget(self.toolButtonCorpNgramPredDb, 0, 1, 1, 1) 601 self.gridLayout_18.addWidget(self.lineEditCorpNgramPredDb, 0, 0, 1, 1) 602 self.gridLayout_8.addLayout(self.gridLayout_18, 0, 1, 1, 1) 603 self.gridLayout_8.addWidget(self.labelCorpNgramPredDeltas, 2, 0, 1, 1) 604 self.gridLayout_8.addWidget(self.labelCorpNgramPredN, 1, 0, 1, 1) 605 self.gridLayout_8.addWidget(self.labelCorpNgramPredDb, 0, 0, 1, 1) 606 self.gridLayout_9.addWidget( 607 self.doubleSpinBoxCorpNgramPredDelta8, 1, 1, 1, 1) 608 self.gridLayout_9.addWidget( 609 self.doubleSpinBoxCorpNgramPredDelta2, 0, 1, 1, 1) 610 self.gridLayout_9.addWidget( 611 self.doubleSpinBoxCorpNgramPredDelta1, 0, 0, 1, 1) 612 self.gridLayout_9.addWidget( 613 self.doubleSpinBoxCorpNgramPredDelta6, 1, 0, 1, 1) 614 self.gridLayout_9.addWidget( 615 self.doubleSpinBoxCorpNgramPredDelta3, 0, 2, 1, 1) 616 self.gridLayout_9.addWidget( 617 self.doubleSpinBoxCorpNgramPredDelta4, 0, 3, 1, 1) 618 self.gridLayout_9.addWidget( 619 self.doubleSpinBoxCorpNgramPredDelta5, 1, 2, 1, 1) 620 self.gridLayout_9.addWidget( 621 self.doubleSpinBoxCorpNgramPredDelta7, 1, 3, 1, 1) 622 self.gridLayout_8.addLayout(self.gridLayout_9, 2, 1, 1, 1) 623 self.gridLayout_10.addLayout(self.gridLayout_8, 0, 0, 1, 1) 624 self.gridLayout_11.addWidget(self.labelInpNgramPredDb, 0, 0, 1, 1) 625 self.gridLayout_11.addWidget(self.labelInpNgramPredN, 1, 0, 1, 1) 626 self.gridLayout_11.addWidget(self.spinBoxInpNgramPredN, 1, 1, 1, 1) 627 self.gridLayout_11.addWidget(self.labelInpNgramPredDeltas, 2, 0, 1, 1) 628 self.gridLayout_12.addWidget( 629 self.doubleSpinBoxInpNgramPredDelta6, 1, 1, 1, 1) 630 self.gridLayout_12.addWidget( 631 self.doubleSpinBoxInpNgramPredDelta2, 0, 1, 1, 1) 632 self.gridLayout_12.addWidget( 633 self.doubleSpinBoxInpNgramPredDelta1, 0, 0, 1, 1) 634 self.gridLayout_12.addWidget( 635 self.doubleSpinBoxInpNgramPredDelta5, 1, 0, 1, 1) 636 self.gridLayout_12.addWidget( 637 self.doubleSpinBoxInpNgramPredDelta3, 0, 2, 1, 1) 638 self.gridLayout_12.addWidget( 639 self.doubleSpinBoxInpNgramPredDelta4, 0, 3, 1, 1) 640 self.gridLayout_12.addWidget( 641 self.doubleSpinBoxInpNgramPredDelta7, 1, 2, 1, 1) 642 self.gridLayout_12.addWidget( 643 self.doubleSpinBoxInpNgramPredDelta8, 1, 3, 1, 1) 644 self.gridLayout_11.addLayout(self.gridLayout_12, 2, 1, 1, 1) 645 self.gridLayout_19.addWidget(self.toolButtonInpNgramPredDb, 0, 1, 1, 1) 646 self.gridLayout_19.addWidget(self.lineEditInpNgramPredDb, 0, 0, 1, 1) 647 self.gridLayout_11.addLayout(self.gridLayout_19, 0, 1, 1, 1) 648 self.gridLayout_13.addLayout(self.gridLayout_11, 0, 0, 1, 1) 649 self.FBGRID.addWidget(self.labelFbNgramPredDb, 0, 0, 1, 1) 650 self.FBGRID.addWidget(self.labelFbNgramPredN, 1, 0, 1, 1) 651 self.FBGRID.addWidget(self.spinBoxFbNgramPredN, 1, 1, 1, 1) 652 self.FBGRID.addWidget(self.labelFbNgramPredDeltas, 2, 0, 1, 1) 653 self.gridLayout_32.addWidget( 654 self.doubleSpinBoxFbNgramPredDelta6, 1, 1, 1, 1) 655 self.gridLayout_32.addWidget( 656 self.doubleSpinBoxFbNgramPredDelta2, 0, 1, 1, 1) 657 self.gridLayout_32.addWidget( 658 self.doubleSpinBoxFbNgramPredDelta1, 0, 0, 1, 1) 659 self.gridLayout_32.addWidget( 660 self.doubleSpinBoxFbNgramPredDelta5, 1, 0, 1, 1) 661 self.gridLayout_32.addWidget( 662 self.doubleSpinBoxFbNgramPredDelta3, 0, 2, 1, 1) 663 self.gridLayout_32.addWidget( 664 self.doubleSpinBoxFbNgramPredDelta4, 0, 3, 1, 1) 665 self.gridLayout_32.addWidget( 666 self.doubleSpinBoxFbNgramPredDelta7, 1, 2, 1, 1) 667 self.gridLayout_32.addWidget( 668 self.doubleSpinBoxFbNgramPredDelta8, 1, 3, 1, 1) 669 self.FBGRID.addLayout(self.gridLayout_32, 2, 1, 1, 1) 670 self.gridLayout_40.addWidget(self.toolButtonFbNgramPredDb, 0, 1, 1, 1) 671 self.gridLayout_40.addWidget(self.lineEditFbNgramPredDb, 0, 0, 1, 1) 672 self.FBGRID.addLayout(self.gridLayout_40, 0, 1, 1, 1) 673 self.gridLayout_41.addLayout(self.FBGRID, 0, 0, 1, 1) 674 self.gridLayout_14.addWidget(self.labelLateOccurPredCutoff, 2, 0, 1, 1) 675 self.gridLayout_14.addWidget(self.labelLateOccurPredN0, 1, 0, 1, 1) 676 self.gridLayout_14.addWidget(self.labelLateOccurPredLambda, 0, 0, 1, 1) 677 self.gridLayout_14.addWidget( 678 self.spinBoxLateOccurPredLambda, 0, 1, 1, 1) 679 self.gridLayout_14.addWidget(self.spinBoxLateOccurPredN0, 1, 1, 1, 1) 680 self.gridLayout_14.addWidget( 681 self.spinBoxLateOccurPredCutoff, 2, 1, 1, 1) 682 self.gridLayout_15.addLayout(self.gridLayout_14, 0, 0, 1, 1) 683 self.gridLayout_16.addWidget(self.labelMemorizePredMemory, 0, 0, 1, 1) 684 self.gridLayout_16.addWidget(self.labelMemorizePredTrigger, 1, 0, 1, 1) 685 self.gridLayout_16.addWidget( 686 self.spinBoxMemorizePredTrigger, 1, 1, 1, 1) 687 self.gridLayout_20.addWidget( 688 self.toolButtonMemorizePredMemory, 0, 1, 1, 1) 689 self.gridLayout_20.addWidget( 690 self.lineEditMemorizePredMemory, 0, 0, 1, 1) 691 self.gridLayout_16.addLayout(self.gridLayout_20, 0, 1, 1, 1) 692 self.gridLayout_17.addLayout(self.gridLayout_16, 0, 0, 1, 1) 693 self.gridLayout_6.addWidget(self.tabWidgetPreds, 0, 0, 1, 1) 694 self.gridLayout_2.addWidget(self.groupBoxPredSettings, 1, 0, 1, 1) 695 self.gridLayout_4.addLayout(self.gridLayout_2, 0, 0, 1, 1) 696 self.gridLayout_22.addWidget(self.labelSelectMerger, 0, 0, 1, 1) 697 self.gridLayout_22.addWidget(self.comboBoxMergers, 1, 0, 1, 1) 698 self.gridLayout_21.addWidget(self.groupBoxMerger, 0, 0, 1, 1) 699 self.gridLayout_38.addLayout(self.gridLayout_21, 0, 0, 1, 1) 700 self.gridLayout_23.addWidget(self.labelSelectorGreedy, 1, 0, 1, 1) 701 self.gridLayout_23.addWidget(self.labelSelectorSuggestions, 0, 0, 1, 1) 702 self.gridLayout_23.addWidget( 703 self.spinBoxSelectorSuggestions, 0, 1, 1, 1) 704 self.gridLayout_23.addWidget(self.spinBoxSelectorGreedy, 1, 1, 1, 1) 705 self.gridLayout_24.addWidget(self.groupBoxSelector, 0, 0, 1, 1) 706 self.gridLayout.addWidget(self.tabWidgetSections, 0, 0, 1, 1) 707 self.gridLayout_3.addLayout(self.gridLayout, 0, 0, 1, 1) 708 self.gridLayout_30.addLayout(self.verticalLayout, 0, 0, 1, 1) 709 self.gridLayout.addWidget(self.tabWidgetSections, 0, 0, 1, 1)
710
711 - def read_config(self):
712 # settings that can be modified by the settings dialog: 713 # Global: 714 # Miner: 715 # Miners 716 miners = self.config.getas('MinerRegistry', 'miners', 'list') 717 self.checkBoxCorpMiner.setChecked('CorpusMiner' in miners) 718 self.checkBoxFbMiner.setChecked('FbMiner' in miners) 719 self.checkBoxTwitMiner.setChecked('TwitterMiner' in miners) 720 # Text files miner: 721 # Text files 722 self.listCorpMinerFiles.clear() 723 files = self.config.getas('CorpusMiner', 'texts', 'list') 724 for f in files: 725 self.listCorpMinerFiles.addItem(f) 726 # Database 727 database = self.config.getas('CorpusMiner', 'database') 728 self.lineEditCorpMinersetText(database) 729 # n 730 n = self.config.getas('CorpusMiner', 'n', 'int') 731 self.spinBoxCorpMinerN.setValue(n) 732 # Lowercase 733 lower = self.config.getas('CorpusMiner', 'lowercase', 'bool') 734 self.checkBoxCorpMinerLower.setChecked(lower) 735 # Facebook miner: 736 # Access Token 737 accessToken = self.config.getas('FbMiner', 'accesstoken') 738 self.lineEditFbMinerAccessToken.setText(accessToken) 739 # Database 740 database = self.config.getas('FbMiner', 'database') 741 self.lineEditFbMinersetText(database) 742 # n 743 n = self.config.getas('FbMiner', 'n', 'int') 744 self.spinBoxFbMinerN.setValue(n) 745 # Lowercase 746 lower = self.config.getas('FbMiner', 'lowercase', 'bool') 747 self.checkBoxFbMinerLower.setChecked(lower) 748 # Twitter miner: 749 # Predictor: 750 # Predictors 751 preds = self.config.getas('PredictorRegistry', 'predictors', 'list') 752 self.checkBoxCorpNgramPred.setChecked('CorpusNgramPredictor' in preds) 753 self.checkBoxInpNgramPred.setChecked('InputNgramPredictor' in preds) 754 self.checkBoxFbNgramPred.setChecked('FbNgramPredictor' in preds) 755 self.checkBoxLateOccurPred.setChecked('LateOccurPredictor' in preds) 756 self.checkBoxMemorizePred.setChecked('MemorizePredictor' in preds) 757 # Corpus n-gram: 758 # Database 759 database = self.config.getas('CorpusNgramPredictor', 'database') 760 self.lineEditCorpNgramPredsetText(database) 761 # n 762 deltas = self.config.getas( 763 'CorpusNgramPredictor', 'deltas', 'floatlist') 764 self.spinBoxCorpNgramPredN.setValue(len(deltas)) 765 # Deltas 766 boxes = [self.doubleSpinBoxCorpNgramPredDelta1, 767 self.doubleSpinBoxCorpNgramPredDelta2, 768 self.doubleSpinBoxCorpNgramPredDelta3, 769 self.doubleSpinBoxCorpNgramPredDelta4, 770 self.doubleSpinBoxCorpNgramPredDelta5, 771 self.doubleSpinBoxCorpNgramPredDelta6, 772 self.doubleSpinBoxCorpNgramPredDelta7, 773 self.doubleSpinBoxCorpNgramPredDelta8] 774 for i, delta in enumerate(deltas): 775 boxes[i].setValue(delta) 776 for i in range(len(deltas) + 1, len(boxes)): 777 boxes[i].setValue(0) 778 boxes[i].setEnabled(False) 779 # Input n-gram: 780 # Database 781 database = self.config.getas('InputNgramPredictor', 'database') 782 self.lineEditInpNgramPredsetText(database) 783 # n 784 deltas = self.config.getas('InputNgramPredictor', 'deltas', 'floatlist') 785 self.spinBoxInpNgramPredN.setValue(len(deltas)) 786 # Deltas 787 boxes = [self.doubleSpinBoxInpNgramPredDelta1, 788 self.doubleSpinBoxInpNgramPredDelta2, 789 self.doubleSpinBoxInpNgramPredDelta3, 790 self.doubleSpinBoxInpNgramPredDelta4, 791 self.doubleSpinBoxInpNgramPredDelta5, 792 self.doubleSpinBoxInpNgramPredDelta6, 793 self.doubleSpinBoxInpNgramPredDelta7, 794 self.doubleSpinBoxInpNgramPredDelta8] 795 for i, delta in enumerate(deltas): 796 boxes[i].setValue(delta) 797 for i in range(len(deltas) + 1, len(boxes)): 798 boxes[i].setValue(0) 799 boxes[i].setEnabled(False) 800 # Facebook n-gram: 801 # Database 802 database = self.config.getas('FbNgramPredictor', 'database') 803 self.lineEditFbNgramPredsetText(database) 804 # n 805 deltas = self.config.getas('FbNgramPredictor', 'deltas', 'floatlist') 806 self.spinBoxFbNgramPredN.setValue(len(deltas)) 807 # Deltas 808 boxes = [self.doubleSpinBoxFbNgramPredDelta1, 809 self.doubleSpinBoxFbNgramPredDelta2, 810 self.doubleSpinBoxFbNgramPredDelta3, 811 self.doubleSpinBoxFbNgramPredDelta4, 812 self.doubleSpinBoxFbNgramPredDelta5, 813 self.doubleSpinBoxFbNgramPredDelta6, 814 self.doubleSpinBoxFbNgramPredDelta7, 815 self.doubleSpinBoxFbNgramPredDelta8] 816 for i, delta in enumerate(deltas): 817 boxes[i].setValue(delta) 818 for i in range(len(deltas) + 1, len(boxes)): 819 boxes[i].setValue(0) 820 boxes[i].setEnabled(False) 821 # Last occur: 822 # Lambda 823 lambdar = self.config.getas('LateOccurPredictor', 'lambda', 'int') 824 self.spinBoxLateOccurPredLambda.setValue(lambdar) 825 # N0 826 n0 = self.config.getas('LateOccurPredictor', 'n_0', 'int') 827 self.spinBoxLateOccurPredN0.setValue(n0) 828 # Cuttoff threshold 829 cutoff = self.config.getas( 830 'LateOccurPredictor', 'cutoff_threshold', 'int') 831 self.spinBoxLateOccurPredCutoff.setValue(cutoff) 832 # Memorize: 833 # Memory 834 memory = self.config.getas('MemorizePredictor', 'memory') 835 self.lineEditMemorizePredMemory.setText(memory) 836 # Trigger 837 trigger = self.config.getas('MemorizePredictor', 'trigger', 'int') 838 self.spinBoxMemorizePredTrigger.setValue(trigger) 839 # Merger: 840 # Merger 841 Merger = self.config.getas( 842 'PredictorActivator', 'merging_method').lower() 843 if Merger == 'probabilistic': 844 self.comboBoxMergers.setCurrentIndex(probabilistic_Merger) 845 elif Merger == 'alphabetical': 846 self.comboBoxMergers.setCurrentIndex(ALPHABETICAL_Merger) 847 # Selector: 848 # Number of suggestions 849 noSuggestions = self.config.getas('Selector', 'suggestions', 'int') 850 self.spinBoxSelectorSuggestions.setValue(noSuggestions) 851 # Greedy suggestions threshold 852 greedyTreshold = self.config.getas( 853 'Selector', 'greedy_suggestion_threshold', 'int') 854 self.spinBoxSelectorGreedy.setValue(greedyTreshold) 855 # PredictorActivator: 856 # stoplist 857 self.listStoplists.clear() 858 stoplists = self.config.getas('PredictorActivator', 'stoplist', 'list') 859 for sl in stoplists: 860 self.listStoplists.addItem(sl)
861
862 - def closeEvent(self, event):
863 self.save_config() 864 event.accept()
865
866 - def done(self, code):
867 self.save_config()
868
869 - def save_config(self):
870 # settings that can be modified by the settings dialog: 871 # Global: 872 # Miner: 873 # Miners 874 self.config['MinerRegistry']['MINERS'] = '' 875 if self.checkBoxCorpMiner.isChecked(): 876 self.config['MinerRegistry']['MINERS'] += 'CorpusMiner ' 877 if self.checkBoxFbMiner.isChecked(): 878 self.config['MinerRegistry']['MINERS'] += 'FbMiner ' 879 if self.checkBoxTwitMiner.isChecked(): 880 self.config['MinerRegistry']['MINERS'] += 'TwitterMiner ' 881 # Text files miner: 882 # Text files 883 self.config['CorpusMiner']['TEXTS'] = '' 884 for index in range(self.listCorpMinerFiles.count()): 885 self.config['CorpusMiner']['TEXTS'] += \ 886 self.listCorpMinerFiles.item(index).text() + ' ' 887 # Database 888 self.config['CorpusMiner']['database'] = \ 889 self.lineEditCorpMinertext() 890 # n 891 self.config['CorpusMiner']['n'] = \ 892 str(self.spinBoxCorpMinerN.value()) 893 # Lowercase 894 if self.checkBoxCorpMinerLower.isChecked(): 895 self.config['CorpusMiner']['lowercase'] = 'True' 896 else: 897 self.config['CorpusMiner']['lowercase'] = 'False' 898 # Facebook miner: 899 # Access Token 900 self.config['FbMiner']['ACCESSTOKEN'] = \ 901 self.lineEditFbMinerAccessToken.text() 902 # Database 903 self.config['FbMiner']['database'] = self.lineEditFbMinertext() 904 # n 905 self.config['FbMiner']['n'] = \ 906 str(self.spinBoxFbMinerN.value()) 907 # Lowercase 908 if self.checkBoxFbMinerLower.isChecked(): 909 self.config['FbMiner']['lowercase'] = 'True' 910 else: 911 self.config['FbMiner']['lowercase'] = 'False' 912 # Twitter miner: 913 # Predictor: 914 # Predictors 915 self.config['PredictorRegistry']['PREDICTORS'] = '' 916 if self.checkBoxCorpNgramPred.isChecked(): 917 self.config['PredictorRegistry']['PREDICTORS'] += \ 918 'CorpusNgramPredictor ' 919 if self.checkBoxInpNgramPred.isChecked(): 920 self.config['PredictorRegistry']['PREDICTORS'] += \ 921 'InputNgramPredictor ' 922 if self.checkBoxFbNgramPred.isChecked(): 923 self.config['PredictorRegistry']['PREDICTORS'] += \ 924 'FbNgramPredictor ' 925 if self.checkBoxLateOccurPred.isChecked(): 926 self.config['PredictorRegistry']['PREDICTORS'] += \ 927 'LateOccurPredictor ' 928 if self.checkBoxMemorizePred.isChecked(): 929 self.config['PredictorRegistry']['PREDICTORS'] += \ 930 'MemorizePredictor ' 931 # Corpus n-gram: 932 # Database 933 self.config['CorpusNgramPredictor']['database'] = \ 934 self.lineEditCorpNgramPredtext() 935 # Deltas 936 self.config['CorpusNgramPredictor']['DELTAS'] = '' 937 boxes = [self.doubleSpinBoxCorpNgramPredDelta1, 938 self.doubleSpinBoxCorpNgramPredDelta2, 939 self.doubleSpinBoxCorpNgramPredDelta3, 940 self.doubleSpinBoxCorpNgramPredDelta4, 941 self.doubleSpinBoxCorpNgramPredDelta5, 942 self.doubleSpinBoxCorpNgramPredDelta6, 943 self.doubleSpinBoxCorpNgramPredDelta7, 944 self.doubleSpinBoxCorpNgramPredDelta8] 945 for box in boxes: 946 if box.isEnabled() and box.value() != 0: 947 self.config['CorpusNgramPredictor']['DELTAS'] += \ 948 str(box.value()) + ' ' 949 # Input n-gram: 950 # Database 951 self.config['InputNgramPredictor']['database'] = \ 952 self.lineEditInpNgramPredtext() 953 # n 954 deltas = self.config['InputNgramPredictor']['DELTAS'].split() 955 self.spinBoxInpNgramPredN.setValue(len(deltas)) 956 # Deltas 957 self.config['InputNgramPredictor']['DELTAS'] = '' 958 boxes = [self.doubleSpinBoxInpNgramPredDelta1, 959 self.doubleSpinBoxInpNgramPredDelta2, 960 self.doubleSpinBoxInpNgramPredDelta3, 961 self.doubleSpinBoxInpNgramPredDelta4, 962 self.doubleSpinBoxInpNgramPredDelta5, 963 self.doubleSpinBoxInpNgramPredDelta6, 964 self.doubleSpinBoxInpNgramPredDelta7, 965 self.doubleSpinBoxInpNgramPredDelta8] 966 for box in boxes: 967 if box.isEnabled() and box.value() != 0: 968 self.config['InputNgramPredictor']['DELTAS'] += \ 969 str(box.value()) + ' ' 970 # Facebook n-gram: 971 # Database 972 self.config['FbNgramPredictor']['database'] = \ 973 self.lineEditFbNgramPredtext() 974 # n 975 deltas = self.config['FbNgramPredictor']['DELTAS'].split() 976 self.spinBoxFbNgramPredN.setValue(len(deltas)) 977 # Deltas 978 self.config['FbNgramPredictor']['DELTAS'] = '' 979 boxes = [self.doubleSpinBoxFbNgramPredDelta1, 980 self.doubleSpinBoxFbNgramPredDelta2, 981 self.doubleSpinBoxFbNgramPredDelta3, 982 self.doubleSpinBoxFbNgramPredDelta4, 983 self.doubleSpinBoxFbNgramPredDelta5, 984 self.doubleSpinBoxFbNgramPredDelta6, 985 self.doubleSpinBoxFbNgramPredDelta7, 986 self.doubleSpinBoxFbNgramPredDelta8] 987 for box in boxes: 988 if box.isEnabled() and box.value() != 0: 989 self.config['FbNgramPredictor']['DELTAS'] += \ 990 str(box.value()) + ' ' 991 # Last occur: 992 # Lambda 993 self.config['LateOccurPredictor']['LAMBDA'] = \ 994 str(self.spinBoxLateOccurPredLambda.value()) 995 # N0 996 self.config['LateOccurPredictor']['N_0'] = \ 997 str(self.spinBoxLateOccurPredN0.value()) 998 # Cuttoff threshold 999 self.config['LateOccurPredictor']['CUTOFF_THRESHOLD'] = \ 1000 str(self.spinBoxLateOccurPredCutoff.value()) 1001 # Memorize: 1002 # Memory 1003 self.config['MemorizePredictor']['MEMORY'] = \ 1004 self.lineEditMemorizePredMemory.text() 1005 # Trigger 1006 self.config['MemorizePredictor']['TRIGGER'] = \ 1007 str(self.spinBoxMemorizePredTrigger.value()) 1008 # Merger: 1009 # Merger 1010 self.config['PredictorActivator']['merging_method'] = \ 1011 self.comboBoxMergers.currentText() 1012 # Selector: 1013 # Number of suggestions 1014 self.config['Selector']['SUGGESTIONS'] = \ 1015 str(self.spinBoxSelectorSuggestions.value()) 1016 # Greedy suggestions threshold 1017 self.config['Selector']['GREEDY_SUGGESTION_THRESHOLD'] = \ 1018 str(self.spinBoxSelectorGreedy.value()) 1019 lg.info('Configuration file saved.')
1020
1021 - def shorten_path(self, path):
1022 if path.startswith(self.cwd): 1023 return path.replace(self.cwd, '.') 1024 return path
1025
1026 - def on_add_file_btn_released(self):
1027 cwd = path.dirname(path.realpath(__file__)) 1028 fName = QtWidgets.QFileDialog.getOpenFileName( 1029 self, "Open text file", cwd) 1030 if fName[0]: 1031 self.listCorpMinerFiles.addItem(self.shorten_path(fName[0]))
1032
1033 - def on_rm_file_btn_released(self):
1034 listItems = self.listCorpMinerFiles.selectedItems() 1035 if not listItems: 1036 return 1037 for item in listItems: 1038 self.listCorpMinerFiles.takeItem(self.listCorpMinerFiles.row(item))
1039
1041 cwd = path.dirname(path.realpath(__file__)) 1042 fName = QtWidgets.QFileDialog.getOpenFileName( 1043 self, "Open text file", cwd) 1044 if fName[0]: 1045 self.listStoplists.addItem(self.shorten_path(fName[0]))
1046
1048 listItems = self.listStoplists.selectedItems() 1049 if not listItems: 1050 return 1051 for item in listItems: 1052 self.listStoplists.takeItem(self.listStoplists.row(item))
1053
1055 fName = QtWidgets.QFileDialog.getOpenFileName( 1056 self, "Open database file", self.cwd, 1057 "SQLite database (*.db *.sqlite)") 1058 if fName[0]: 1059 self.lineEditCorpMinersetText(self.shorten_path(fName[0]))
1060
1062 fName = QtWidgets.QFileDialog.getOpenFileName( 1063 self, "Open database file", self.cwd, 1064 "SQLite database (*.db *.sqlite)") 1065 if fName[0]: 1066 self.lineEditFbMinersetText(self.shorten_path(fName[0]))
1067
1069 fName = QtWidgets.QFileDialog.getOpenFileName( 1070 self, "Open database file", self.cwd, 1071 "SQLite database (*.db *.sqlite)") 1072 if fName[0]: 1073 self.lineEditCorpNgramPredsetText(self.shorten_path(fName[0]))
1074
1076 fName = QtWidgets.QFileDialog.getOpenFileName( 1077 self, "Open database file", self.cwd, 1078 "SQLite database (*.db *.sqlite)") 1079 if fName[0]: 1080 self.lineEditInpNgramPredsetText(self.shorten_path(fName[0]))
1081
1083 fName = QtWidgets.QFileDialog.getOpenFileName( 1084 self, "Open database file", self.cwd, 1085 "SQLite database (*.db *.sqlite)") 1086 if fName[0]: 1087 self.lineEditFbNgramPredsetText(self.shorten_path(fName[0]))
1088
1090 fName = QtWidgets.QFileDialog.getOpenFileName( 1091 self, "Open text file", self.cwd, "Text (*.txt)") 1092 if fName[0]: 1093 self.lineEditMemorizePredMemory.setText( 1094 self.shorten_path(fName[0]))
1095