Я работаю над задачей по извлечению архитекторов и их зданий из неструктурированных фрагментов текста различного размера. Я начал пробовать инструмент НЛП под названием SpaCy, но аннотации, которые они предоставляют, иногда смешиваются.
FA C Здания, аэропорты, шоссе, мосты и т. Д. c.
ORG Компании, агентства, учреждения и т. Д. c.
GPE Страны, города, штаты.
LO C Локации, не относящиеся к GPE, горные хребты, водоемы.
Названия зданий попадают в эти 4 аннотации. Моя работа была бы намного проще, если бы я мог получить только FA C для названий зданий, но похоже, что это невозможно, или я не смогу заставить его работать.
Вопрос в том, можно ли использовать инструменты НЛП для извлечения таких информационных кортежей (в моем случае {Architect, Building}) из фрагмента текста?
Изменить: кое-что я сделал
Следующие отрывки представляют собой некоторые примеры текстов, которые я использую в настоящее время
Он отремонтировал мечеть Фатих и построил мечеть Лалели во имя султана Мустафы III
Построен Мехмед Тахир Ага Комплекс Хамидие в Бахчекапы для султана Абдулхамида I.
Я передаю эти тексты в виде данных в spaCy, бит кода здесь:
for i in range(len(data)):
text = data[i]
text = re.sub(r'\([^()]*\)', '', text)
doc = nlp(text)
#Extract ORG, GPE, LOC and FAC labels from phrases
for entity in doc.ents:
if entity.label_ in ('ORG', 'GPE', 'LOC', 'FAC'):
#Manual filtering of results
if entity.text not in ("Istanbul", "Egypt", "Hicaz", "Palestine", "Syria", "Balkans", "Albania", "Malta", "Spain", "Bosnia", "Frengistan", "Kırım", "Belgrade", "Damascus"):
print(entity.text, entity.label_)
Результат:
Мечеть Лалели ORG
Комплекс Хамидие ORG
Bahçekapı для султана Абдулхамида I. ORG