Это время взято для инвертированной индексации в Python? - PullRequest
0 голосов
/ 30 июня 2019

Я использую инвертированный индекс для нескольких файлов 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>
...