def getSegmentationAccuracy(pathArray): dataX = [] dataY = [] j = 0 for path in pathArray: for f in os.listdir(path): j+=1 if f[-5:] != "inkml": continue # print f traceList, symbolsList = gettrace.parseINKMLFile(path + f) segmentIndices = segment.segmentSymbols(traceList) for label, elem in symbolsList: # if label in ['=', 'i', 'j','\\leq', '\\log', '\\sin', '\\cos', '\\lim', '\\geq', '\\righarrow', '\\div']: continue # Correctly classified if elem in segmentIndices: strokes = [traceList[i] for i in elem] pixels = itp.inkml_to_pixels(strokes) chain = list(itertools.chain(*pixels)) chain.append(len(strokes)) dataX.append(chain) dataY.append(label) # cr.display(pixels) print j f = file("segmented_data_18", "w") pickle.dump((dataX, dataY), f)
def makeSpecialSymbol(prev_trace, trace): global svm global labels pixels = itp.inkml_to_pixels([prev_trace, trace]) chain = list(itertools.chain(*pixels)) chain.append(2) probabilities = svm.predict_proba(chain) probMax = np.amax(probabilities) indexOfMax = np.argmax(probabilities) if labels[indexOfMax] in ['x', 'k', '\\geq', 'i', 'j', '='] and probMax > 0.7: return True return False
def recognize(): global svm print request.form['info'] strokes = json.loads(request.form['info']) symbolsIndices = segment.segmentSymbols(strokes) returnstr = "" for elem in symbolsIndices: s = [strokes[i] for i in elem] pixels = inkml_to_pixels.inkml_to_pixels(s) chain = list(itertools.chain(*pixels)) chain.append(len(s)) prediction = svm.predict(chain)[0] returnstr += prediction return returnstr
def getSegmentationAccuracy(pathArray): f = open('svm18px', "r") svm = pickle.load(f) j = 0 total = 0 total_correct = 0 off_by_one = 0 off_by_two = 0 for path in pathArray: for f in os.listdir(path): j+=1 if f[-5:] != "inkml": continue # print f traceList, symbolsList = gettrace.parseINKMLFile(path + f) segmentIndices = segment.segmentSymbols(traceList) correct = 0 for label, elem in symbolsList: # Correctly classified if elem in segmentIndices: strokes = [traceList[i] for i in elem] pixels = itp.inkml_to_pixels(strokes) chain = list(itertools.chain(*pixels)) chain.append(len(strokes)) if svm.predict(chain)[0] == label: correct +=1 if correct == len(symbolsList): total_correct +=1 if correct + 1 >= len(symbolsList): off_by_one +=1 if correct + 2 >= len(symbolsList): off_by_two +=1 # cr.display(pixels) print j print total_correct print off_by_one print off_by_two print float(total_correct)/836 print float(off_by_one)/836 print float(off_by_two)/836
def recognize_hmm(): global hmm_instance strokes = json.loads(request.form['info']) symbolsIndices = segment.segmentSymbols(strokes) returnstr = "" equation = [] for elem in symbolsIndices: s = [strokes[i] for i in elem] pixels = inkml_to_pixels.inkml_to_pixels(s) chain = list(itertools.chain(*pixels)) chain.append(len(s)) equation.append((chain,)) prediction = hmm_instance.compute_best_sequence(equation) for symbol in prediction: returnstr += symbol return returnstr
def getData(pathArray): dataX = [] dataY = [] from time import time start = time() for path in pathArray: for file in os.listdir(path): if file[-5:] != "inkml": continue traceList, symbolsList = gettrace.parseINKMLFile(path + file) for label, indices in symbolsList: strokes = [traceList[elem] for elem in indices] pixels = itp.inkml_to_pixels(strokes) chain = list(itertools.chain(*pixels)) chain.append(len(strokes)) dataX.append(chain) dataY.append(label) # itp.display(pixels) print time()-start return dataX, dataY
def getData(pathArray): data = [] from time import time start = time() for path in pathArray: for file in os.listdir(path): if file[-5:] != "inkml": continue traceList, symbolsList = gettrace.parseINKMLFile(path + file) equationDict = {} for label, indices in symbolsList: strokes = [traceList[elem] for elem in indices] pixels = itp.inkml_to_pixels(strokes) chain = list(itertools.chain(*pixels)) chain.append(len(strokes)) equationDict[indices[0]] = (chain, label) equationList = [] for key in sorted(equationDict): equationList.append(equationDict[key]) data.append(equationList) # itp.display(pixels) print time()-start return data