Я работаю над кодом, который идентифицирует именованные объекты (NER) в документах PDF. Мой текущий код работает в три этапа. Во-первых, он превращает PDF в текстовую строку. Во-вторых, это токенизирует текст. В-третьих, он классифицирует текст.
Сейчас этот код классифицирует каждый токен (слово) в текстовой строке. Однако я хочу, чтобы программа классифицировала только определенную часть текста. Часть всегда находится между словами "Body"
и "Classification"
(для тех, кто знаком с форматом, я анализирую документы LexisNexis). Мне интересно, есть ли способ заставить программу классифицировать текст только между этими двумя словами? Я прочитал несколько статей по этому вопросу, но мне не удалось найти ответ на мой конкретный c вопрос.
У меня такое ощущение, что мне нужно вставить строку, идентифицирующую указанный c строка между "tokenized_text"
и "classified_text"
строкой, но я не уверен, что. Спасибо за вашу помощь!
#Import Programs for NER
import os
import PyPDF2
import nltk
import pandas
# NER tagger
from nltk.tag import StanfordNERTagger
from nltk.tokenize import word_tokenize
st = StanfordNERTagger('C:\\file_path\\english.all.3class.distsim.crf.ser.gz',
'C:\\file_path\\stanford-ner.jar',
encoding='utf-8')
destDirectory = file_path
#Tagging NERs
for file in os.listdir(destDirectory):
pdf_file = open(destDirectory + '\\' + file, 'rb')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
text = ''
for i in range(0,number_of_pages):
page = read_pdf.getPage(i)
page_content = page.extractText()
text = text+page_content
tokenized_text = word_tokenize(text)
classified_text = st.tag(tokenized_text)
print(classified_text)
Редактировать:
Вот более простой код для работы. Обратите внимание, что эта программа не запустится, если вы не загрузили тег Stanford (St)
и не указали местоположение файла.
#Import Programs for NER
import os
import PyPDF2
import nltk
import pandas
# NER tagger
from nltk.tag import StanfordNERTagger
from nltk.tokenize import word_tokenize
st = StanfordNERTagger('C:\\file_path\\english.all.3class.distsim.crf.ser.gz',
'C:\\file_path\\stanford-ner.jar',
encoding='utf-8')
destDirectory = file_path
#Tagging NERs
for file in os.listdir(destDirectory):
# Insert code here for reading in the PDFs
text = 'Title Example Body This is an example line of text. Classification Language: English'
tokenized_text = word_tokenize(text)
classified_text = st.tag(tokenized_text)
print(classified_text)