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)
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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