def run(self): logging.info('working dir is %s', self.config.experiment_dir) # get data logging.info('extracting data') Extractor(self.config).run() # learn lm logging.info('learning LM') SRILM(self.config).run_ngram_count() # train moses moses = Moses(self.config) logging.info('training TM') moses.run_train() # reweight using monolingual data if self.config.monolingual: logging.info('learning from monolingual data') NLReweighter(self.config).run() # filter disconnected rules if self.config.filter: logging.info('filtering disconnected rules') moses.filter_phrase_table() # tune moses if self.config.run == 'test': logging.info('tuning TM') moses.run_tune() if self.config.retrain: logging.info('retraining TM') moses.run_retrain() # decode input logging.info('decoding') moses.run_decode() if self.config.nlg: logging.info('running BLEU') BLEUScorer(self.config).run() pass else: # functionalize logging.info('functionalizing') Functionalizer(self.config).run() # compare answers logging.info('executing queries') if self.config.corpus == 'geo': GeoWorld(self.config).run() #elif self.config.corpus == 'atis': # SlotChecker(self.config).run() else: QueryComparer(self.config).run()
def run(self): logging.info('working dir is %s', self.config.experiment_dir) # get data logging.info('extracting data') os.system("cp "+sys.argv[1]+" "+self.config.experiment_dir+"/settings.yaml") os.system("cp dependencies.yaml "+self.config.experiment_dir) Extractor(self.config).run() # learn lm logging.info('learning LM') SRILM(self.config).run_ngram_count() # train moses logging.info('training TM') if self.config.decoder == 'moses': moses = Moses(self.config) moses.run_train() elif self.config.decoder == 'cdec': cdec = CDEC(self.config) cdec.run_train() # reweight using monolingual data if self.config.monolingual: logging.info('learning from monolingual data') NLReweighter(self.config).run() # filter disconnected rules if self.config.filter: logging.info('filtering disconnected rules') moses.filter_phrase_table() # tune moses if self.config.run == 'test' or self.config.run == 'all' : if self.config.decoder == 'moses': if self.config.weights != 'mert': logging.info('copying tuned weights') os.system("cp -r "+self.config.workdir+"/"+self.config.weights+" "+self.config.experiment_dir) with open(self.config.experiment_dir+"/mert-work/moses.ini", "r+") as f: data = f.read() #will break at the century change 2999->3000 ;) or if we travel back to the 19 hundreds for that matter.. data = re.sub(r"/.*?2.*?/", r"%s/" % self.config.experiment_dir, data) f.seek(0) f.write(data) f.truncate() else: logging.info('tuning TM') moses.run_tune() elif self.config.decoder == 'cdec': if self.config.weights == 'mert': logging.info('tuning TM using mert') cdec.run_tune('mert') elif self.config.weights == 'mira': logging.info('tuning TM using mira') cdec.run_tune('mira') else: logging.info('copying tuned weights') os.system("cp "+self.config.workdir+"/"+self.config.weights+" "+self.config.experiment_dir) if self.config.retrain: logging.info('retraining TM') if self.config.decoder == 'moses': moses.run_retrain() # decode input logging.info('decoding') if self.config.decoder == 'moses': moses.run_decode() elif self.config.decoder == 'cdec': cdec.run_decode() if self.config.neg!="": if self.config.decoder == 'moses': moses.run_decode(True) elif self.config.decoder == 'cdec': cdec.run_decode(True) if self.config.nlg: logging.info('running BLEU') BLEUScorer(self.config).run() pass else: # functionalize logging.info('functionalizing') Functionalizer(self.config).run() if self.config.neg!="": Functionalizer(self.config).run(True) # compare answers logging.info('executing queries') if self.config.corpus == 'geo': GeoWorld(self.config).run() elif self.config.corpus == 'spoc': spocShip(self.config).run() if self.config.neg!="": spocShip(self.config).run(True) else: QueryComparer(self.config).run()
# -*- coding: utf-8 -*- from PyQt4.QtGui import QApplication import os import sys from mainWindow import MainWindow from datamodel import DataModel from moses import Moses if __name__ == "__main__": app = QApplication(sys.argv) workdir = os.path.join(os.path.join(os.path.expanduser('~'), 'mosesgui')) if not os.path.exists(workdir): os.makedirs(workdir) dm = DataModel(filename=os.path.join(workdir, "models.sqlite")) moses = Moses() if not moses.detect(): sys.exit(1) MainWindow = MainWindow(dm=dm, moses=moses, workdir=workdir) MainWindow.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())