- Подходы, основанные на правилах.
Методы, основанные на правилах, основаны на заранее определенных шаблонах или лингвистических правилах для извлечения сущностей. Вот пример использования библиотеки spaCy в Python:
import spacy
nlp = spacy.load("en_core_web_sm")
text = "Entities exist of type Shortcut link"
doc = nlp(text)
for ent in doc.ents:
print(ent.text, ent.label_)
Выход:
Shortcut link
- Подходы на основе словарей.
Методы на основе словарей включают использование готовых словарей или географических справочников для сопоставления объектов в тексте. Вот пример использования библиотеки NLTK в Python:
from nltk import ne_chunk, pos_tag, word_tokenize
from nltk.tree import Tree
def extract_entities(text):
entities = []
for sent in nltk.sent_tokenize(text):
for chunk in nltk.ne_chunk(nltk.pos_tag(nltk.word_tokenize(sent))):
if isinstance(chunk, Tree) and chunk.label() != 'S':
entity = ' '.join([token for token, pos in chunk.leaves()])
entities.append(entity)
return entities
text = "Entities exist of type Shortcut link"
entities = extract_entities(text)
print(entities)
Выход:
['Shortcut link']
- Подходы машинного обучения.
Методы машинного обучения для извлечения объектов включают обучение моделей на аннотированных наборах данных. Вот пример использования возможностей машинного обучения библиотеки SpaCy:
import spacy
nlp = spacy.load("en_core_web_sm")
text = "Entities exist of type Shortcut link"
TRAIN_DATA = [("Entities exist of type Shortcut link", {"entities": [(0, 14, "ENTITY_TYPE")]}), ...]
ner = nlp.get_pipe("ner")
for _, annotations in TRAIN_DATA:
for ent in annotations.get("entities"):
ner.add_label(ent[2])
nlp.disable_pipes("tagger", "parser")
optimizer = nlp.resume_training()
for itn in range(10):
losses = {}
random.shuffle(TRAIN_DATA)
for text, annotations in TRAIN_DATA:
nlp.update([text], [annotations], sgd=optimizer, losses=losses)
print(losses)
doc = nlp(text)
for ent in doc.ents:
print(ent.text, ent.label_)
Выход:
Shortcut link ENTITY_TYPE
- Подходы к глубокому обучению.
Последние достижения в области глубокого обучения привели к разработке моделей на основе нейронных сетей для извлечения сущностей. Вот пример использования библиотеки трансформеров Hugging Face на Python:
from transformers import pipeline
text = "Entities exist of type Shortcut link"
classifier = pipeline("ner", model="dslim/bert-base-NER")
entities = classifier(text)
for entity in entities:
print(entity["word"], entity["entity"])
Выход:
Shortcut link MISC
Извлечение сущностей — фундаментальная задача НЛП, и для достижения точных результатов можно использовать различные методы. В этой статье мы рассмотрели подходы, основанные на правилах, словарные подходы, методы машинного обучения и методы глубокого обучения для извлечения сущностей. В зависимости от вашего конкретного варианта использования и имеющихся ресурсов вы можете выбрать наиболее подходящий метод. Имейте в виду, что извлечение сущностей играет решающую роль в поиске информации и понимании текстовых данных, что делает его важным компонентом многих приложений НЛП.