#!/usr/bin/python
#Esperanto morphology analysis using DOP
import nltk
from dop import Dop
#detect morpheme boundaries (segmenting)
#bracketing
#labels? yes roots have categories, but larger categories? no

corpus = ['(N (NN libr) o)',
	'(V (VV don) as)',
	'(P al)',
	'(N (VV komenc) (VV ant) o)',
	'(N (NN vort) (NN ord) o)']
corpus = [nltk.Tree(a) for a in corpus]
dop = Dop(corpus)
for a in dop.corpus.values():
	for b in a: print b

def analyse(word):
	if word[-1] == 'o': analyse_r(word, 'N')
	if word[-1] == 'a': analyse_r(word, 'A')
	if word[-1] == 'e': analyse_r(word, 'P')
	if word[-1] == 's': analyse_r(word, 'V')

def analyse_r(word, root):
	for a in dop.parse(word.split('|'), derivation=nltk.Tree('(%s )' % root)): 
			print a[0], a[1]

analyse('vort|libr|o')
analyse('libr|ord|o')
analyse('komenc|as')
analyse('don|ant|o')
