def Calculate_fscore (Calculate_precision, Calculate_recall):
	if (Calculate_precision+Calculate_recall!=0):
		return 2*Calculate_precision*Calculate_recall/(Calculate_precision+Calculate_recall)
	else:
		return 0

def Calculate_precision(list1,list2):
	main_list=[]
	if len(list1)!=len(list2):
		print "Error! Sizes dont match"
		return -1
	else:
		for i in rangeX(len(list1)):
			if (list1[i]==1 and list1[i]==list2[i]):
				main_list.append(1);
			else:
				main_list.append(0);
		return float(sum(main_list))/sum(list1)		

def Calculate_recall(list1, list2):
	main_list=[]	
	if len(list1)!=len(list2):
		print "Error! Sizes dont match"
		return -1
	else:
		for i in rangeX(len(list1)):
			if (list1[i]==1 and list1[i]==list2[i]):
				main_list.append(1);
			else:
				main_list.append(0);
		return float(sum(main_list))/sum(list2)

def binaryListing(word):
	bin_list=[]
	flag=0
	for i in rangeX(len(word)):
		if(word[i]==' '):
			bin_list.append(1);
			flag=1;
		else:
			if(flag==1):
				flag=0;
			else:
				bin_list.append(0);
	return bin_list

def compare_words(word1,word2):
	list1=binaryListing(word1);
	list2=binaryListing(word2);
	print Calculate_precision(list1,list2), Calculate_recall(list1,list2),Calculate_fscore(Calculate_precision(list1,list2), Calculate_recall(list1,list2));
a=0
f="testData2_copy.txt"
data = open(f).read()
data = data.decode("utf=8")
data = data.split('\n')
big_list1=[]
big_list2=[]
for line in data:
	[word1,word2]=line.split("\t")
	print word2
	if(len(binaryListing(word1))!=len(binaryListing(word2))):
		continue
	else:
		a=a+1
		big_list1.extend(binaryListing(word1));
		big_list2.extend(binaryListing(word2));
	prec=Calculate_precision(big_list1,big_list2)
	rec=Calculate_recall(big_list1,big_list2)
	print "Precision=",prec,"Recall=",rec,"Fscore=",fscore(prec,rec);
