Я пытаюсь создать интеллектуальный генератор сертификатов, который будет принимать шаблон сертификата и данные (на данный момент в формате JSON) и генерировать сертификат. Нужно заменить слова типа «Ваше имя» или «_______» на имя в JSON.
Я могу идентифицировать имена людей на изображении и успешно могу заменить их в шаблоне. Моя единственная проблема заключается в том, как заставить мою программу идентифицировать фразы, такие как «ВАШЕ ИМЯ», или подобные слова, например, имя человека (например, я хочу заменить их полем имени в JSON), используя nltk.
Я думал о том, чтобы сделать что-то вроде этого: определить, какие теги pos встречаются до и после «Твоего имени», и, возможно, определить, что находится между этими тегами, как сущность, подлежащую замене, или я могу как-то изменитьярлыки (которые, как я полагаю, я не могу, поскольку они представляют собой кортежи / наборы)
PS: это для хакатона, и у меня не было предшествующего опыта в NLP или nltk, поэтому я делал это в течение последних 7часов, и я много гуглил, но не мог найти ничего удовлетворительного или чего-то, что я мог бы понять за короткий промежуток времени без необходимости изучать весь НЛП.
import nltk
from nameparser.parser import HumanName
def get_human_names(text):
tokens = nltk.tokenize.word_tokenize(text)
pos = nltk.pos_tag(tokens)
print(pos)
sentt = nltk.ne_chunk(pos, binary = False)
person_list = []
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 = []
return (person_list)
text = """
This is to certify that John Doe has been awarded with a random certification from a
random institution
"""
names = get_human_names(text)
for name in names:
first_last = HumanName(name).first + ' ' + HumanName(name).last
print(first_last)