#!/usr/bin/python
#encoding:utf8

import argparse

'''
Tworzy statystyki domapsowania lematowego dla wskazanych wynikow
Sprawdza ile z podanych rzutowan PWN - SUMO:
 * zgadza sie lematowo
 * prawie zadza sie lematowo
 * nie zgadza sie lematowo
'''

def make_str_pwn_sumo_dict(in_file):
	str_dict = dict()
	with open(in_file, 'rt') as fin:
		for line in fin:
			line = line.strip()
			spl_line = line.split(';')
		
			ang_lemma = spl_line[4].split('.')[0].strip().lower()
			sumo_lemma = spl_line[8].strip().lower()
			pwn_sumo_rel = spl_line[-1].strip().lower()

			str_key = '%s;%s' % (ang_lemma, sumo_lemma)
			str_dict[str_key] = pwn_sumo_rel
	return str_dict

def make_rel_stat(str_dict):
	rel_out = dict()
	for str_key, pwn_sumo_rel in str_dict.iteritems():
		ang_lemma, sumo_lemma = str_key.split(';')

		if not rel_out.has_key(pwn_sumo_rel):
			rel_out[pwn_sumo_rel] = [0, 0, 0]
	
		if ang_lemma == sumo_lemma:
			rel_out[pwn_sumo_rel][0] += 1
		elif ang_lemma.find(sumo_lemma) != -1 or sumo_lemma.find(ang_lemma) != -1:
			rel_out[pwn_sumo_rel][1] += 1
		else:
			rel_out[pwn_sumo_rel][2] += 1
	return rel_out

def show_rel_stat(rel_out):
	for pwn_sumo_rel, lemmas_count in rel_out.iteritems():
		print ''
		print ' ### %s (%d)' % (pwn_sumo_rel, sum(lemmas_count))
		print '   > same lemmas     :', lemmas_count[0]
		print '   > partial lemmas  :', lemmas_count[1]
		print '   > different lemmas:', lemmas_count[2]

def go(args = None):
	argp = argparse.ArgumentParser(
		description = \
		'Tworzy statystyki domapsowania lematowego dla wskazanych wynikow'
		' Sprawdza ile z podanych rzutowan PWN - SUMO:  zgadza sie lematowo,'
		' prawie zadza sie lematowo, nie zgadza sie lematowo')
	argp.add_argument('mapping_result_file',
		help='plik csv z wynikami rzutowania plWN -> SUMO')
	argv = argp.parse_args(args)
	
	str_dict = make_str_pwn_sumo_dict(argv.mapping_result_file)
	rel_out = make_rel_stat(str_dict)
	show_rel_stat(rel_out)

if __name__ == '__main__':
	go()
