从pdf /文本文件中提取特定文本

时间:2019-07-23 07:49:13

标签: python-3.x pdf text web-scraping nltk

我有一个pdf(现在​​已转换为文本文件),我需要从中提取文本。他们正在开会,我需要得到主席的名字,成员和每个会议的提供证据的人的名字。

我一直在玩NLTK,可以标记单词,提取名称,专有名词等,但是问题是我不知道这些人是谁。 我最后列出了一个很棒的名字,但我不知道他们是主席还是成员等。

这是我目前获取名字和姓氏的代码(取自此处另一个问题:

from nltk import word_tokenize, pos_tag, ne_chunk
import nltk
from nltk.corpus import wordnet
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
nltk.download('words')
nltk.download('words')

with open('walking.txt', 'r') as file:
    text = file.read().replace('\n', ' ')

person_list = []
person_names = person_list
def get_human_names(text):
    tokens = nltk.tokenize.word_tokenize(text)
    pos = nltk.pos_tag(tokens)
    sentt = nltk.ne_chunk(pos, binary = False)

    person = []
    name = ""
    for subtree in sentt.subtrees(filter=lambda t: t.label() == 'PERSON'):
        for leaf in subtree.leaves():
            person.append(leaf[0])
        if len(person) > 1: #avoid grabbing lone surnames
            for part in person:
                name += part + ' '
            if name[:-1] not in person_list:
                person_list.append(name[:-1])
            name = ''
        person = []
#     print (person_list)

names = get_human_names(text)
for person in person_list:
    person_split = person.split(" ")
    for name in person_split:
        if wordnet.synsets(name):
            if(name in person):
                person_names.remove(person)
                break

print(person_names)

我有什么方法可以提取在某些单词之后/之前的名称? 获取始终在“主席”之后的姓名以获取主席,并获取“提供证据”之前的姓名。 这可能是一个长镜头,不可能实现,但任何建议都将不胜感激。 我可以手工处理我拥有的数据量,但是如果我可以用一些代码来做到这一点,那就太好了,如果需要的话,可以将其应用于其他文本。 谢谢。

0 个答案:

没有答案