#!/usr/bin/python
#encoding: utf8
"""
Wyszukuje takie rzutowania w pliku z rzutowaniami, gdzie dla danego 
znaczenia ze Slowosieci istnieje klilka rzutowań na pojęcie/pojęcia
SUMO i rzutowania te posiadają różne typy relacji między tym samym
znaczeniem ze Słowosieci, a tym samym (lub różnymi) pojęciami z SUMO. 

Ma to za zadanie wyszukać teoretycznie błędne rzutowania, które dla
danego znaczenia ze Słowosieci posiadają przypisane różne rzutowania
na pojęcie/pojęcia SUMO za pomocą różnych relacji. Może się zdarzyć,
że dane znaczenie jest zrzutowane na kilka pojęć za pomocą różnych 
relacji. Lub za pomocą różnych relacji na to samo pojęcie.

Wynik przekierowywany jest na standardowe wyjście. 
"""

import argparse
from plumper.tools.filters.file_reader import read_file_as_dict

def multimap(lines):
	reldict = dict()
	for line in lines:
		spl_line = line.strip().split(';')
		irel = spl_line[-1].lower()
		sconcept = spl_line[8]
		if irel == 'r':
			continue
		if not reldict.has_key(sconcept):
			reldict[sconcept] = set()
		reldict[sconcept].add(irel)
	rels_count = 0
	
	for conc, res in reldict.iteritems():
		if len(res) > 1:
			return True
	return False

def main(args=None):
	argp = argparse.ArgumentParser(
		description = 
			'Wypisuje te pary <synset, SUMO>, dla których jest więcej '
			'niż jedno rzutowanie')
	argp.add_argument('mapping_result_file',
		help='plik csv z wynikami rzutowania plWN -> SUMO')
	argv = argp.parse_args(args)

	dict_map = read_file_as_dict(argv.mapping_result_file)
	for relmap, lines in dict_map.iteritems():
		if multimap(lines):
			for line in lines:
				print line

if __name__ == '__main__':
	main()
