[英]Python 2.7: Persisting search and indexing
我寫了一個小的“搜索引擎”,可以找到目錄及其子目錄中的所有文本文件-我可以在其中編輯代碼,但我認為這不是必需的。
它通過以下格式創建字典來工作:
term_frequency = {'file1' : { 'WORD1' : 1, 'WORD2' : 2, 'WORD3' : 3}}
{'file2' : { 'WORD1' : 1, 'WORD3' : 3, 'WORD4' : 4}}
...continues with all the files it has found...
根據收集的信息,它創建第二個字典,例如:
document_frequency = {'WORD1' : ['file1', 'file2'....],
'WORD2' : ['file1',............],
....every found word..........]}
term_frequency dictionary
的目的是保存一個單詞在該文件中使用了多少次的數據, document_frequency
表示該單詞已使用了多少個文檔。
然后,當給出一個單詞時,它將通過tf/df
計算每個文件的相關性,並以文件的相關性降序列出non-zero
值。
例如:
file1 : 0.75
file2 : 0.5
我知道這是tf-idf的非常簡單的表示形式,但是我是python和編程的新手(兩周),並且對這一切都已經很熟悉了。
很抱歉介紹了這么長時間,但我覺得這與問題有關……這使我正確:
我該如何做一個將這些詞典保存在文件中的索引器,然后使“搜索者”從文件中讀取這些詞典。 因為現在的問題是,每次您想查找一個不同的單詞時,它都必須再次讀取所有文件,並反復制作相同的2個字典。
泡菜(也就是cPickle)庫是您的朋友。 通過使用pickle.dump(),您可以將整個詞典轉換為一個文件,稍后可以通過pickle.load()讀取。
在這種情況下,您可以使用以下方式:
import pickle
termfile = open('terms.pkl', 'wb')
documentfile = open('documents.pkl', 'wb')
pickle.dump(term_frequency, termfile)
pickle.dump(document_frequency, documentfile)
termfile.close()
documentfile.close()
然后像這樣讀回去:
termfile = open('terms.pkl', 'rb')
documentfile = open('documents.pkl', 'rb')
term_frequency = pickle.load(termfile)
document_frequency = pickle.load(documentfile)
termfile.close()
documentfile.close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.