Диффузия + NLP 🤝

💡 Рад поделиться интересным подходом к задаче Named Entity Recognition (NER) с использованием диффузионной модели. Будет особенно интересно тем, кто привык решать задачи NER через BIOES-схему.

📖 Обычно диффузионные модели применяются для генерации изображений (например, Kandinsky, Stable Diffusion). В таких моделях картинка восстанавливается из случайного шума в "направлении" того текста, который в неё подали

🤔 В нашем случае ситуация аналогична: 1. Сначала через BERT-подобную модель получаются эмбеддинги текста. 2. Затем генерируется матрица шума размером 2xN, где N — общее количество именованных сущностей, которые модель может найти в тексте. 3. Матрица имеет два столбца, поскольку по ней будут предсказаны границы сущностей (левая и правая). 4. Каждая граница предсказывается отдельной полносвязной сетью, которая на вход получает эмбеддинги текста и матрицу 2xN. 5. Предсказание представляет собой распределение вероятностей по токенам, откуда через argmax определяется граница сущности.

В результате получается список индексов токенов-границ. Например, для матрицы 2x7 часть границ будет отброшена по следующим причинам:

  • низкая вероятность
  • правая граница расположена перед левой
  • дублирующиеся границы

Пусть останется три границы:

  • (1,4)
  • (19,19)
  • (7,9)

Конкретный класс сущности предсказывается еще одной полносвязной сетью по той же матрице 2xN:

  • (1,4) → Location
  • (19,19) → Person
  • (7,9) → Organisation

Визуализация этого процесса в закрепленной картинке

👀 Вот такой интересный аналог привычной BIOES-схемы.

За подробностями смотри статью и код: paper — https://aclanthology.org/2023.acl-long.215.pdf github — https://github.com/tricktreat/DiffusionNER

P.S. Эту статью показал мне научный руководитель в процессе работы над моим дипломом, где мы применили эту идею к похожей задаче с немного иной спецификой. В следующем посте расскажу подробнее...

Диффузия + NLP 🤝 | Сетка — социальная сеть от hh.ru