Я использую инвертированный индекс для нескольких файлов PDF.Конечное использование для этих инвертированных индексированных данных состоит в том, чтобы использовать их как часть поисковой утилиты.Я могу создать индекс, но мой вопрос больше касается его эффективности.Для создания инвертированного индекса для файла PDF размером 670 КБ с 71 страницей требуется около 12-13 секунд времени.Поскольку я новичок в Python, я задаюсь вопросом, нормально ли проходит это количество времени.Я использую PyPDF2 для чтения файлов .pdf и nltk для токенизации, нормализации и обработки.Отдельные базовые слова хранятся в словаре следующего формата {term: {docID: [Totalfrequency, [{page1: occurance}, {page2: occurance}, ..., {pageN: occurance}]]}} term --> в каком документе встречается слово, сколько раз, на каких всех страницах встречается этот термин и на каждой из этих страниц.
Ниже приведен снимок моего кода.Любая помощь и предложения будут очень хорошими.Спасибо.
import PyPDF2 as PDFHelper
from nltk.tokenize import word_tokenize as WordHelper
from nltk.stem import PorterStemmer
from wordsegment import load, segment
load()
# foreach PDF file the following code is executed
# extract text from each page
for pageNumber in range(0, pdfReader.numPages):
extractedText = ""
pageObj = pdfReader.getPage(pageNumber)
extractedText += " " + pageObj.extractText()
# tokenize the extracted words
# filter the stop words
# stem the filtered words to get set of unique root words
terms = WordHelper(extractedText)
for term in terms:
for segmentedWord in segment(term):
if segmentedWord not in self.StopWordsList:
rootWord = PorterStemmer().stem(segmentedWord)
# add this rootWord/term in the term vocabulary
if rootWord in self._term_vocabulary:
self._term_vocabulary[rootWord].<AddDocument(docID, pageNumber)>
else:
self._term_vocabulary[rootWord] = <creating the new posting list>