簡體   English   中英

Python 2.7:持續搜索和索引

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM