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