Можно ли извлечь конкретную информацию c ({Architect, Building}) из фрагментов неструктурированного текста с помощью NLP? - PullRequest
0 голосов
/ 13 июля 2020

Я работаю над задачей по извлечению архитекторов и их зданий из неструктурированных фрагментов текста различного размера. Я начал пробовать инструмент НЛП под названием 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

1 Ответ

0 голосов
/ 13 июля 2020

Это зависит от того, насколько точно текст, с которым вы работаете, следует структуре данных, с которыми были обучены модели SpaCy по умолчанию. Если они очень разные, вам, возможно, придется обучить свою собственную модель вместо их. У разработчиков SpaCy (Explosion.ai) есть платный инструмент, который может помочь вам в этом (prodi.gy). Тем не менее, вероятно, можно делать то, что вы хотите, но собрать обучающий набор без поддержки инструментов - задача не из легких.

...