Sobes.tech
Назад к вопросам
Senior
8

Что такое entity linking и какие модели его решают?

Компании, где спрашивали
OZONOZON
Билайн

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Entity linking — это задача сопоставления упоминания сущности в тексте с конкретной сущностью в базе знаний или knowledge graph. Важно показать, что это не просто NER, а именно разрешение неоднозначности и привязка к канонической записи. Обычно решается в два этапа: поиск кандидатов и ранжирование/выбор лучшего.

Определение:

Entity linking — это процесс, при котором текстовое упоминание, например «Apple», связывается с конкретной сущностью, такой как компания Apple Inc. или фрукт, в зависимости от контекста. Задача включает распознавание упоминания, генерацию возможных кандидатов и выбор правильного кандидата на основе контекста, связей между сущностями и внешних знаний.

Типичные модели и подходы:

  • правило- и словарно-ориентированные системы;
  • классические ML-модели для ранжирования кандидатов;
  • би-энкодеры, которые независимо кодируют контекст и сущность;
  • кросс-энкодеры, которые совместно оценивают пару «контекст — кандидат»;
  • графовые модели и GNN для использования связей в knowledge graph;
  • нейросетевые end-to-end системы, которые одновременно находят и связывают сущности;
  • LLM-based подходы, где модель выбирает entity по контексту, часто с retrieval.

Пример использования:

В новостной статье встречается фраза: «Tesla announced new battery technology». Система должна понять, что «Tesla» — это компания Tesla, а не Николa Тесла. Сначала она находит кандидатов из knowledge base, затем по контексту статьи выбирает наиболее вероятную сущность.

mention = "Tesla"
context = "Tesla announced new battery technology"

candidates = ["Tesla, Inc.", "Nikola Tesla"]
scores = {
    "Tesla, Inc.": 0.94,
    "Nikola Tesla": 0.06
}

linked_entity = max(scores, key=scores.get)
print(linked_entity)  # Tesla, Inc.

Пояснение кода:

Код показывает упрощённую схему entity linking без реальной модели. Сначала есть упоминание и его контекст, затем список кандидатов, найденных по словарю или retrieval-слою. После этого каждый кандидат получает скор, и выбирается сущность с максимальной оценкой. В реальной системе скор обычно считает нейросеть или ранжирующая модель на основе контекста, эмбеддингов и признаков из knowledge graph.

Ключевые моменты:

  • Entity linking связывает текстовое упоминание с конкретной сущностью, а не просто выделяет спан в тексте.
  • Главная сложность — неоднозначность: одно и то же имя может соответствовать разным сущностям.
  • Практически всегда используется двухэтапная схема: candidate generation и candidate ranking/disambiguation.
  • Качественные системы используют контекст, статистику совместной встречаемости и графовые связи.
  • Би-энкодеры быстрее, кросс-энкодеры обычно точнее, но дороже по вычислениям.
  • Для сложных доменов часто помогают knowledge graph и LLM с retrieval, но без хорошего candidate generation качество резко падает.