Beispiel #1
0
   def gen(self, args):
      genFeats = featureManager.loadJson(config.getGenInFeatFilename(args))
      genFeat = genFeats[0]
      scoreName = genFeat['name']
      scoreFeats = genFeat['scoreFeats']
      #wrap genFeats in [] to match data structure in train
      lines = self.formatLineDirect([genFeat]) 
      #logging.printDebug(lines)
      allLines = map(lambda l: "0 " + l, lines)
      #logging.printDebug(allLines)

      #TODO: collect filenames

      SVMGenInputFilename = self.getGenInputFilename(args)

      with open(SVMGenInputFilename, 'w') as f:
         f.writelines(map(lambda x:x+"\n", allLines))

      for featName in config.perfFeatsList:
         cmd = [self.genBinPath]
         cmd.append(SVMGenInputFilename)
         singleModelFilename= self.getSingleModelFilename(args, featName)
         cmd.append(singleModelFilename)
         perfFeatFilename= self.getGenOutputFilename(args, featName)
         cmd.append(perfFeatFilename)

         #logging.printDebug(" ".join(cmd))
         subprocess.call(" ".join(cmd), shell=True)

         #TODO: read all perfFeatFilename, transform to dict and return 


      perfFeats = {}
      for featName in config.perfFeatsList:
         #TODO: put all filename definition in one place
         #perfFeatFilename= self.getGenOutputFilename(args, featName)
         with open(perfFeatFilename, 'r') as f:
             lines = f.readlines()
         #dequantize
         q = quantizer.getQuantizerObj(self.getQuantizeFilename(args, featName))
         realVals= q.dequantize(lines)
         #feat = map(float, lines)
         perfFeats[featName]=realVals

      #logging.printDebug(perfFeats)
      return featureManager.formatFeatFile(scoreName, {}, perfFeats)
Beispiel #2
0
    def gen(self, args):
        genFeats = featureManager.loadJson(config.getGenInFeatFilename(args))
        genFeat = genFeats[0]
        scoreName = genFeat['name']
        scoreFeats = genFeat['scoreFeats']
        #wrap genFeats in [] to match data structure in train
        lines = self.formatLineDirect([genFeat])
        #logging.printDebug(lines)
        allLines = map(lambda l: "0 " + l, lines)
        #logging.printDebug(allLines)

        #TODO: collect filenames

        SVMGenInputFilename = self.getGenInputFilename(args)

        with open(SVMGenInputFilename, 'w') as f:
            f.writelines(map(lambda x: x + "\n", allLines))

        for featName in config.perfFeatsList:
            cmd = [self.genBinPath]
            cmd.append(SVMGenInputFilename)
            singleModelFilename = self.getSingleModelFilename(args, featName)
            cmd.append(singleModelFilename)
            perfFeatFilename = self.getGenOutputFilename(args, featName)
            cmd.append(perfFeatFilename)

            #logging.printDebug(" ".join(cmd))
            subprocess.call(" ".join(cmd), shell=True)

            #TODO: read all perfFeatFilename, transform to dict and return

        perfFeats = {}
        for featName in config.perfFeatsList:
            #TODO: put all filename definition in one place
            #perfFeatFilename= self.getGenOutputFilename(args, featName)
            with open(perfFeatFilename, 'r') as f:
                lines = f.readlines()
            #dequantize
            q = quantizer.getQuantizerObj(
                self.getQuantizeFilename(args, featName))
            realVals = q.dequantize(lines)
            #feat = map(float, lines)
            perfFeats[featName] = realVals

        #logging.printDebug(perfFeats)
        return featureManager.formatFeatFile(scoreName, {}, perfFeats)
Beispiel #3
0
    def train(self, args):
        #ex filenames:
        # trainFeat.json -> [quantizer] -> <perfFeatName>.train.dat
        #                       |                                 |
        #                       +->  <perfFeatName>.quant         |
        # +-------------------------------------------------------+
        # +-> [svm^hmm] -> <perfFeatName>.model.bin

        trainFeats = featureManager.loadJson(
            config.getTrainInFeatFilename(args))
        perfFeats = collectPerfFeats(trainFeats)
        #logging.printDebug(perfFeats)
        #for each perfFeature, a svmFeatFilename (quantized feat for svm^hmm)
        #and singleModelFilename (model file for svm^hmm) will be saved
        #scoreFeatLines = self.formatLine(scoreFeats)
        scoreFeatLines = self.formatLineDirect(trainFeats)
        for pkey, pval in perfFeats.items():
            allLines = [("# " + pkey)]
            #TODO:quantize pval
            q = quantizer.getQuantizerObj(self.getQuantizeFilename(args, pkey))
            quantizedVal = q.quantize(pval)
            lines = zip(map(str, quantizedVal), scoreFeatLines)
            #logging.printDebug(lines)
            allLines = map(lambda l: " ".join(l), lines)
            #logging.printDebug(allLines)

            svmFeatFilename = self.getTrainInputFilename(args, pkey)
            with open(svmFeatFilename, 'w') as f:
                f.writelines(map(lambda x: x + "\n", allLines))

            cmd = [self.trainBinPath]
            if (config.svmhmm_c != None):
                cmd.append("-c " + str(config.svmhmm_c))
            else:
                cmd.append("-c 0.01")
            cmd.append(svmFeatFilename)
            singleModelFilename = self.getSingleModelFilename(args, pkey)
            cmd.append(singleModelFilename)

            #logging.printDebug(" ".join(cmd))
            subprocess.call(" ".join(cmd), shell=True)
Beispiel #4
0
   def train(self, args):
      #ex filenames:
      # trainFeat.json -> [quantizer] -> <perfFeatName>.train.dat 
      #                       |                                 |
      #                       +->  <perfFeatName>.quant         |
      # +-------------------------------------------------------+
      # +-> [svm^hmm] -> <perfFeatName>.model.bin

      trainFeats = featureManager.loadJson(config.getTrainInFeatFilename(args))
      perfFeats = collectPerfFeats(trainFeats)
      #logging.printDebug(perfFeats)
      #for each perfFeature, a svmFeatFilename (quantized feat for svm^hmm)
      #and singleModelFilename (model file for svm^hmm) will be saved
      #scoreFeatLines = self.formatLine(scoreFeats) 
      scoreFeatLines = self.formatLineDirect(trainFeats) 
      for pkey, pval in perfFeats.items():
         allLines = [("# " + pkey)]
         #TODO:quantize pval
         q = quantizer.getQuantizerObj(self.getQuantizeFilename(args, pkey))
         quantizedVal = q.quantize(pval)
         lines = zip(map(str, quantizedVal), scoreFeatLines) 
         #logging.printDebug(lines)
         allLines = map(lambda l:" ".join(l), lines)
         #logging.printDebug(allLines)

         svmFeatFilename = self.getTrainInputFilename(args, pkey)
         with open(svmFeatFilename, 'w') as f:
            f.writelines(map(lambda x:x+"\n", allLines))

         cmd = [self.trainBinPath]
         if (config.svmhmm_c != None):
             cmd.append("-c " + str(config.svmhmm_c))
         else:
             cmd.append("-c 0.01")
         cmd.append(svmFeatFilename)
         singleModelFilename = self.getSingleModelFilename(args,pkey)
         cmd.append(singleModelFilename)

         #logging.printDebug(" ".join(cmd))
         subprocess.call(" ".join(cmd), shell=True)