Skip to content
Snippets Groups Projects
main.py 1.66 KiB
Newer Older
Franck Dary's avatar
Franck Dary committed
#! /usr/bin/env python3

import sys
import random
import Config
from Transition import Transition

################################################################################
def printUsageAndExit() :
  print("USAGE : %s file.conllu"%sys.argv[0], file=sys.stderr)
  exit(1)
################################################################################

################################################################################
def applyTransition(ts, strat, config, name) :
  transition = [trans for trans in ts if trans.name == name][0]
  movement = strat[transition.name]
  transition.apply(config)
  config.moveWordIndex(movement)
################################################################################

################################################################################
if __name__ == "__main__" :
  if len(sys.argv) != 2 :
    printUsageAndExit()

  transitionSet = [Transition(elem) for elem in ["RIGHT", "LEFT", "SHIFT", "REDUCE"]]
  EOS = Transition("EOS")
  strategy = {"RIGHT" : 1, "SHIFT" : 1, "LEFT" : 0, "REDUCE" : 0}

  sentences = Config.readConllu(sys.argv[1])

  debug = True

  for config in sentences :
    config.moveWordIndex(0)
    while config.wordIndex < len(config.lines) - 1 :
      candidates = [trans for trans in transitionSet if trans.appliable(config)]
      candidate = candidates[random.randint(0, 100) % len(candidates)]
      applyTransition(transitionSet, strategy, config, candidate.name)
      if debug :
        print(candidate.name, file=sys.stderr)
        config.printForDebug(sys.stderr)
    EOS.apply(config)
    config.print(sys.stdout)

################################################################################