import gradio as gr def sort_doc(in_list: list, steps_in: int, control: int, prev_list: str): control_json={'control':'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ','char':'','leng':62} if isinstance(in_list, str): in_list=in_list.split() #in_list=eval(in_list) #key_cnt=len(in_list) #count unique uni_box=[] for ea in in_list: if not ea in uni_box: uni_box.append(ea) key_cnt=len(uni_box) print(key_cnt) control_char=list(control_json['control']) char_len=len(control_char) if not steps_in: n_cnt=0 nx=key_cnt while True: if nx >= 1: n_cnt+=1 nx = nx/char_len else: steps=n_cnt break if steps_in: steps=steps_in step_cont_box=[] #prev_list=control_val_box json_out={} rev_out={} big_cnt=0 cnt=0 go=True if prev_list: print("LOD") last_key=list(prev_list.keys())[-1] print(last_key) for ea_dig in last_key: ea_dig=control_json['control'].index(ea_dig) ea_dig=int(ea_dig) print(f'{ea_dig} :: {list(control_json["control"][ea_dig])[0]}') #step_cont_box.append(int(list(control_json["control"][ea_dig])[0])) step_cont_box.append(ea_dig) print(step_cont_box) cnt=int(step_cont_box[-1])+1 if not prev_list: print("NOT LOD") for ii in range(steps): print(ii) step_cont_box.append(0) if control: new_step_cont_box=[] control_val_box=[] cont_box_len=len(step_cont_box) control_len=control_json['leng']-control control_char=list(control_json['control'][:control_len]) control_val=list(control_json['control'][control_len:]) val_len=len(control_val) for ea in control_val: control_val_box.append(ea) print(f'CONTROL_VAL_BOX:: {control_val_box}') new_step_cont_box.append(control_json['control'].index(control_val_box[-1])) for iii in step_cont_box: new_step_cont_box.append(iii) step_cont_box=new_step_cont_box pos=len(step_cont_box)-1 if go: for i, ea in enumerate(in_list): if not ea in list(rev_out.keys()): if go: if cnt > char_len-1: #print(step_cont_box) go1=True for ii,ev in enumerate(step_cont_box): if go: if ev >= char_len-1: step_cont_box[ii]=0 if go1==True: step_cont_box[ii-1]=step_cont_box[ii-1]+1 go1=False cnt=1 else: step_cont_box[pos]=cnt cnt+=1 #print(step_cont_box) out_js="" for iii,j in enumerate(step_cont_box): #print(j) out_js = out_js+control_char[j] #if not in_list[i] in list(rev_out.keys()): json_out[out_js]=in_list[i] rev_out[in_list[i]]=out_js big_cnt+=1 if big_cnt==key_cnt: print("DONE") go=False return json_out,rev_out def sort_doc_OG(in_list: list, steps_in: int, control: int, prev_list: str): control_json={'control':'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ','char':'','leng':62} key_cnt=len(in_list) print(key_cnt) #if isinstance(in_list, str): # in_list=eval(in_list) control_char=list(control_json['control']) char_len=len(control_char) if not steps_in: n_cnt=0 nx=key_cnt while True: if nx >= 1: n_cnt+=1 nx = nx/char_len else: steps=n_cnt break if steps_in: steps=steps_in if control: control_len=control_json['leng']-control control_char=list(control_json['control'][:control_len]) control_val=list(control_json['control'][control_len:]) val_len=len(control_val) control_val_box=[] for ea in control_val: control_val_box.append(ea) print(f'CONTROL_VAL_BOX:: {control_val_box}') #prev_list=control_val_box json_out={} big_cnt=0 cnt=0 go=True step_cont_box=[] if prev_list: print("LOD") last_key=list(prev_list.keys())[-1] print(last_key) for ea_dig in last_key: ea_dig=control_json['control'].index(ea_dig) ea_dig=int(ea_dig) print(f'{ea_dig} :: {list(control_json["control"][ea_dig])[0]}') #step_cont_box.append(int(list(control_json["control"][ea_dig])[0])) step_cont_box.append(ea_dig) print(step_cont_box) cnt=int(step_cont_box[-1])+1 if not prev_list: print("NOT LOD") for ii in range(steps): print(ii) step_cont_box.append(0) pos=len(step_cont_box)-1 if go: for i, ea in enumerate(in_list): if go: if cnt > char_len-1: #print(step_cont_box) go1=True for ii,ev in enumerate(step_cont_box): if go: if ev >= char_len-1: step_cont_box[ii]=0 if go1==True: step_cont_box[ii-1]=step_cont_box[ii-1]+1 go1=False cnt=1 else: step_cont_box[pos]=cnt cnt+=1 #print(step_cont_box) out_js="" for iii,j in enumerate(step_cont_box): #print(j) out_js = out_js+control_char[j] json_out[out_js]=in_list[i] big_cnt+=1 if big_cnt==key_cnt: print("DONE") go=False return json_out def find_query(query,sen,nouns): blob_f = TextBlob(query) noun_box={} noun_list=[] sen_box=[] for ea in blob_f.parse().split(" "): n=ea.split("/") if n[1] == "NN": noun_list.append(n[0]) nouns_l=list(nouns.keys()) for nn in nouns_l: for nl in noun_list: if nl in nn: if nl in noun_box: for ea_n in nouns[nn]: noun_box[str(nl)].append(ea_n) else: noun_box[str(nl)]=[] for ea_n in nouns[nn]: noun_box[str(nl)].append(ea_n) for ea in noun_box.values(): for vals in ea: sen_box.append({'sen_num':sen[vals]['sen_num'],'sentence':sen[vals]['sentence']}) return noun_box,sen_box with gr.Blocks() as app: inp = gr.Textbox(label="Paste Text",lines=10, value="['skdflsdj','sd','sdfsdf','sdfsddsfsd','sdfsdfd','df']") with gr.Row(): steps=gr.Slider(label="Steps",minimum=0,maximum=12,step=1,value=0) control=gr.Slider(label="Control",minimum=0,maximum=32,step=1,value=0) prev_doc=gr.File() btn = gr.Button("Load Document") with gr.Row(): query=gr.Textbox(label="Search query") search_btn=gr.Button("Search") out_box=gr.Textbox(label="Results") sen_box=gr.JSON(label="Sentences") with gr.Row(): with gr.Column(scale=2): sen=gr.JSON(label="Sentences") with gr.Column(scale=1): nouns=gr.JSON(label="Nouns") search_btn.click(find_query,[query,sen,nouns],[out_box]) btn.click(sort_doc,[inp,steps,control,prev_doc],[sen,nouns]) app.launch()