Download tools/mosesdecoder/mingw/MosesGUI/engine.py from Quagmire1/wiki-cased: direct link, hf CLI and curl.
- Browser
- Download file 4.31 kB
-
https://huggingface.co/Quagmire1/wiki-cased/resolve/main/tools/mosesdecoder/mingw/MosesGUI/engine.py
- Command line
-
hf download hf://Quagmire1/wiki-cased/tools/mosesdecoder/mingw/MosesGUI/engine.py
-
curl -L -o engine.py https://huggingface.co/Quagmire1/wiki-cased/resolve/main/tools/mosesdecoder/mingw/MosesGUI/engine.py
4.31 kB
| # -*- coding: utf-8 -*- | |
| import ConfigParser | |
| import os | |
| import subprocess | |
| import sys | |
| from PyQt4.QtCore import ( | |
| QObject, | |
| SIGNAL, | |
| ) | |
| from util import doAlert | |
| class Engine(QObject): | |
| def __init__(self, model, moses): | |
| super(Engine, self).__init__() | |
| self.model = model | |
| self.moses = moses | |
| self.check(self.model) | |
| # Determine how many steps by num of modules in the model directory | |
| # (moses + tok/detok + ...) + 1 | |
| modelini = model['path'] + os.sep + 'model' + os.sep + 'model.ini' | |
| if not os.path.exists(modelini): | |
| raise Exception( | |
| "Model ini file doesn't exist, please check model dir %s" | |
| % modelini) | |
| cp = ConfigParser.RawConfigParser() | |
| cp.readfp(open(modelini)) | |
| truemodel = None | |
| try: | |
| truemodel = cp.get("Preprocess", 'Truemodel') | |
| truemodel_path = os.path.join(model['path'], 'model', truemodel) | |
| if not os.path.exists(truemodel_path): | |
| doAlert("Truemodel doesn't exist, ignore %s" % truemodel) | |
| truemodel = None | |
| except: | |
| # doAlert("Truemodel not configured") | |
| truemodel = None | |
| self.cmds = [] | |
| # tok | |
| self.cmds.append( | |
| '"%s" -q -l %s -noxml' | |
| % (self.moses.getTokenizer(), str(model['srclang']).lower())) | |
| if truemodel is not None: | |
| self.cmds.append( | |
| '"%s" -model "%s"' % (self.moses.getTruecase(), truemodel)) | |
| self.cmds.append('"%s" -f moses.ini' % self.moses.getMosesCmd()) | |
| self.cmds.append('"%s"' % self.moses.getDetruecase()) | |
| self.cmds.append( | |
| '"%s" -q -noxml -l %s' | |
| % (self.moses.getDetokenizer(), str(model['trglang']).lower())) | |
| self.process = [] | |
| # doAlert('\n'.join(self.cmds)) | |
| def check(self, model): | |
| model_path_exists = os.path.exists(model['path']) | |
| model_mosesini_exists = os.path.exists(model['mosesini']) | |
| if not model_path_exists or not model_mosesini_exists: | |
| raise Exception( | |
| "Model file doesn't exist, please check model dir %s" | |
| % self.model['path']) | |
| def countSteps(self): | |
| return len(self.cmds) + 1 | |
| def start(self): | |
| # print >> sys.stderr, self.cmds | |
| try: | |
| self.emit(SIGNAL("stepFinished(int)"), 0) | |
| for i, cmd in enumerate(self.cmds): | |
| proc = subprocess.Popen( | |
| cmd, shell=True, stdin=subprocess.PIPE, | |
| stdout=subprocess.PIPE, | |
| cwd=os.path.join(str(self.model['path']), 'model')) | |
| self.process.append(proc) | |
| if not proc.poll() is None: | |
| raise Exception("Failed to start engine!") | |
| proc.stdin.write("dummy\n") | |
| proc.stdin.flush() | |
| if len(proc.stdout.readline().strip()) <= 0: | |
| raise Exception( | |
| "Engine process exited: [%s] in folder [%s]" | |
| % ( | |
| cmd, | |
| os.path.join(str(self.model['path']), 'model'))) | |
| self.emit(SIGNAL("stepFinished(int)"), i + 1) | |
| self.emit(SIGNAL("loaded(bool, QString)"), True, "Model Loaded") | |
| except Exception as e: | |
| self.emit( | |
| SIGNAL("loaded(bool, QString)"), False, | |
| "Failed to load Model: %s" % str(e)) | |
| def stop(self): | |
| for process in self.process: | |
| # doAlert(str(process.pid)) | |
| # print >> sys.stderr, str(process) | |
| process.terminate() | |
| process.wait() | |
| self.process = [] | |
| def translate(self, input): | |
| lastInput = input | |
| try: | |
| for i, proc in enumerate(self.process): | |
| if not proc.poll() is None: | |
| raise Exception("Failed to start engine!") | |
| proc.stdin.write("%s\n" % lastInput) | |
| proc.stdin.flush() | |
| output = proc.stdout.readline().strip() | |
| lastInput = output | |
| return output | |
| except Exception, e: | |
| print >> sys.stderr, "Translate error: %s" % str(e) | |
| return lastInput | |