from collections import Counter from .translation_metric import diff_score import numpy as np def function11111(sources_name, trans , s, methods_name): dict1 = Counter(s) sorted_values = sorted(dict1.values(), reverse=True) # Sort the values sorted_dict = {} for i in sorted_values: for k in dict1.keys(): if dict1[k] == i: sorted_dict[k] = dict1[k] #break sources = list(sorted_dict.keys()) #print(sources) s1 = sources[0] s2 = sources[1] s3 = sources[2] s4 = sources[3] s5 = sources[4] di = {"0": s1, "1": s2, "2": s3, "3": s4, "4": s5,} # print(s1) # print(s2) # print(s3) # print(s4) # print(s5) # print(s6) rm =[] for r in Counter(s).keys(): temp = [i for i in range(len(s)) if s[i] == r] rm.append(temp) #print(rm) resANDmethods_indexes={} fs = list(Counter(s).keys()) for t in range(len(fs)): resANDmethods_indexes.update({fs[t]: rm[t]}) #print(resANDmethods_indexes) a1 = list(sources_name.values()).index(s1) #print(a1) a2 = list(sources_name.values()).index(s2) #print(a2) a3 = list(sources_name.values()).index(s3) #print(a3) a4 = list(sources_name.values()).index(s4) #print(a4) a5 = list(sources_name.values()).index(s5) #print(a5) d1 = diff_score(trans[str(a1)], trans["0"]) #print(d1) d2 = diff_score(trans[str(a2)], trans["0"]) #print(d2) d3 = diff_score(trans[str(a3)], trans["0"]) #print(d3) d4 = diff_score(trans[str(a4)], trans["0"]) #print(d4) d5 = diff_score(trans[str(a5)], trans["0"]) #print(d5) check =[d1, d2, d3, d4, d5] #print(check) a1 = np.array(check) source1 = di[str(a1.argsort()[0])] source1_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source1]] source2 = di[str(a1.argsort()[1])] #print(source2) source2_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source2]] source3 = di[str(a1.argsort()[2])] #print(source3) source3_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source3]] return (source1, source1_methods), (source2, source2_methods), (source3, source3_methods) def function2111(sources_name, trans , s, methods_name): dict1 = Counter(s) sorted_values = sorted(dict1.values(), reverse=True) # Sort the values sorted_dict = {} for i in sorted_values: for k in dict1.keys(): if dict1[k] == i: sorted_dict[k] = dict1[k] #break sources = list(sorted_dict.keys()) #print(sources) s1 = sources[0] s2 = sources[1] s3 = sources[2] s4 = sources[3] di = {"0": s1, "1": s2, "2": s3, "3": s4} # print(s1) # print(s2) # print(s3) # print(s4) # print(s5) rm =[] for r in Counter(s).keys(): temp = [i for i in range(len(s)) if s[i] == r] rm.append(temp) #print(rm) resANDmethods_indexes={} fs = list(Counter(s).keys()) for t in range(len(fs)): resANDmethods_indexes.update({fs[t]: rm[t]}) #print(resANDmethods_indexes) a2 = list(sources_name.values()).index(s2) #print(a2) a3 = list(sources_name.values()).index(s3) #print(a3) a4 = list(sources_name.values()).index(s4) #print(a4) d2 = diff_score(trans[str(a2)], trans["0"]) #print(d2) d3 = diff_score(trans[str(a3)], trans["0"]) #print(d3) d4 = diff_score(trans[str(a4)], trans["0"]) #print(d4) check =[d2, d3, d4] #print(check) a1 = np.array(check) source1 = s1 source1_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source1]] source2 = di[str(a1.argsort()[0]+1)] source2_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source2]] source3 = di[str(a1.argsort()[1]+1)] source3_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source3]] return (source1, source1_methods), (source2, source2_methods), (source3, source3_methods) def function221(sources_name, trans , s, methods_name): dict1 = Counter(s) sorted_values = sorted(dict1.values(), reverse=True) # Sort the values sorted_dict = {} for i in sorted_values: for k in dict1.keys(): if dict1[k] == i: sorted_dict[k] = dict1[k] #break sources = list(sorted_dict.keys()) #print(sources) s1 = sources[0] s2 = sources[1] s3 = sources[2] di = {"0": s1, "1": s2, "2": s3} # print(s1) # print(s2) # print(s3) # print(s4) rm =[] for r in Counter(s).keys(): temp = [i for i in range(len(s)) if s[i] == r] rm.append(temp) #print(rm) resANDmethods_indexes={} fs = list(Counter(s).keys()) for t in range(len(fs)): resANDmethods_indexes.update({fs[t]: rm[t]}) #print(resANDmethods_indexes) a1 = list(sources_name.values()).index(s1) #print(a1) a2 = list(sources_name.values()).index(s2) #print(a2) a3 = list(sources_name.values()).index(s3) #print(a3) d1 = diff_score(trans[str(a1)], trans["0"]) #print(d1) d2 = diff_score(trans[str(a2)], trans["0"]) #print(d2) check =[d1, d2] #print(check) a1 = np.array(check) source1 = di[str(a1.argsort()[0])] #source1 = di[str(check1.index(temp1[0]))] source1_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source1]] source2 = di[str(a1.argsort()[1])] source2_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source2]] source3 = s3 source3_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source3]] return (source1, source1_methods), (source2, source2_methods), (source3, source3_methods) def function311(sources_name, trans, s, methods_name): dict1 = Counter(s) sorted_values = sorted(dict1.values(), reverse=True) # Sort the values sorted_dict = {} for i in sorted_values: for k in dict1.keys(): if dict1[k] == i: sorted_dict[k] = dict1[k] #break sources = list(sorted_dict.keys()) #print(sources) s1 = sources[0] s2 = sources[1] s3 = sources[2] di = {"0": s1, "1": s2, "2": s3} # print(s1) # print(s2) # print(s3) rm =[] for r in Counter(s).keys(): temp = [i for i in range(len(s)) if s[i] == r] rm.append(temp) #print(rm) resANDmethods_indexes={} fs = list(Counter(s).keys()) for t in range(len(fs)): resANDmethods_indexes.update({fs[t]: rm[t]}) #print(resANDmethods_indexes) a2 = list(sources_name.values()).index(s2) #print(a2) a3 = list(sources_name.values()).index(s3) #print(a3) d2 = diff_score(trans[str(a2)], trans["0"]) #print(d2) d3 = diff_score(trans[str(a3)], trans["0"]) #print(d3) check =[d2, d3] #print(check) a1 = np.array(check) #source1 = di[str(a1.argsort()[0])] #temp = sorted(check) source1 = s1 source1_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source1]] source2 = di[str(a1.argsort()[0]+1)] #source2 = di[str(check.index(temp[0])+1)] source2_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source2]] source3 = di[str(a1.argsort()[1]+1)] #source3 = di[str(check.index(temp[1])+1)] source3_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source3]] return (source1, source1_methods), (source2, source2_methods), (source3, source3_methods) def function41(sources_name, trans , s, methods_name): dict1 = Counter(s) sorted_values = sorted(dict1.values(), reverse=True) # Sort the values sorted_dict = {} for i in sorted_values: for k in dict1.keys(): if dict1[k] == i: sorted_dict[k] = dict1[k] #break sources = list(sorted_dict.keys()) #print(sources) s1 = sources[0] s2 = sources[1] di = {"0": s1, "1": s2} #print(s1) #print(s2) rm =[] for r in Counter(s).keys(): temp = [i for i in range(len(s)) if s[i] == r] rm.append(temp) #print(rm) resANDmethods_indexes={} fs = list(Counter(s).keys()) for t in range(len(fs)): resANDmethods_indexes.update({fs[t]: rm[t]}) #print(resANDmethods_indexes) source1 = s1 source1_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source1]] source2 = s2 source2_methods = [methods_name[str(i)] for i in resANDmethods_indexes[source2]] source3 = "" source3_methods = "" return (source1, source1_methods), (source2, source2_methods), (source3, source3_methods) def function5(sources_name, trans , s, methods_name): s1 = list(Counter(s).keys())[0] #print(s1) source1 = s1 source1_methods = list(methods_name.values()) source2 = "" source2_methods = "" source3 = "" source3_methods = "" return (source1, source1_methods), (source2, source2_methods), (source3, source3_methods) def selection_source(S, sources_name, trans, methods_name ): s = [] for string in S: a = string.replace(" ", "GOOGLE") s.append(a) seq = list(Counter(s).values()) seq.sort(reverse = True) #print(seq) if seq == [1, 1, 1, 1, 1]: sources1ANDmethods1, sources2ANDmethods2, sources3ANDmethods3 = function11111(sources_name, trans, s, methods_name) return sources1ANDmethods1, sources2ANDmethods2, sources3ANDmethods3 if seq == [2, 1, 1, 1]: sources1ANDmethods1, sources2ANDmethods2, sources3ANDmethods3 = function2111(sources_name, trans, s, methods_name) return sources1ANDmethods1, sources2ANDmethods2, sources3ANDmethods3 if seq == [2, 2, 1]: sources1ANDmethods1, sources2ANDmethods2, sources3ANDmethods3 = function221(sources_name, trans, s, methods_name) return sources1ANDmethods1, sources2ANDmethods2, sources3ANDmethods3 if seq == [3, 1, 1]: sources1ANDmethods1, sources2ANDmethods2, sources3ANDmethods3 = function311(sources_name, trans, s, methods_name) return sources1ANDmethods1, sources2ANDmethods2, sources3ANDmethods3 if seq == [4, 1] or seq == [3, 2]: sources1ANDmethods1, sources2ANDmethods2, sources3ANDmethods3 = function41(sources_name, trans, s, methods_name) return sources1ANDmethods1, sources2ANDmethods2, sources3ANDmethods3 if seq == [5]: sources1ANDmethods1, sources2ANDmethods2, sources3ANDmethods3 = function5(sources_name, trans, s, methods_name) return sources1ANDmethods1, sources2ANDmethods2, sources3ANDmethods3 def selection_source_transliteration(sources_name, O, priority_list): seq = list(Counter(O).values()) seq.sort(reverse = True) #print(seq) check=[] temp="y" for i in range(len(seq)-1): if seq[0]>seq[i+1]: check.append(i) #print(check) if len(check)==(len(seq)-1): temp = "yes" #print("strating", temp) if temp=="yes": #print(" in if") (o1, s1), (o2, s2) = two_sources_two_outputs(sources_name, O) output1 = o1 source1 = s1 #print(output1, source1) if len(seq)==2: output2 = o2 source2 = s2 #print("1", output2, source2) else: temp1="y" check1=[] for i in range(len(seq)-2): if seq[1]>seq[i+2]: check.append(i) #print(check1) if len(check1)==(len(seq)-2): temp1 = "yes" if temp1=="yes": output2 = o2 source2 = s2 #print("2", output2, source2) else: for i in priority_list: temp_source="test" if i not in source1: temp_source = i break #print(temp_source) if temp_source=="test": output2 = o2 source2 = s2 else: if temp_source != priority_list[1]: output2= O[priority_list.index(temp_source)] source2=temp_source #print("3", output2, source2) else: output2= O[priority_list.index(priority_list[1])] source2=priority_list[1] #print("4", output2, source2) else: #print("in else") (o1, s1), (o2, s2) = two_sources_two_outputs(sources_name, O) #print(o1, s1) #print(o2, s2) if priority_list[0] in s1: #print("1") output1= o1 source1= s1 #print(output1, source1) elif priority_list[0] in s2: #print("2") output1= o2 source1= s2 print(output1, source1) else: #print("3") output1=O[0] source1= priority_list[0] #print(output1, source1) temp_source = "test" for i in priority_list: #print(i) if i not in source1: temp_source = i break #print(temp_source) if temp_source=="test": output2 = o2 source2 = s2 else: if temp_source != priority_list[1]: output2= O[priority_list.index(temp_source)] source2=temp_source #print("4", output2, source2) else: output2= O[priority_list.index(priority_list[1])] source2=priority_list[1] #print("5", output2, source2) return(output1, source1), (output2, source2) def two_sources_two_outputs(sources_name, O): dict1 = Counter(O) #print(dict1) sorted_values = sorted(dict1.values(), reverse=True) # Sort the values sorted_dict = {} for i in sorted_values: for k in dict1.keys(): if dict1[k] == i: sorted_dict[k] = dict1[k] sources = list(sorted_dict.keys()) #print(sources) rm =[] for r in Counter(O).keys(): temp = [i for i in range(len(O)) if O[i] == r] rm.append(temp) #print(rm) resANDmethods_indexes={} fs = list(Counter(O).keys()) for t in range(len(fs)): resANDmethods_indexes.update({fs[t]: rm[t]}) #print(resANDmethods_indexes) out1 = sources[0] source1 = [sources_name[str(i)] for i in resANDmethods_indexes[out1]] if len(sources)==1: return (out1, source1), ("", "") else: out2 = sources[1] source2 = [sources_name[str(i)] for i in resANDmethods_indexes[out2]] return (out1, source1), (out2, source2)