基於Python檢索系統(4)最終版
阿新 • • 發佈:2019-01-28
from tkinter import * import jieba import jieba.analyse #b1函式為 全部新聞顯示頁面 #b2函式為 檢索頁面 檢索成功後,跳轉另外一個頁面 def b1(): #全部新聞顯示頁面 #記錄檔案中有多少行標題 記錄在count中 count=0 for line in open("jia.txt","r",encoding='utf-8'): count=count+1 #新建字典title_dict,鍵對應(1-5294)的數字,值是對應的新聞標題 title_dict={} f=open("jia.txt","r",encoding='utf-8') i=1 #將文字的每行標題存入字典 for line in open("jia.txt","r",encoding='utf-8'): #新增一個刪除字串末尾/n的操作 title_dict[i]=line i=i+1 # print(line) #將字典title_dict中的值分別進行分詞操作 seg_list={} tags={} #將分詞存入tags字典,鍵為1-5294,值為對應的分片語成的列表 for j in range(1,count+1): #搜尋引擎模式 seg_list[j] =jieba.cut_for_search(title_dict.get(j)) #精確模式 #seg_list[j]=jieba.cut(title_dict.get(j),cut_all=True) tags[j]=jieba.analyse.extract_tags(title_dict.get(j), topK=40) # print(tags) #將分詞後的結果存入詞項字典 word_dict={} for k in range(1,count+1): for z in range(0,int(len(tags.get(k))-1)): #字典中每個值中,元素的個數 word_dict.setdefault(tags.get(k)[z]) if(word_dict.get(tags.get(k)[z])==None): word_dict[tags.get(k)[z]]=[] word_dict[tags.get(k)[z]].append(k) else: word_dict[tags.get(k)[z]].append(k) #gui部分 root=Tk() root.title("上海理工大學新聞檢索") root.geometry('800x500+200+100') sb=Scrollbar(root) sb.pack(side=RIGHT,fill=Y) #建立一個空列表 theLB=Listbox(root,width=100,height=80,yscrollcommand=sb.set) count=0 for line in open("jia.txt","r",encoding='utf-8'): count=count+1 for a in range(1,count+1): theLB.insert(a,title_dict.get(a)) theLB.pack(padx=20,pady=20,fill=BOTH) sb.config(command=theLB.yview) mainloop() def b2(): def compare(): count=0 for line in open("jia.txt","r",encoding='utf-8'): count=count+1 title_dict={} f=open("jia.txt","r",encoding='utf-8') i=1 for line in open("jia.txt","r",encoding='utf-8'): title_dict[i]=line i=i+1 seg_list={} tags={} for j in range(1,count+1): seg_list[j] =jieba.cut_for_search(title_dict.get(j)) tags[j]=jieba.analyse.extract_tags(title_dict.get(j), topK=40) word_dict={} for k in range(1,count+1): for z in range(0,int(len(tags.get(k))-1)): word_dict.setdefault(tags.get(k)[z]) if(word_dict.get(tags.get(k)[z])==None): word_dict[tags.get(k)[z]]=[] word_dict[tags.get(k)[z]].append(k) else: word_dict[tags.get(k)[z]].append(k) user_input=a.get() for i in range(1,len(word_dict.keys())): if user_input==list(word_dict.keys())[i-1]: print("標題匹配成功\n") root=Tk() root.title("上海理工大學新聞檢索") root.geometry('800x500+200+100') sb=Scrollbar(root) sb.pack(side=RIGHT,fill=Y) theLB=Listbox(root,width=100,height=80,yscrollcommand=sb.set) for k in range(1,len(word_dict[list(word_dict.keys())[i-1]])): theLB.insert(k,title_dict[word_dict[list(word_dict.keys())[i-1]][k]]) theLB.pack(padx=20,pady=20,fill=BOTH) sb.config(command=theLB.yview) mainloop() #print(title_dict[word_dict[list(word_dict.keys())[i-1]][k]]) #print('\n') # word_dict[list(word_dict.keys())[i-1]][k] else: pass root=Tk() root.title("上海理工大學新聞檢索") #a是文字框,用於輸入要檢索的文字,按下回車或者單擊Button按鈕可以接受使用者輸入 a=Entry(root,width=40,validate="focusout",validatecommand=compare) a.pack(side=LEFT,padx=40,pady=60) mainloop() root=Tk() root.title("上海理工大學新聞") #插入一個圖片 photo = PhotoImage(file="logo.gif") Label(root,image=photo).grid(row=0,column=0,rowspan=4,padx=15,pady=10) #標籤的屬性 Label(root,text="歡迎進入本系統",font=("華康少女字型",30),fg="red").grid(row=0,column=1,columnspan=2,padx=10,pady=10) photo1 = PhotoImage(file="a.gif") Label(root,image=photo1).grid(row=1,column=1) a = Button(root,text="檢視所有內容",width=10,command=b1).grid(row=1,column=2,columnspan=2,padx=10,pady=5) photo2 = PhotoImage(file="b.gif") Label(root,image=photo2).grid(row=2,column=1) b = Button(root,text="檢索",width=10,command=b2).grid(row=2,column=2,columnspan=2,padx=10,pady=5) photo3 = PhotoImage(file="c.gif") Label(root,image=photo3).grid(row=3,column=1) c = Button(root,text="退出",width=10,command=root.quit).grid(row=3,column=2,columnspan=2,padx=10,pady=5) mainloop()