def createDataLine(context, block, leaveout=-1): dataLine = [str(block[0].shotId) + "_" + str(block[0].beatId), str(block[0].shot)] featureClassList = Features.getAllFeatureClasses() context = Features.createBeatList(context, block) for featureClass in featureClassList: feature = featureClass(context, block) dataLine += feature.getNumbers() # activate to generate a human readable featureLine #dataLine.append(feature.getText()) if leaveout >= 0: dataLine.pop(leaveout) return dataLine
def getFeatureNames(leave_out_class=None): """ Returns an array of feature names corresponding to the featureLine. """ names = [] featureClassList = Features.getAllFeatureClasses() context = createContext() dummy_beat = Beat("0_1\tfull_shot\tfalse\tintroduce\tperson§Nobody", context) context = Features.createBeatList(context, [dummy_beat]) Features.initializeContextVars(context) for featureClass in [x for x in featureClassList if x != leave_out_class]: feature = featureClass(context, [dummy_beat]) names += feature.getNames() return names
def getFeatureLine(context, block, shot, lastShotId, leave_out_class=None): """ This function creates a featureLine. This is done by calculating getNumbers() for all Feature-Classes in Features.py and appending the desired class. A featureLine consists of several Numbers and a String at the end for the class. """ line = [] featureClassList = Features.getAllFeatureClasses() context = Features.createBeatList(context, block) # use all features except leave_out_class if given #for featureClass in [x for x in featureClassList if x != leave_out_class]: # use only features which contribute significant information for featureClass in [featureClassList[x] for x in range(len(featureClassList)) if x in [9, 10, 11, 12, 13, 15, 19, 25, 27, 28, 30, 31, 32, 33, 37, 39, 41, 42]]: feature = featureClass(context, block) line += feature.getNumbers() if shot: line.append(SHOT_NAMES[block[0].shot]) else:#is there a cut? line.append(str(lastShotId != block[0].shotId)) return line