From 25e8bd5c6b8e983dcbc4f24704b94225fe1e666c Mon Sep 17 00:00:00 2001 From: Alexis Nasr <alexis.nasr@lif.univ-mrs.fr> Date: Wed, 14 Oct 2020 09:59:28 +0200 Subject: [PATCH] code refactoring --- src/Dicos.py | 46 +++++++++++++++++++++++++++------------------- src/FeatModel.py | 8 ++++---- src/Moves.py | 2 -- src/Word.py | 6 +++--- src/mcf2cff.py | 2 +- src/tbp_decode.py | 2 +- 6 files changed, 36 insertions(+), 30 deletions(-) diff --git a/src/Dicos.py b/src/Dicos.py index ca0a72a..a84cab7 100644 --- a/src/Dicos.py +++ b/src/Dicos.py @@ -1,28 +1,36 @@ from Dico import Dico class Dicos: - def __init__(self, mcd=False, fileName=False, verbose=False): + def __init__(self, mcd=False, fileName=False): self.content = {} if mcd : - for index in range(mcd.getNbCol()): - if(mcd.getColStatus(index) == 'KEEP') and (mcd.getColType(index) == 'SYM') : - dico = self.addDico(mcd.getColName(index)) - dico.add('NULL') - dico.add('ROOT') + self.initializeWithMcd(mcd) if fileName : - try: - dicoFile = open(fileName, encoding='utf-8') - except IOError: - print(fileName, 'does not exist') - exit(1) - for ligne in dicoFile: - if ligne[0] == '#' and ligne[1] == '#' : - currentDicoName = ligne[2:-1] - currentDico = self.getDico(currentDicoName) - else: - symbol = ligne[:-1] - currentDico.add(symbol) - dicoFile.close() + self.initializeWithDicoFile(fileName) + + def initializeWithMcd(self, mcd): + for index in range(mcd.getNbCol()): + if(mcd.getColStatus(index) == 'KEEP') and (mcd.getColType(index) == 'SYM') : + dico = self.addDico(mcd.getColName(index)) + dico.add('NULL') + dico.add('ROOT') + + def initializeWithDicoFile(self, fileName): + try: + dicoFile = open(fileName, encoding='utf-8') + except IOError: + print(fileName, 'does not exist') + exit(1) + for ligne in dicoFile: + if ligne[0] == '#' and ligne[1] == '#' : + currentDicoName = ligne[2:-1] + # currentDico = self.getDico(currentDicoName) + currentDico = self.addDico(currentDicoName) + else: + symbol = ligne[:-1] + currentDico.add(symbol) + dicoFile.close() + def populateFromMcfFile(self, mcfFilename, mcd, verbose=False): try: diff --git a/src/FeatModel.py b/src/FeatModel.py index 92128c0..cbae8f9 100644 --- a/src/FeatModel.py +++ b/src/FeatModel.py @@ -48,16 +48,16 @@ class FeatModel: def getFeatPosition(self, featIndex): return self.featArray[featIndex][1] - def getFeatWordFeature(self, featIndex): + def getFeatLabel(self, featIndex): return self.featArray[featIndex][2] def buildInputVector(self, featVec, dicos): inputVector = np.zeros(self.inputVectorSize, dtype="int32") origin = 0 for i in range(self.getNbFeat()): - featureName = self.getFeatWordFeature(i) - size = dicos.getDico(featureName).getSize() - position = dicos.getCode(featureName, featVec[i]) + label = self.getFeatLabel(i) + size = dicos.getDico(label).getSize() + position = dicos.getCode(label, featVec[i]) #print('featureName = ', featureName, 'value =', featVec[i], 'size =', size, 'position =', position, 'origin =', origin) inputVector[origin + position] = 1 origin += size diff --git a/src/Moves.py b/src/Moves.py index 973a611..33e2514 100644 --- a/src/Moves.py +++ b/src/Moves.py @@ -1,8 +1,6 @@ import numpy as np class Moves: - nb = 0 - def __init__(self, dicos): self.dicoLabels = dicos.getDico('LABEL') if not self.dicoLabels : diff --git a/src/Word.py b/src/Word.py index 3ca62ac..060fd8c 100644 --- a/src/Word.py +++ b/src/Word.py @@ -1,8 +1,8 @@ class Word: def __init__(self): - self.featDic = {} - self.leftDaughters = [] - self.rightDaughters = [] + self.featDic = {} # dictionnaire dans lequel sont stockés les word features + self.leftDaughters = [] # liste des indices des dépendants gauches + self.rightDaughters = [] # liste des indices des dépendants droits def getFeat(self, featName): if(not featName in self.featDic): diff --git a/src/mcf2cff.py b/src/mcf2cff.py index 96706ab..e4d4cc7 100644 --- a/src/mcf2cff.py +++ b/src/mcf2cff.py @@ -80,7 +80,7 @@ print('reading mcd from file :', mcdFileName) mcd = Mcd(mcdFileName) print('reading dicos from file :', dicosFileName) -dicos = Dicos(mcd = mcd, fileName = dicosFileName, verbose=False) +dicos = Dicos(fileName = dicosFileName) #dicos.populateFromMcfFile(mcfFileName, mcd, verbose=False) #print('saving dicos in file :', dicosFileName) diff --git a/src/tbp_decode.py b/src/tbp_decode.py index 29c1a66..fe4c748 100644 --- a/src/tbp_decode.py +++ b/src/tbp_decode.py @@ -43,7 +43,7 @@ sys.stderr.write('\n') mcd = Mcd(mcd_file) sys.stderr.write('loading dicos\n') -dicos = Dicos(mcd = mcd, fileName=dicos_file, verbose=False) +dicos = Dicos(fileName=dicos_file, verbose=False) moves = Moves(dicos) -- GitLab