Поиск текста по нескольким фразам python - PullRequest
0 голосов
/ 14 марта 2019

В настоящее время я пытаюсь найти в нескольких файлах PDF определенные элементы оборудования. Я разобрался, как разобрать файл pdf в python вместе со списком оборудования. В настоящее время у меня возникли проблемы с реальной функцией поиска. Наилучший способ сделать это онлайн - это токенизировать текст и выполнять поиск по ключевым словам (код ниже), но, к сожалению, некоторые из названий оборудования состоят из нескольких слов, что приводит к тому, что эти имена токенизируются в бессмысленные слова. как «синий» и «испариться», которые встречаются в тексте много раз и, таким образом, насыщают результаты. Единственный способ решить эту проблему - искать только уникальные слова в названиях оборудования и удалять наиболее распространенные, но мне было интересно, было ли более элегантное решение, поскольку даже уникальные слова имеют тенденцию иметь несколько ложных возвратов на документ.

В основном я ищу способ поиска по текстовому файлу фраз таких слов, как "Blue Transmitter 3", без разбора этой фразы на ["Blue", "Transmitter", "3"]

вот что у меня есть

import PyPDF2
import nltk
from nltk import word_tokenize
from nltk.corpus import stopwords
import re

#open up pdf and get text
pdfName = 'example.pdf'
read_pdf = PyPDF2.PdfFileReader(pdfName)
text = ""
for i in range(read_pdf.getNumPages()):
    page = read_pdf.getPage(i)
    text += "Page No - " + str(1+read_pdf.getPageNumber(page)) + "\n"
    page_content = page.extractText()
    text += page_content + "\n"

#tokenize pdf text
tokens = word_tokenize(text)
punctuations = ['(',')',';',':','[',']',',','.']
stop_words = stopwords.words('english')
keywords = [word for word in tokens if not word in stop_words and not word in punctuations]

#take out the endline symbol and join the whole equipment data set into one long string
lines = [line.rstrip('\n') for line in open('equipment.txt')]
totalEquip = " ".join(lines)

tokens = word_tokenize(totalEquip)
trash = ['Black', 'furnace', 'Evaporation', 'Evaporator', '500', 'Chamber', 'A']
searchWords = [word for word in tokens if not word in stop_words and not word in punctuations and not word in trash]

for i in searchWords:
    for word in splitKeys:
        if i.lower() in word.lower():
            print(i)
            print(word + "\n")

Любая помощь или идеи, которые вы могли бы иметь, очень ценится

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...