Example #1
0
    def onTrans(self, event):
        self.list.DeleteAllItems()
        varList = []
        varList.append(self.srcmel)
        print type(varList[random.randrange(len(varList))])
        for i in range(100):
            varList.append(lv.supermorph(varList[random.randrange(len(varList))], 10))
        print "done making vars"
        
        pickle.dump(varList, open("pick", "w+"))
        
        arffhead = open("arff.txt").read()
        arffList = []
        arffList.append(arffhead)
        for i in range(len(varList)):
            if i % 100 == 0:
                print i
            feat = features.vect(features.phraseToScore(varList[i]))
            for j in feat:
                arffList.append(str(j) + ", ")
            arffList.append("neg \n")
        print "enough things in arfflist", len(arffList) == 7*len(varList)+1
        
        arffString = "".join(arffList)
        print "done calculating features"
        print arffString
        arffFile = open(self.concept + "/" + "test.arff", "w+")
        arffFile.write(arffString)
        arffFile.close()
        print "done making testfile"
#        return
#        varList = pickle.load(open("pick"))
        subprocess.call(["java","-classpath", ".:weka.jar", "Trainer", self.concept], stdout=open(self.concept+"/res.txt", "w+"))    
        
        res = open(self.concept + "/res.txt").read().split("\n")
        resvals = [float(i) for i in res[0:len(res)-1]]
        if resvals[len(resvals)-1] == "":
            resvals.pop()
        dists = [lv.levd(self.srcmel.n, i.n)+lv.levd(self.srcmel.t, i.t) for i in varList]
        sortpair = [(resvals[i], dists[i], varList[i]) for i in range(len(varList))]
        print "optlist made"
        def classComp0(x, y):
            if x[0]-y[0] > 0:
                return 1
            if x[0]-y[0] < 0:
                return -1
            if x[0]-y[0] == 0:
                return 0
        
        def classComp1(x, y):
            return x[1]-y[1]
        
        sortpair.sort(classComp0)
        
        percentage = ((float(self.cbox2.GetValue().split("%")[0]) / 2) + 50) / 100
        maxv = percentage + .025
        minv = percentage - .025
        
        mini = -1
        maxi = -1
        for i in range(len(sortpair)):
            if mini < 0 and sortpair[i][0] > minv:
                mini = i
            if maxi < 0 and sortpair[i][0] > maxv:
                maxi = i
            print mini, maxi , "mini maxi", sortpair[i][0], minv, maxv
        
        print mini, maxi , "mini maxi final"        
        
        crange = sortpair[mini:maxi]
        if len(crange) == 0:
            crange = sortpair[int(minv*100):int(maxv*100)]
        crange.sort(classComp1)
        
        numchoice = int(self.cbox3.GetValue())
        print len(crange), 'crange'
        print numchoice, "numchoice"
        self.finalvars = crange[0:numchoice]
        print "best choices selected"
        print len(self.finalvars), "finvars"
        for i in range(len(self.finalvars)):
            print i, "blagahba"
            self.list.InsertStringItem(i, self.concept+self.cbox2.GetValue()+str(i))